aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/DocBook
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation/DocBook')
-rw-r--r--Documentation/DocBook/.gitignore5
-rw-r--r--Documentation/DocBook/80211.tmpl5
-rw-r--r--Documentation/DocBook/Makefile31
-rw-r--r--Documentation/DocBook/dvb/ca.xml221
-rw-r--r--Documentation/DocBook/dvb/dvbproperty.xml590
-rw-r--r--Documentation/DocBook/dvb/dvbstb.pngbin22655 -> 0 bytes
-rw-r--r--Documentation/DocBook/dvb/frontend.h.xml428
-rw-r--r--Documentation/DocBook/dvb/net.xml12
-rw-r--r--Documentation/DocBook/kernel-hacking.tmpl2
-rw-r--r--Documentation/DocBook/media-entities.tmpl464
-rw-r--r--Documentation/DocBook/media-indices.tmpl89
-rw-r--r--Documentation/DocBook/media/Makefile386
-rw-r--r--Documentation/DocBook/media/bayer.png.b64171
-rw-r--r--Documentation/DocBook/media/crop.gif.b64105
-rw-r--r--Documentation/DocBook/media/dvb/.gitignore (renamed from Documentation/DocBook/dvb/.gitignore)0
-rw-r--r--Documentation/DocBook/media/dvb/audio.xml (renamed from Documentation/DocBook/dvb/audio.xml)543
-rw-r--r--Documentation/DocBook/media/dvb/ca.xml582
-rw-r--r--Documentation/DocBook/media/dvb/demux.xml (renamed from Documentation/DocBook/dvb/demux.xml)539
-rw-r--r--Documentation/DocBook/media/dvb/dvbapi.xml (renamed from Documentation/DocBook/dvb/dvbapi.xml)24
-rw-r--r--Documentation/DocBook/media/dvb/dvbproperty.xml1105
-rw-r--r--Documentation/DocBook/media/dvb/dvbstb.pdf (renamed from Documentation/DocBook/dvb/dvbstb.pdf)bin1881 -> 1881 bytes
-rw-r--r--Documentation/DocBook/media/dvb/examples.xml (renamed from Documentation/DocBook/dvb/examples.xml)0
-rw-r--r--Documentation/DocBook/media/dvb/frontend.xml (renamed from Documentation/DocBook/dvb/frontend.xml)837
-rw-r--r--Documentation/DocBook/media/dvb/intro.xml (renamed from Documentation/DocBook/dvb/intro.xml)25
-rw-r--r--Documentation/DocBook/media/dvb/kdapi.xml (renamed from Documentation/DocBook/dvb/kdapi.xml)2
-rw-r--r--Documentation/DocBook/media/dvb/net.xml156
-rw-r--r--Documentation/DocBook/media/dvb/video.xml (renamed from Documentation/DocBook/dvb/video.xml)867
-rw-r--r--Documentation/DocBook/media/dvbstb.png.b64398
-rw-r--r--Documentation/DocBook/media/fieldseq_bt.gif.b64447
-rw-r--r--Documentation/DocBook/media/fieldseq_tb.gif.b64445
-rw-r--r--Documentation/DocBook/media/nv12mt.gif.b6437
-rw-r--r--Documentation/DocBook/media/nv12mt_example.gif.b64121
-rw-r--r--Documentation/DocBook/media/pipeline.png.b64213
-rw-r--r--Documentation/DocBook/media/v4l/.gitignore (renamed from Documentation/DocBook/v4l/.gitignore)0
-rw-r--r--Documentation/DocBook/media/v4l/biblio.xml (renamed from Documentation/DocBook/v4l/biblio.xml)109
-rw-r--r--Documentation/DocBook/media/v4l/capture.c.xml (renamed from Documentation/DocBook/v4l/capture.c.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/common.xml (renamed from Documentation/DocBook/v4l/common.xml)105
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml (renamed from Documentation/DocBook/v4l/compat.xml)198
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml4713
-rw-r--r--Documentation/DocBook/media/v4l/crop.pdf (renamed from Documentation/DocBook/v4l/crop.pdf)bin5846 -> 5846 bytes
-rw-r--r--Documentation/DocBook/media/v4l/dev-capture.xml (renamed from Documentation/DocBook/v4l/dev-capture.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-codec.xml (renamed from Documentation/DocBook/v4l/dev-codec.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-effect.xml (renamed from Documentation/DocBook/v4l/dev-effect.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-event.xml43
-rw-r--r--Documentation/DocBook/media/v4l/dev-osd.xml (renamed from Documentation/DocBook/v4l/dev-osd.xml)15
-rw-r--r--Documentation/DocBook/media/v4l/dev-output.xml (renamed from Documentation/DocBook/v4l/dev-output.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-overlay.xml (renamed from Documentation/DocBook/v4l/dev-overlay.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-radio.xml (renamed from Documentation/DocBook/v4l/dev-radio.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-raw-vbi.xml (renamed from Documentation/DocBook/v4l/dev-raw-vbi.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/dev-rds.xml (renamed from Documentation/DocBook/v4l/dev-rds.xml)18
-rw-r--r--Documentation/DocBook/media/v4l/dev-sliced-vbi.xml (renamed from Documentation/DocBook/v4l/dev-sliced-vbi.xml)9
-rw-r--r--Documentation/DocBook/media/v4l/dev-subdev.xml (renamed from Documentation/DocBook/v4l/dev-subdev.xml)206
-rw-r--r--Documentation/DocBook/media/v4l/dev-teletext.xml (renamed from Documentation/DocBook/v4l/dev-teletext.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/driver.xml (renamed from Documentation/DocBook/v4l/driver.xml)14
-rw-r--r--Documentation/DocBook/media/v4l/fdl-appendix.xml (renamed from Documentation/DocBook/v4l/fdl-appendix.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/fieldseq_bt.pdf (renamed from Documentation/DocBook/v4l/fieldseq_bt.pdf)bin9185 -> 9185 bytes
-rw-r--r--Documentation/DocBook/media/v4l/fieldseq_tb.pdf (renamed from Documentation/DocBook/v4l/fieldseq_tb.pdf)bin9173 -> 9173 bytes
-rw-r--r--Documentation/DocBook/media/v4l/func-close.xml (renamed from Documentation/DocBook/v4l/func-close.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-ioctl.xml71
-rw-r--r--Documentation/DocBook/media/v4l/func-mmap.xml (renamed from Documentation/DocBook/v4l/func-mmap.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-munmap.xml (renamed from Documentation/DocBook/v4l/func-munmap.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-open.xml (renamed from Documentation/DocBook/v4l/func-open.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-poll.xml (renamed from Documentation/DocBook/v4l/func-poll.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-read.xml (renamed from Documentation/DocBook/v4l/func-read.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-select.xml (renamed from Documentation/DocBook/v4l/func-select.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/func-write.xml (renamed from Documentation/DocBook/v4l/func-write.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/gen-errors.xml77
-rw-r--r--Documentation/DocBook/media/v4l/io.xml (renamed from Documentation/DocBook/v4l/io.xml)269
-rw-r--r--Documentation/DocBook/media/v4l/keytable.c.xml (renamed from Documentation/DocBook/v4l/keytable.c.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/libv4l.xml (renamed from Documentation/DocBook/v4l/libv4l.xml)7
-rw-r--r--Documentation/DocBook/media/v4l/lirc_device_interface.xml (renamed from Documentation/DocBook/v4l/lirc_device_interface.xml)4
-rw-r--r--Documentation/DocBook/media/v4l/media-controller.xml (renamed from Documentation/DocBook/v4l/media-controller.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/media-func-close.xml (renamed from Documentation/DocBook/v4l/media-func-close.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/media-func-ioctl.xml (renamed from Documentation/DocBook/v4l/media-func-ioctl.xml)47
-rw-r--r--Documentation/DocBook/media/v4l/media-func-open.xml (renamed from Documentation/DocBook/v4l/media-func-open.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-device-info.xml (renamed from Documentation/DocBook/v4l/media-ioc-device-info.xml)3
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml (renamed from Documentation/DocBook/v4l/media-ioc-enum-entities.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-enum-links.xml (renamed from Documentation/DocBook/v4l/media-ioc-enum-links.xml)2
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-setup-link.xml (renamed from Documentation/DocBook/v4l/media-ioc-setup-link.xml)9
-rw-r--r--Documentation/DocBook/media/v4l/pipeline.pdf (renamed from Documentation/DocBook/v4l/pipeline.pdf)bin20276 -> 20276 bytes
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-grey.xml (renamed from Documentation/DocBook/v4l/pixfmt-grey.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-m420.xml (renamed from Documentation/DocBook/v4l/pixfmt-m420.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv12.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv12.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv12m.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv12m.xml)25
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv12mt.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv16.xml (renamed from Documentation/DocBook/v4l/pixfmt-nv16.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv24.xml121
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml (renamed from Documentation/DocBook/v4l/pixfmt-packed-rgb.xml)15
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml (renamed from Documentation/DocBook/v4l/pixfmt-packed-yuv.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml (renamed from Documentation/DocBook/v4l/pixfmt-sbggr16.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml (renamed from Documentation/DocBook/v4l/pixfmt-sbggr8.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml (renamed from Documentation/DocBook/v4l/pixfmt-sgbrg8.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml (renamed from Documentation/DocBook/v4l/pixfmt-sgrbg8.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10.xml (renamed from Documentation/DocBook/v4l/pixfmt-srggb10.xml)2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml28
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb12.xml (renamed from Documentation/DocBook/v4l/pixfmt-srggb12.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb8.xml (renamed from Documentation/DocBook/v4l/pixfmt-srggb8.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-uyvy.xml (renamed from Documentation/DocBook/v4l/pixfmt-uyvy.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-vyuy.xml (renamed from Documentation/DocBook/v4l/pixfmt-vyuy.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y10.xml (renamed from Documentation/DocBook/v4l/pixfmt-y10.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y10b.xml (renamed from Documentation/DocBook/v4l/pixfmt-y10b.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y12.xml (renamed from Documentation/DocBook/v4l/pixfmt-y12.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y16.xml (renamed from Documentation/DocBook/v4l/pixfmt-y16.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y41p.xml (renamed from Documentation/DocBook/v4l/pixfmt-y41p.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv410.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv410.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv411p.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv420.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv420.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv420m.xml)10
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuv422p.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuyv.xml (renamed from Documentation/DocBook/v4l/pixfmt-yuyv.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml154
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yvyu.xml (renamed from Documentation/DocBook/v4l/pixfmt-yvyu.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml (renamed from Documentation/DocBook/v4l/pixfmt.xml)123
-rw-r--r--Documentation/DocBook/media/v4l/planar-apis.xml (renamed from Documentation/DocBook/v4l/planar-apis.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/remote_controllers.xml (renamed from Documentation/DocBook/v4l/remote_controllers.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/selection-api.xml325
-rw-r--r--Documentation/DocBook/media/v4l/selections-common.xml164
-rw-r--r--Documentation/DocBook/media/v4l/subdev-formats.xml (renamed from Documentation/DocBook/v4l/subdev-formats.xml)49
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml (renamed from Documentation/DocBook/v4l/v4l2.xml)95
-rw-r--r--Documentation/DocBook/media/v4l/v4l2grab.c.xml (renamed from Documentation/DocBook/v4l/v4l2grab.c.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/vbi_525.pdf (renamed from Documentation/DocBook/v4l/vbi_525.pdf)bin3395 -> 3395 bytes
-rw-r--r--Documentation/DocBook/media/v4l/vbi_625.pdf (renamed from Documentation/DocBook/v4l/vbi_625.pdf)bin3683 -> 3683 bytes
-rw-r--r--Documentation/DocBook/media/v4l/vbi_hsync.pdf (renamed from Documentation/DocBook/v4l/vbi_hsync.pdf)bin7405 -> 7405 bytes
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-create-bufs.xml154
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-cropcap.xml (renamed from Documentation/DocBook/v4l/vidioc-cropcap.xml)23
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml (renamed from Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml)11
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml (renamed from Documentation/DocBook/v4l/vidioc-dbg-g-register.xml)17
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml249
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dqevent.xml271
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml205
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml (renamed from Documentation/DocBook/v4l/vidioc-encoder-cmd.xml)27
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml)18
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml125
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-fmt.xml)19
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml)11
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml (renamed from Documentation/DocBook/v4l/vidioc-enum-framesizes.xml)18
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml179
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumaudio.xml (renamed from Documentation/DocBook/v4l/vidioc-enumaudio.xml)12
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml (renamed from Documentation/DocBook/v4l/vidioc-enumaudioout.xml)12
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enuminput.xml (renamed from Documentation/DocBook/v4l/vidioc-enuminput.xml)12
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumoutput.xml (renamed from Documentation/DocBook/v4l/vidioc-enumoutput.xml)12
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumstd.xml (renamed from Documentation/DocBook/v4l/vidioc-enumstd.xml)14
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-expbuf.xml212
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-audio.xml (renamed from Documentation/DocBook/v4l/vidioc-g-audio.xml)18
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-audioout.xml (renamed from Documentation/DocBook/v4l/vidioc-g-audioout.xml)18
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-crop.xml (renamed from Documentation/DocBook/v4l/vidioc-g-crop.xml)25
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml (renamed from Documentation/DocBook/v4l/vidioc-g-ctrl.xml)15
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml (renamed from Documentation/DocBook/v4l/vidioc-g-dv-preset.xml)21
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml (renamed from Documentation/DocBook/v4l/vidioc-g-dv-timings.xml)146
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml (renamed from Documentation/DocBook/v4l/vidioc-g-enc-index.xml)24
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml (renamed from Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml)58
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml (renamed from Documentation/DocBook/v4l/vidioc-g-fbuf.xml)54
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fmt.xml (renamed from Documentation/DocBook/v4l/vidioc-g-fmt.xml)31
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-frequency.xml (renamed from Documentation/DocBook/v4l/vidioc-g-frequency.xml)24
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-input.xml (renamed from Documentation/DocBook/v4l/vidioc-g-input.xml)23
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml (renamed from Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml)33
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-modulator.xml (renamed from Documentation/DocBook/v4l/vidioc-g-modulator.xml)8
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-output.xml (renamed from Documentation/DocBook/v4l/vidioc-g-output.xml)23
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-parm.xml (renamed from Documentation/DocBook/v4l/vidioc-g-parm.xml)26
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-priority.xml (renamed from Documentation/DocBook/v4l/vidioc-g-priority.xml)11
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-selection.xml241
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml (renamed from Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml)13
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-std.xml (renamed from Documentation/DocBook/v4l/vidioc-g-std.xml)19
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-tuner.xml (renamed from Documentation/DocBook/v4l/vidioc-g-tuner.xml)64
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-log-status.xml (renamed from Documentation/DocBook/v4l/vidioc-log-status.xml)17
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-overlay.xml (renamed from Documentation/DocBook/v4l/vidioc-overlay.xml)11
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml94
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-qbuf.xml (renamed from Documentation/DocBook/v4l/vidioc-qbuf.xml)44
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml (renamed from Documentation/DocBook/v4l/vidioc-query-dv-preset.xml)23
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml110
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querybuf.xml (renamed from Documentation/DocBook/v4l/vidioc-querybuf.xml)19
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querycap.xml (renamed from Documentation/DocBook/v4l/vidioc-querycap.xml)93
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-queryctrl.xml (renamed from Documentation/DocBook/v4l/vidioc-queryctrl.xml)70
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querystd.xml (renamed from Documentation/DocBook/v4l/vidioc-querystd.xml)19
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-reqbufs.xml (renamed from Documentation/DocBook/v4l/vidioc-reqbufs.xml)75
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml184
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-streamon.xml (renamed from Documentation/DocBook/v4l/vidioc-streamon.xml)21
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml)9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-edid.xml152
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml)3
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml (renamed from Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml)0
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml165
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml206
-rw-r--r--Documentation/DocBook/media/vbi_525.gif.b6484
-rw-r--r--Documentation/DocBook/media/vbi_625.gif.b6490
-rw-r--r--Documentation/DocBook/media/vbi_hsync.gif.b6443
-rw-r--r--Documentation/DocBook/media_api.tmpl (renamed from Documentation/DocBook/media.tmpl)8
-rw-r--r--Documentation/DocBook/v4l/bayer.pdfbin12116 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/bayer.pngbin9725 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/controls.xml2103
-rw-r--r--Documentation/DocBook/v4l/crop.gifbin5967 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/dev-event.xml31
-rw-r--r--Documentation/DocBook/v4l/fieldseq_bt.gifbin25430 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/fieldseq_tb.gifbin25323 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/func-ioctl.xml145
-rw-r--r--Documentation/DocBook/v4l/nv12mt.gifbin2108 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/nv12mt_example.gifbin6858 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/pipeline.pngbin12130 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/vbi_525.gifbin4741 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/vbi_625.gifbin5095 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/vbi_hsync.gifbin2400 -> 0 bytes
-rw-r--r--Documentation/DocBook/v4l/videodev2.h.xml1946
-rw-r--r--Documentation/DocBook/v4l/vidioc-dqevent.xml131
-rw-r--r--Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml135
-rw-r--r--Documentation/DocBook/v4l/vidioc-subscribe-event.xml133
-rw-r--r--Documentation/DocBook/writing-an-alsa-driver.tmpl10
209 files changed, 15513 insertions, 9325 deletions
diff --git a/Documentation/DocBook/.gitignore b/Documentation/DocBook/.gitignore
index 679034cbd68..720f245ceb1 100644
--- a/Documentation/DocBook/.gitignore
+++ b/Documentation/DocBook/.gitignore
@@ -8,4 +8,7 @@
8*.dvi 8*.dvi
9*.log 9*.log
10*.out 10*.out
11media/ 11*.png
12*.gif
13media-indices.tmpl
14media-entities.tmpl
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl
index 8906648f962..445289cd0e6 100644
--- a/Documentation/DocBook/80211.tmpl
+++ b/Documentation/DocBook/80211.tmpl
@@ -402,8 +402,9 @@
402!Finclude/net/mac80211.h set_key_cmd 402!Finclude/net/mac80211.h set_key_cmd
403!Finclude/net/mac80211.h ieee80211_key_conf 403!Finclude/net/mac80211.h ieee80211_key_conf
404!Finclude/net/mac80211.h ieee80211_key_flags 404!Finclude/net/mac80211.h ieee80211_key_flags
405!Finclude/net/mac80211.h ieee80211_tkip_key_type 405!Finclude/net/mac80211.h ieee80211_get_tkip_p1k
406!Finclude/net/mac80211.h ieee80211_get_tkip_key 406!Finclude/net/mac80211.h ieee80211_get_tkip_p1k_iv
407!Finclude/net/mac80211.h ieee80211_get_tkip_p2k
407!Finclude/net/mac80211.h ieee80211_key_removed 408!Finclude/net/mac80211.h ieee80211_key_removed
408 </chapter> 409 </chapter>
409 410
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 3cebfa0d161..66725a3d30d 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -14,7 +14,9 @@ DOCBOOKS := z8530book.xml mcabook.xml device-drivers.xml \
14 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ 14 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
15 80211.xml debugobjects.xml sh.xml regulator.xml \ 15 80211.xml debugobjects.xml sh.xml regulator.xml \
16 alsa-driver-api.xml writing-an-alsa-driver.xml \ 16 alsa-driver-api.xml writing-an-alsa-driver.xml \
17 tracepoint.xml media.xml drm.xml 17 tracepoint.xml drm.xml media_api.xml
18
19include $(srctree)/Documentation/DocBook/media/Makefile
18 20
19### 21###
20# The build process is as follows (targets): 22# The build process is as follows (targets):
@@ -32,7 +34,7 @@ PS_METHOD = $(prefer-db2x)
32 34
33### 35###
34# The targets that may be used. 36# The targets that may be used.
35PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs xmldoclinks 37PHONY += xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs cleandocs
36 38
37BOOKS := $(addprefix $(obj)/,$(DOCBOOKS)) 39BOOKS := $(addprefix $(obj)/,$(DOCBOOKS))
38xmldocs: $(BOOKS) 40xmldocs: $(BOOKS)
@@ -45,27 +47,14 @@ PDF := $(patsubst %.xml, %.pdf, $(BOOKS))
45pdfdocs: $(PDF) 47pdfdocs: $(PDF)
46 48
47HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS))) 49HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
48htmldocs: $(HTML) xmldoclinks 50htmldocs: $(HTML)
49 $(call build_main_index) 51 $(call build_main_index)
50 $(call build_images) 52 $(call build_images)
53 $(call install_media_images)
51 54
52MAN := $(patsubst %.xml, %.9, $(BOOKS)) 55MAN := $(patsubst %.xml, %.9, $(BOOKS))
53mandocs: $(MAN) 56mandocs: $(MAN)
54 57
55build_images = mkdir -p $(objtree)/Documentation/DocBook/media/ && \
56 cp $(srctree)/Documentation/DocBook/dvb/*.png \
57 $(srctree)/Documentation/DocBook/v4l/*.gif \
58 $(objtree)/Documentation/DocBook/media/
59
60xmldoclinks:
61ifneq ($(objtree),$(srctree))
62 for dep in dvb media-entities.tmpl media-indices.tmpl v4l; do \
63 rm -f $(objtree)/Documentation/DocBook/$$dep \
64 && ln -s $(srctree)/Documentation/DocBook/$$dep $(objtree)/Documentation/DocBook/ \
65 || exit; \
66 done
67endif
68
69installmandocs: mandocs 58installmandocs: mandocs
70 mkdir -p /usr/local/man/man9/ 59 mkdir -p /usr/local/man/man9/
71 install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/ 60 install Documentation/DocBook/man/*.9.gz /usr/local/man/man9/
@@ -97,11 +86,11 @@ define rule_docproc
97 ) > $(dir $@).$(notdir $@).cmd 86 ) > $(dir $@).$(notdir $@).cmd
98endef 87endef
99 88
100%.xml: %.tmpl xmldoclinks FORCE 89%.xml: %.tmpl FORCE
101 $(call if_changed_rule,docproc) 90 $(call if_changed_rule,docproc)
102 91
103### 92###
104#Read in all saved dependency files 93#Read in all saved dependency files
105cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd)) 94cmd_files := $(wildcard $(foreach f,$(BOOKS),$(dir $(f)).$(notdir $(f)).cmd))
106 95
107ifneq ($(cmd_files),) 96ifneq ($(cmd_files),)
@@ -150,7 +139,7 @@ quiet_cmd_db2pdf = PDF $@
150 139
151index = index.html 140index = index.html
152main_idx = Documentation/DocBook/$(index) 141main_idx = Documentation/DocBook/$(index)
153build_main_index = rm -rf $(main_idx) && \ 142build_main_index = rm -rf $(main_idx); \
154 echo '<h1>Linux Kernel HTML Documentation</h1>' >> $(main_idx) && \ 143 echo '<h1>Linux Kernel HTML Documentation</h1>' >> $(main_idx) && \
155 echo '<h2>Kernel Version: $(KERNELVERSION)</h2>' >> $(main_idx) && \ 144 echo '<h2>Kernel Version: $(KERNELVERSION)</h2>' >> $(main_idx) && \
156 cat $(HTML) >> $(main_idx) 145 cat $(HTML) >> $(main_idx)
@@ -242,7 +231,7 @@ clean-files := $(DOCBOOKS) \
242 231
243clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man 232clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
244 233
245cleandocs: 234cleandocs: cleanmediadocs
246 $(Q)rm -f $(call objectify, $(clean-files)) 235 $(Q)rm -f $(call objectify, $(clean-files))
247 $(Q)rm -rf $(call objectify, $(clean-dirs)) 236 $(Q)rm -rf $(call objectify, $(clean-dirs))
248 237
diff --git a/Documentation/DocBook/dvb/ca.xml b/Documentation/DocBook/dvb/ca.xml
deleted file mode 100644
index b1f1d2fad65..00000000000
--- a/Documentation/DocBook/dvb/ca.xml
+++ /dev/null
@@ -1,221 +0,0 @@
1<title>DVB CA Device</title>
2<para>The DVB CA device controls the conditional access hardware. It can be accessed through
3<emphasis role="tt">/dev/dvb/adapter0/ca0</emphasis>. Data types and and ioctl definitions can be accessed by
4including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application.
5</para>
6
7<section id="ca_data_types">
8<title>CA Data Types</title>
9
10
11<section id="ca_slot_info_t">
12<title>ca_slot_info_t</title>
13 <programlisting>
14 /&#x22C6; slot interface types and info &#x22C6;/
15
16 typedef struct ca_slot_info_s {
17 int num; /&#x22C6; slot number &#x22C6;/
18
19 int type; /&#x22C6; CA interface this slot supports &#x22C6;/
20 #define CA_CI 1 /&#x22C6; CI high level interface &#x22C6;/
21 #define CA_CI_LINK 2 /&#x22C6; CI link layer level interface &#x22C6;/
22 #define CA_CI_PHYS 4 /&#x22C6; CI physical layer level interface &#x22C6;/
23 #define CA_SC 128 /&#x22C6; simple smart card interface &#x22C6;/
24
25 unsigned int flags;
26 #define CA_CI_MODULE_PRESENT 1 /&#x22C6; module (or card) inserted &#x22C6;/
27 #define CA_CI_MODULE_READY 2
28 } ca_slot_info_t;
29</programlisting>
30
31</section>
32<section id="ca_descr_info_t">
33<title>ca_descr_info_t</title>
34 <programlisting>
35 typedef struct ca_descr_info_s {
36 unsigned int num; /&#x22C6; number of available descramblers (keys) &#x22C6;/
37 unsigned int type; /&#x22C6; type of supported scrambling system &#x22C6;/
38 #define CA_ECD 1
39 #define CA_NDS 2
40 #define CA_DSS 4
41 } ca_descr_info_t;
42</programlisting>
43
44</section>
45<section id="ca_cap_t">
46<title>ca_cap_t</title>
47 <programlisting>
48 typedef struct ca_cap_s {
49 unsigned int slot_num; /&#x22C6; total number of CA card and module slots &#x22C6;/
50 unsigned int slot_type; /&#x22C6; OR of all supported types &#x22C6;/
51 unsigned int descr_num; /&#x22C6; total number of descrambler slots (keys) &#x22C6;/
52 unsigned int descr_type;/&#x22C6; OR of all supported types &#x22C6;/
53 } ca_cap_t;
54</programlisting>
55
56</section>
57<section id="ca_msg_t">
58<title>ca_msg_t</title>
59 <programlisting>
60 /&#x22C6; a message to/from a CI-CAM &#x22C6;/
61 typedef struct ca_msg_s {
62 unsigned int index;
63 unsigned int type;
64 unsigned int length;
65 unsigned char msg[256];
66 } ca_msg_t;
67</programlisting>
68
69</section>
70<section id="ca_descr_t">
71<title>ca_descr_t</title>
72 <programlisting>
73 typedef struct ca_descr_s {
74 unsigned int index;
75 unsigned int parity;
76 unsigned char cw[8];
77 } ca_descr_t;
78</programlisting>
79 </section></section>
80<section id="ca_function_calls">
81<title>CA Function Calls</title>
82
83
84<section id="ca_fopen">
85<title>open()</title>
86<para>DESCRIPTION
87</para>
88<informaltable><tgroup cols="1"><tbody><row><entry
89 align="char">
90<para>This system call opens a named ca device (e.g. /dev/ost/ca) for subsequent use.</para>
91<para>When an open() call has succeeded, the device will be ready for use.
92 The significance of blocking or non-blocking mode is described in the
93 documentation for functions where there is a difference. It does not affect the
94 semantics of the open() call itself. A device opened in blocking mode can later
95 be put into non-blocking mode (and vice versa) using the F_SETFL command
96 of the fcntl system call. This is a standard system call, documented in the Linux
97 manual page for fcntl. Only one user can open the CA Device in O_RDWR
98 mode. All other attempts to open the device in this mode will fail, and an error
99 code will be returned.</para>
100</entry>
101 </row></tbody></tgroup></informaltable>
102<para>SYNOPSIS
103</para>
104<informaltable><tgroup cols="1"><tbody><row><entry
105 align="char">
106<para>int open(const char &#x22C6;deviceName, int flags);</para>
107</entry>
108 </row></tbody></tgroup></informaltable>
109<para>PARAMETERS
110</para>
111<informaltable><tgroup cols="2"><tbody><row><entry
112 align="char">
113<para>const char
114 *deviceName</para>
115</entry><entry
116 align="char">
117<para>Name of specific video device.</para>
118</entry>
119 </row><row><entry
120 align="char">
121<para>int flags</para>
122</entry><entry
123 align="char">
124<para>A bit-wise OR of the following flags:</para>
125</entry>
126 </row><row><entry
127 align="char">
128</entry><entry
129 align="char">
130<para>O_RDONLY read-only access</para>
131</entry>
132 </row><row><entry
133 align="char">
134</entry><entry
135 align="char">
136<para>O_RDWR read/write access</para>
137</entry>
138 </row><row><entry
139 align="char">
140</entry><entry
141 align="char">
142<para>O_NONBLOCK open in non-blocking mode</para>
143</entry>
144 </row><row><entry
145 align="char">
146</entry><entry
147 align="char">
148<para>(blocking mode is the default)</para>
149</entry>
150 </row></tbody></tgroup></informaltable>
151<para>ERRORS
152</para>
153<informaltable><tgroup cols="2"><tbody><row><entry
154 align="char">
155<para>ENODEV</para>
156</entry><entry
157 align="char">
158<para>Device driver not loaded/available.</para>
159</entry>
160 </row><row><entry
161 align="char">
162<para>EINTERNAL</para>
163</entry><entry
164 align="char">
165<para>Internal error.</para>
166</entry>
167 </row><row><entry
168 align="char">
169<para>EBUSY</para>
170</entry><entry
171 align="char">
172<para>Device or resource busy.</para>
173</entry>
174 </row><row><entry
175 align="char">
176<para>EINVAL</para>
177</entry><entry
178 align="char">
179<para>Invalid argument.</para>
180</entry>
181 </row></tbody></tgroup></informaltable>
182
183</section>
184<section id="ca_fclose">
185<title>close()</title>
186<para>DESCRIPTION
187</para>
188<informaltable><tgroup cols="1"><tbody><row><entry
189 align="char">
190<para>This system call closes a previously opened audio device.</para>
191</entry>
192 </row></tbody></tgroup></informaltable>
193<para>SYNOPSIS
194</para>
195<informaltable><tgroup cols="1"><tbody><row><entry
196 align="char">
197<para>int close(int fd);</para>
198</entry>
199 </row></tbody></tgroup></informaltable>
200<para>PARAMETERS
201</para>
202<informaltable><tgroup cols="2"><tbody><row><entry
203 align="char">
204<para>int fd</para>
205</entry><entry
206 align="char">
207<para>File descriptor returned by a previous call to open().</para>
208</entry>
209 </row></tbody></tgroup></informaltable>
210<para>ERRORS
211</para>
212<informaltable><tgroup cols="2"><tbody><row><entry
213 align="char">
214<para>EBADF</para>
215</entry><entry
216 align="char">
217<para>fd is not a valid open file descriptor.</para>
218</entry>
219 </row></tbody></tgroup></informaltable>
220 </section>
221</section>
diff --git a/Documentation/DocBook/dvb/dvbproperty.xml b/Documentation/DocBook/dvb/dvbproperty.xml
deleted file mode 100644
index b5365f61d69..00000000000
--- a/Documentation/DocBook/dvb/dvbproperty.xml
+++ /dev/null
@@ -1,590 +0,0 @@
1<section id="FE_GET_SET_PROPERTY">
2<title>FE_GET_PROPERTY/FE_SET_PROPERTY</title>
3
4<programlisting>
5/* Reserved fields should be set to 0 */
6struct dtv_property {
7 __u32 cmd;
8 union {
9 __u32 data;
10 struct {
11 __u8 data[32];
12 __u32 len;
13 __u32 reserved1[3];
14 void *reserved2;
15 } buffer;
16 } u;
17 int result;
18} __attribute__ ((packed));
19
20/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
21#define DTV_IOCTL_MAX_MSGS 64
22
23struct dtv_properties {
24 __u32 num;
25 struct dtv_property *props;
26};
27</programlisting>
28
29<section id="FE_GET_PROPERTY">
30<title>FE_GET_PROPERTY</title>
31<para>DESCRIPTION
32</para>
33<informaltable><tgroup cols="1"><tbody><row><entry
34 align="char">
35<para>This ioctl call returns one or more frontend properties. This call only
36 requires read-only access to the device.</para>
37</entry>
38 </row></tbody></tgroup></informaltable>
39<para>SYNOPSIS
40</para>
41<informaltable><tgroup cols="1"><tbody><row><entry
42 align="char">
43<para>int ioctl(int fd, int request = <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>,
44 dtv_properties &#x22C6;props);</para>
45</entry>
46 </row></tbody></tgroup></informaltable>
47<para>PARAMETERS
48</para>
49<informaltable><tgroup cols="2"><tbody><row><entry align="char">
50<para>int fd</para>
51</entry><entry
52 align="char">
53<para>File descriptor returned by a previous call to open().</para>
54</entry>
55 </row><row><entry
56 align="char">
57<para>int num</para>
58</entry><entry
59 align="char">
60<para>Equals <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> for this command.</para>
61</entry>
62 </row><row><entry
63 align="char">
64<para>struct dtv_property *props</para>
65</entry><entry
66 align="char">
67<para>Points to the location where the front-end property commands are stored.</para>
68</entry>
69 </row></tbody></tgroup></informaltable>
70<para>ERRORS</para>
71<informaltable><tgroup cols="2"><tbody><row>
72 <entry align="char"><para>EINVAL</para></entry>
73 <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry>
74 </row><row>
75 <entry align="char"><para>ENOMEM</para></entry>
76 <entry align="char"><para>Out of memory.</para></entry>
77 </row><row>
78 <entry align="char"><para>EFAULT</para></entry>
79 <entry align="char"><para>Failure while copying data from/to userspace.</para></entry>
80 </row><row>
81 <entry align="char"><para>EOPNOTSUPP</para></entry>
82 <entry align="char"><para>Property type not supported.</para></entry>
83 </row></tbody></tgroup></informaltable>
84</section>
85
86<section id="FE_SET_PROPERTY">
87<title>FE_SET_PROPERTY</title>
88<para>DESCRIPTION
89</para>
90<informaltable><tgroup cols="1"><tbody><row><entry
91 align="char">
92<para>This ioctl call sets one or more frontend properties. This call only
93 requires read-only access to the device.</para>
94</entry>
95 </row></tbody></tgroup></informaltable>
96<para>SYNOPSIS
97</para>
98<informaltable><tgroup cols="1"><tbody><row><entry
99 align="char">
100<para>int ioctl(int fd, int request = <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
101 dtv_properties &#x22C6;props);</para>
102</entry>
103 </row></tbody></tgroup></informaltable>
104<para>PARAMETERS
105</para>
106<informaltable><tgroup cols="2"><tbody><row><entry align="char">
107<para>int fd</para>
108</entry><entry
109 align="char">
110<para>File descriptor returned by a previous call to open().</para>
111</entry>
112 </row><row><entry
113 align="char">
114<para>int num</para>
115</entry><entry
116 align="char">
117<para>Equals <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link> for this command.</para>
118</entry>
119 </row><row><entry
120 align="char">
121<para>struct dtv_property *props</para>
122</entry><entry
123 align="char">
124<para>Points to the location where the front-end property commands are stored.</para>
125</entry>
126 </row></tbody></tgroup></informaltable>
127<para>ERRORS
128</para>
129<informaltable><tgroup cols="2"><tbody><row>
130 <entry align="char"><para>EINVAL</para></entry>
131 <entry align="char"><para>Invalid parameter(s) received or number of parameters out of the range.</para></entry>
132 </row><row>
133 <entry align="char"><para>ENOMEM</para></entry>
134 <entry align="char"><para>Out of memory.</para></entry>
135 </row><row>
136 <entry align="char"><para>EFAULT</para></entry>
137 <entry align="char"><para>Failure while copying data from/to userspace.</para></entry>
138 </row><row>
139 <entry align="char"><para>EOPNOTSUPP</para></entry>
140 <entry align="char"><para>Property type not supported.</para></entry>
141 </row></tbody></tgroup></informaltable>
142</section>
143
144<section>
145 <title>Property types</title>
146<para>
147On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
148the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
149get/set up to 64 properties. The actual meaning of each property is described on the next sections.
150</para>
151
152<para>The available frontend property types are:</para>
153<programlisting>
154#define DTV_UNDEFINED 0
155#define DTV_TUNE 1
156#define DTV_CLEAR 2
157#define DTV_FREQUENCY 3
158#define DTV_MODULATION 4
159#define DTV_BANDWIDTH_HZ 5
160#define DTV_INVERSION 6
161#define DTV_DISEQC_MASTER 7
162#define DTV_SYMBOL_RATE 8
163#define DTV_INNER_FEC 9
164#define DTV_VOLTAGE 10
165#define DTV_TONE 11
166#define DTV_PILOT 12
167#define DTV_ROLLOFF 13
168#define DTV_DISEQC_SLAVE_REPLY 14
169#define DTV_FE_CAPABILITY_COUNT 15
170#define DTV_FE_CAPABILITY 16
171#define DTV_DELIVERY_SYSTEM 17
172#define DTV_ISDBT_PARTIAL_RECEPTION 18
173#define DTV_ISDBT_SOUND_BROADCASTING 19
174#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
175#define DTV_ISDBT_SB_SEGMENT_IDX 21
176#define DTV_ISDBT_SB_SEGMENT_COUNT 22
177#define DTV_ISDBT_LAYERA_FEC 23
178#define DTV_ISDBT_LAYERA_MODULATION 24
179#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
180#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
181#define DTV_ISDBT_LAYERB_FEC 27
182#define DTV_ISDBT_LAYERB_MODULATION 28
183#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
184#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
185#define DTV_ISDBT_LAYERC_FEC 31
186#define DTV_ISDBT_LAYERC_MODULATION 32
187#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
188#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
189#define DTV_API_VERSION 35
190#define DTV_CODE_RATE_HP 36
191#define DTV_CODE_RATE_LP 37
192#define DTV_GUARD_INTERVAL 38
193#define DTV_TRANSMISSION_MODE 39
194#define DTV_HIERARCHY 40
195#define DTV_ISDBT_LAYER_ENABLED 41
196#define DTV_ISDBS_TS_ID 42
197</programlisting>
198</section>
199
200<section id="fe_property_common">
201 <title>Parameters that are common to all Digital TV standards</title>
202 <section id="DTV_FREQUENCY">
203 <title><constant>DTV_FREQUENCY</constant></title>
204
205 <para>Central frequency of the channel, in HZ.</para>
206
207 <para>Notes:</para>
208 <para>1)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
209 E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of
210 the channel which is 6MHz.</para>
211
212 <para>2)As in ISDB-Tsb the channel consists of only one or three segments the
213 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
214 central frequency of the channel is expected.</para>
215 </section>
216
217 <section id="DTV_BANDWIDTH_HZ">
218 <title><constant>DTV_BANDWIDTH_HZ</constant></title>
219
220 <para>Bandwidth for the channel, in HZ.</para>
221
222 <para>Possible values:
223 <constant>1712000</constant>,
224 <constant>5000000</constant>,
225 <constant>6000000</constant>,
226 <constant>7000000</constant>,
227 <constant>8000000</constant>,
228 <constant>10000000</constant>.
229 </para>
230
231 <para>Notes:</para>
232
233 <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para>
234 <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para>
235 <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth
236 for DVB-C depends on the symbol rate</para>
237 <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from
238 other parameters (DTV_ISDBT_SB_SEGMENT_IDX,
239 DTV_ISDBT_SB_SEGMENT_COUNT).</para>
240 <para>5) DVB-T supports 6, 7 and 8MHz.</para>
241 <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para>
242 </section>
243
244 <section id="DTV_DELIVERY_SYSTEM">
245 <title><constant>DTV_DELIVERY_SYSTEM</constant></title>
246
247 <para>Specifies the type of Delivery system</para>
248
249 <para>Possible values: </para>
250<programlisting>
251typedef enum fe_delivery_system {
252 SYS_UNDEFINED,
253 SYS_DVBC_ANNEX_AC,
254 SYS_DVBC_ANNEX_B,
255 SYS_DVBT,
256 SYS_DSS,
257 SYS_DVBS,
258 SYS_DVBS2,
259 SYS_DVBH,
260 SYS_ISDBT,
261 SYS_ISDBS,
262 SYS_ISDBC,
263 SYS_ATSC,
264 SYS_ATSCMH,
265 SYS_DMBTH,
266 SYS_CMMB,
267 SYS_DAB,
268 SYS_DVBT2,
269} fe_delivery_system_t;
270</programlisting>
271
272 </section>
273
274 <section id="DTV_TRANSMISSION_MODE">
275 <title><constant>DTV_TRANSMISSION_MODE</constant></title>
276
277 <para>Specifies the number of carriers used by the standard</para>
278
279 <para>Possible values are:</para>
280<programlisting>
281typedef enum fe_transmit_mode {
282 TRANSMISSION_MODE_2K,
283 TRANSMISSION_MODE_8K,
284 TRANSMISSION_MODE_AUTO,
285 TRANSMISSION_MODE_4K,
286 TRANSMISSION_MODE_1K,
287 TRANSMISSION_MODE_16K,
288 TRANSMISSION_MODE_32K,
289} fe_transmit_mode_t;
290</programlisting>
291
292 <para>Notes:</para>
293 <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called
294 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para>
295
296 <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the
297 hardware will try to find the correct FFT-size (if capable) and will
298 use TMCC to fill in the missing parameters.</para>
299 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para>
300 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para>
301 </section>
302
303 <section id="DTV_GUARD_INTERVAL">
304 <title><constant>DTV_GUARD_INTERVAL</constant></title>
305
306 <para>Possible values are:</para>
307<programlisting>
308typedef enum fe_guard_interval {
309 GUARD_INTERVAL_1_32,
310 GUARD_INTERVAL_1_16,
311 GUARD_INTERVAL_1_8,
312 GUARD_INTERVAL_1_4,
313 GUARD_INTERVAL_AUTO,
314 GUARD_INTERVAL_1_128,
315 GUARD_INTERVAL_19_128,
316 GUARD_INTERVAL_19_256,
317} fe_guard_interval_t;
318</programlisting>
319
320 <para>Notes:</para>
321 <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will
322 try to find the correct guard interval (if capable) and will use TMCC to fill
323 in the missing parameters.</para>
324 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para>
325 </section>
326</section>
327
328<section id="isdbt">
329 <title>ISDB-T frontend</title>
330 <para>This section describes shortly what are the possible parameters in the Linux
331 DVB-API called "S2API" and now DVB API 5 in order to tune an ISDB-T/ISDB-Tsb
332 demodulator:</para>
333
334 <para>This ISDB-T/ISDB-Tsb API extension should reflect all information
335 needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible
336 that some very sophisticated devices won't need certain parameters to
337 tune.</para>
338
339 <para>The information given here should help application writers to know how
340 to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para>
341
342 <para>The details given here about ISDB-T and ISDB-Tsb are just enough to
343 basically show the dependencies between the needed parameter values,
344 but surely some information is left out. For more detailed information
345 see the following documents:</para>
346
347 <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial
348 Television Broadcasting" and</para>
349 <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial
350 Television Broadcasting".</para>
351
352 <para>In order to read this document one has to have some knowledge the
353 channel structure in ISDB-T and ISDB-Tsb. I.e. it has to be known to
354 the reader that an ISDB-T channel consists of 13 segments, that it can
355 have up to 3 layer sharing those segments, and things like that.</para>
356
357 <para>Parameters used by ISDB-T and ISDB-Tsb.</para>
358
359 <section id="isdbt-new-parms">
360 <title>ISDB-T only parameters</title>
361
362 <section id="isdbt-part-rec">
363 <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title>
364
365 <para><constant>If DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether
366 the channel is in partial reception mode or not.</para>
367
368 <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and
369 <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para>
370
371 <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'
372 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel
373 is consisting of one segment and layer or three segments and two layers.</para>
374
375 <para>Possible values: 0, 1, -1 (AUTO)</para>
376 </section>
377
378 <section id="isdbt-sound-bcast">
379 <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title>
380
381 <para>This field represents whether the other DTV_ISDBT_*-parameters are
382 referring to an ISDB-T and an ISDB-Tsb channel. (See also
383 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para>
384
385 <para>Possible values: 0, 1, -1 (AUTO)</para>
386 </section>
387
388 <section id="isdbt-sb-ch-id">
389 <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title>
390
391 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
392
393 <para>(Note of the author: This might not be the correct description of the
394 <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical
395 background needed to program a device)</para>
396
397 <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a
398 set of connected ISDB-Tsb channels. In this set of channels every
399 channel can be received independently. The number of connected
400 ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum
401 bandwidth available.</para>
402
403 <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The
404 broadcaster has several possibilities to put those channels in the
405 air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8
406 segments from position 1-8 to 5-13 or anything in between.</para>
407
408 <para>The underlying layer of segments are subchannels: each segment is
409 consisting of several subchannels with a predefined IDs. A sub-channel
410 is used to help the demodulator to synchronize on the channel.</para>
411
412 <para>An ISDB-T channel is always centered over all sub-channels. As for
413 the example above, in ISDB-Tsb it is no longer as simple as that.</para>
414
415 <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the
416 sub-channel ID of the segment to be demodulated.</para>
417
418 <para>Possible values: 0 .. 41, -1 (AUTO)</para>
419 </section>
420
421 <section id="isdbt-sb-seg-idx">
422
423 <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title>
424
425 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
426
427 <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be
428 demodulated for an ISDB-Tsb channel where several of them are
429 transmitted in the connected manner.</para>
430
431 <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para>
432
433 <para>Note: This value cannot be determined by an automatic channel search.</para>
434 </section>
435
436 <section id="isdbt-sb-seg-cnt">
437 <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title>
438
439 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
440
441 <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb
442 channels.</para>
443
444 <para>Possible values: 1 .. 13</para>
445
446 <para>Note: This value cannot be determined by an automatic channel search.</para>
447 </section>
448
449 <section id="isdb-hierq-layers">
450 <title>Hierarchical layers</title>
451
452 <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
453 ISDB-T hierarchical layers can be decoded simultaneously. For that
454 reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.</para>
455
456 <para>ISDB-T has 3 hierarchical layers which each can use a part of the
457 available segments. The total number of segments over all layers has
458 to 13 in ISDB-T.</para>
459
460 <section id="isdbt-layer-ena">
461 <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title>
462
463 <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling
464 layers in the decoding process. Setting all bits of
465 <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be
466 demodulated. This is the default.</para>
467
468 <para>If the channel is in the partial reception mode
469 (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded
470 independently of the other 12 segments. In that mode layer A has to
471 have a <constant>SEGMENT_COUNT</constant> of 1.</para>
472
473 <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb
474 according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled
475 accordingly.</para>
476
477 <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para>
478
479 <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para>
480 <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para>
481 <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para>
482 <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para>
483 </section>
484
485 <section id="isdbt-layer-fec">
486 <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title>
487
488 <para>Possible values: <constant>FEC_AUTO</constant>, <constant>FEC_1_2</constant>, <constant>FEC_2_3</constant>, <constant>FEC_3_4</constant>, <constant>FEC_5_6</constant>, <constant>FEC_7_8</constant></para>
489 </section>
490
491 <section id="isdbt-layer-mod">
492 <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title>
493
494 <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para>
495
496 <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant>
497 and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para>
498 </section>
499
500 <section id="isdbt-layer-seg-cnt">
501 <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title>
502
503 <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para>
504
505 <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and
506 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para>
507
508 <informaltable id="isdbt-layer_seg-cnt-table">
509 <tgroup cols="6">
510
511 <tbody>
512 <row>
513 <entry>PR</entry>
514 <entry>SB</entry>
515 <entry>Layer A width</entry>
516 <entry>Layer B width</entry>
517 <entry>Layer C width</entry>
518 <entry>total width</entry>
519 </row>
520
521 <row>
522 <entry>0</entry>
523 <entry>0</entry>
524 <entry>1 .. 13</entry>
525 <entry>1 .. 13</entry>
526 <entry>1 .. 13</entry>
527 <entry>13</entry>
528 </row>
529
530 <row>
531 <entry>1</entry>
532 <entry>0</entry>
533 <entry>1</entry>
534 <entry>1 .. 13</entry>
535 <entry>1 .. 13</entry>
536 <entry>13</entry>
537 </row>
538
539 <row>
540 <entry>0</entry>
541 <entry>1</entry>
542 <entry>1</entry>
543 <entry>0</entry>
544 <entry>0</entry>
545 <entry>1</entry>
546 </row>
547
548 <row>
549 <entry>1</entry>
550 <entry>1</entry>
551 <entry>1</entry>
552 <entry>2</entry>
553 <entry>0</entry>
554 <entry>13</entry>
555 </row>
556 </tbody>
557
558 </tgroup>
559 </informaltable>
560
561 </section>
562
563 <section id="isdbt_layer_t_interl">
564 <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title>
565
566 <para>Possible values: 0, 1, 2, 3, -1 (AUTO)</para>
567
568 <para>Note: The real inter-leaver depth-names depend on the mode (fft-size); the values
569 here are referring to what can be found in the TMCC-structure -
570 independent of the mode.</para>
571 </section>
572 </section>
573 </section>
574 <section id="dvbt2-params">
575 <title>DVB-T2 parameters</title>
576
577 <para>This section covers parameters that apply only to the DVB-T2 delivery method. DVB-T2
578 support is currently in the early stages development so expect this section to grow
579 and become more detailed with time.</para>
580
581 <section id="dvbt2-plp-id">
582 <title><constant>DTV_DVBT2_PLP_ID</constant></title>
583
584 <para>DVB-T2 supports Physical Layer Pipes (PLP) to allow transmission of
585 many data types via a single multiplex. The API will soon support this
586 at which point this section will be expanded.</para>
587 </section>
588 </section>
589</section>
590</section>
diff --git a/Documentation/DocBook/dvb/dvbstb.png b/Documentation/DocBook/dvb/dvbstb.png
deleted file mode 100644
index 9b8f372e7af..00000000000
--- a/Documentation/DocBook/dvb/dvbstb.png
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/dvb/frontend.h.xml b/Documentation/DocBook/dvb/frontend.h.xml
deleted file mode 100644
index d792f789ad3..00000000000
--- a/Documentation/DocBook/dvb/frontend.h.xml
+++ /dev/null
@@ -1,428 +0,0 @@
1<programlisting>
2/*
3 * frontend.h
4 *
5 * Copyright (C) 2000 Marcus Metzler &lt;marcus@convergence.de&gt;
6 * Ralph Metzler &lt;ralph@convergence.de&gt;
7 * Holger Waechtler &lt;holger@convergence.de&gt;
8 * Andre Draszik &lt;ad@convergence.de&gt;
9 * for convergence integrated media GmbH
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU Lesser General Public License
13 * as published by the Free Software Foundation; either version 2.1
14 * of the License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU Lesser General Public License
22 * along with this program; if not, write to the Free Software
23 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
24 *
25 */
26
27#ifndef _DVBFRONTEND_H_
28#define _DVBFRONTEND_H_
29
30#include &lt;linux/types.h&gt;
31
32typedef enum fe_type {
33 FE_QPSK,
34 FE_QAM,
35 FE_OFDM,
36 FE_ATSC
37} fe_type_t;
38
39
40typedef enum fe_caps {
41 FE_IS_STUPID = 0,
42 FE_CAN_INVERSION_AUTO = 0x1,
43 FE_CAN_FEC_1_2 = 0x2,
44 FE_CAN_FEC_2_3 = 0x4,
45 FE_CAN_FEC_3_4 = 0x8,
46 FE_CAN_FEC_4_5 = 0x10,
47 FE_CAN_FEC_5_6 = 0x20,
48 FE_CAN_FEC_6_7 = 0x40,
49 FE_CAN_FEC_7_8 = 0x80,
50 FE_CAN_FEC_8_9 = 0x100,
51 FE_CAN_FEC_AUTO = 0x200,
52 FE_CAN_QPSK = 0x400,
53 FE_CAN_QAM_16 = 0x800,
54 FE_CAN_QAM_32 = 0x1000,
55 FE_CAN_QAM_64 = 0x2000,
56 FE_CAN_QAM_128 = 0x4000,
57 FE_CAN_QAM_256 = 0x8000,
58 FE_CAN_QAM_AUTO = 0x10000,
59 FE_CAN_TRANSMISSION_MODE_AUTO = 0x20000,
60 FE_CAN_BANDWIDTH_AUTO = 0x40000,
61 FE_CAN_GUARD_INTERVAL_AUTO = 0x80000,
62 FE_CAN_HIERARCHY_AUTO = 0x100000,
63 FE_CAN_8VSB = 0x200000,
64 FE_CAN_16VSB = 0x400000,
65 FE_HAS_EXTENDED_CAPS = 0x800000, /* We need more bitspace for newer APIs, indicate this. */
66 FE_CAN_TURBO_FEC = 0x8000000, /* frontend supports "turbo fec modulation" */
67 FE_CAN_2G_MODULATION = 0x10000000, /* frontend supports "2nd generation modulation" (DVB-S2) */
68 FE_NEEDS_BENDING = 0x20000000, /* not supported anymore, don't use (frontend requires frequency bending) */
69 FE_CAN_RECOVER = 0x40000000, /* frontend can recover from a cable unplug automatically */
70 FE_CAN_MUTE_TS = 0x80000000 /* frontend can stop spurious TS data output */
71} fe_caps_t;
72
73
74struct dvb_frontend_info {
75 char name[128];
76 fe_type_t type;
77 __u32 frequency_min;
78 __u32 frequency_max;
79 __u32 frequency_stepsize;
80 __u32 frequency_tolerance;
81 __u32 symbol_rate_min;
82 __u32 symbol_rate_max;
83 __u32 symbol_rate_tolerance; /* ppm */
84 __u32 notifier_delay; /* DEPRECATED */
85 fe_caps_t caps;
86};
87
88
89/**
90 * Check out the DiSEqC bus spec available on http://www.eutelsat.org/ for
91 * the meaning of this struct...
92 */
93struct dvb_diseqc_master_cmd {
94 __u8 msg [6]; /* { framing, address, command, data [3] } */
95 __u8 msg_len; /* valid values are 3...6 */
96};
97
98
99struct dvb_diseqc_slave_reply {
100 __u8 msg [4]; /* { framing, data [3] } */
101 __u8 msg_len; /* valid values are 0...4, 0 means no msg */
102 int timeout; /* return from ioctl after timeout ms with */
103}; /* errorcode when no message was received */
104
105
106typedef enum fe_sec_voltage {
107 SEC_VOLTAGE_13,
108 SEC_VOLTAGE_18,
109 SEC_VOLTAGE_OFF
110} fe_sec_voltage_t;
111
112
113typedef enum fe_sec_tone_mode {
114 SEC_TONE_ON,
115 SEC_TONE_OFF
116} fe_sec_tone_mode_t;
117
118
119typedef enum fe_sec_mini_cmd {
120 SEC_MINI_A,
121 SEC_MINI_B
122} fe_sec_mini_cmd_t;
123
124
125typedef enum fe_status {
126 FE_HAS_SIGNAL = 0x01, /* found something above the noise level */
127 FE_HAS_CARRIER = 0x02, /* found a DVB signal */
128 FE_HAS_VITERBI = 0x04, /* FEC is stable */
129 FE_HAS_SYNC = 0x08, /* found sync bytes */
130 FE_HAS_LOCK = 0x10, /* everything's working... */
131 FE_TIMEDOUT = 0x20, /* no lock within the last ~2 seconds */
132 FE_REINIT = 0x40 /* frontend was reinitialized, */
133} fe_status_t; /* application is recommended to reset */
134 /* DiSEqC, tone and parameters */
135
136typedef enum fe_spectral_inversion {
137 INVERSION_OFF,
138 INVERSION_ON,
139 INVERSION_AUTO
140} fe_spectral_inversion_t;
141
142
143typedef enum fe_code_rate {
144 FEC_NONE = 0,
145 FEC_1_2,
146 FEC_2_3,
147 FEC_3_4,
148 FEC_4_5,
149 FEC_5_6,
150 FEC_6_7,
151 FEC_7_8,
152 FEC_8_9,
153 FEC_AUTO,
154 FEC_3_5,
155 FEC_9_10,
156} fe_code_rate_t;
157
158
159typedef enum fe_modulation {
160 QPSK,
161 QAM_16,
162 QAM_32,
163 QAM_64,
164 QAM_128,
165 QAM_256,
166 QAM_AUTO,
167 VSB_8,
168 VSB_16,
169 PSK_8,
170 APSK_16,
171 APSK_32,
172 DQPSK,
173} fe_modulation_t;
174
175typedef enum fe_transmit_mode {
176 TRANSMISSION_MODE_2K,
177 TRANSMISSION_MODE_8K,
178 TRANSMISSION_MODE_AUTO,
179 TRANSMISSION_MODE_4K,
180 TRANSMISSION_MODE_1K,
181 TRANSMISSION_MODE_16K,
182 TRANSMISSION_MODE_32K,
183} fe_transmit_mode_t;
184
185typedef enum fe_bandwidth {
186 BANDWIDTH_8_MHZ,
187 BANDWIDTH_7_MHZ,
188 BANDWIDTH_6_MHZ,
189 BANDWIDTH_AUTO,
190 BANDWIDTH_5_MHZ,
191 BANDWIDTH_10_MHZ,
192 BANDWIDTH_1_712_MHZ,
193} fe_bandwidth_t;
194
195
196typedef enum fe_guard_interval {
197 GUARD_INTERVAL_1_32,
198 GUARD_INTERVAL_1_16,
199 GUARD_INTERVAL_1_8,
200 GUARD_INTERVAL_1_4,
201 GUARD_INTERVAL_AUTO,
202 GUARD_INTERVAL_1_128,
203 GUARD_INTERVAL_19_128,
204 GUARD_INTERVAL_19_256,
205} fe_guard_interval_t;
206
207
208typedef enum fe_hierarchy {
209 HIERARCHY_NONE,
210 HIERARCHY_1,
211 HIERARCHY_2,
212 HIERARCHY_4,
213 HIERARCHY_AUTO
214} fe_hierarchy_t;
215
216
217struct dvb_qpsk_parameters {
218 __u32 symbol_rate; /* symbol rate in Symbols per second */
219 fe_code_rate_t fec_inner; /* forward error correction (see above) */
220};
221
222struct dvb_qam_parameters {
223 __u32 symbol_rate; /* symbol rate in Symbols per second */
224 fe_code_rate_t fec_inner; /* forward error correction (see above) */
225 fe_modulation_t modulation; /* modulation type (see above) */
226};
227
228struct dvb_vsb_parameters {
229 fe_modulation_t modulation; /* modulation type (see above) */
230};
231
232struct dvb_ofdm_parameters {
233 fe_bandwidth_t bandwidth;
234 fe_code_rate_t code_rate_HP; /* high priority stream code rate */
235 fe_code_rate_t code_rate_LP; /* low priority stream code rate */
236 fe_modulation_t constellation; /* modulation type (see above) */
237 fe_transmit_mode_t transmission_mode;
238 fe_guard_interval_t guard_interval;
239 fe_hierarchy_t hierarchy_information;
240};
241
242
243struct dvb_frontend_parameters {
244 __u32 frequency; /* (absolute) frequency in Hz for QAM/OFDM/ATSC */
245 /* intermediate frequency in kHz for QPSK */
246 fe_spectral_inversion_t inversion;
247 union {
248 struct dvb_qpsk_parameters qpsk;
249 struct dvb_qam_parameters qam;
250 struct dvb_ofdm_parameters ofdm;
251 struct dvb_vsb_parameters vsb;
252 } u;
253};
254
255
256struct dvb_frontend_event {
257 fe_status_t status;
258 struct dvb_frontend_parameters parameters;
259};
260
261/* S2API Commands */
262#define DTV_UNDEFINED 0
263#define DTV_TUNE 1
264#define DTV_CLEAR 2
265#define DTV_FREQUENCY 3
266#define DTV_MODULATION 4
267#define DTV_BANDWIDTH_HZ 5
268#define DTV_INVERSION 6
269#define DTV_DISEQC_MASTER 7
270#define DTV_SYMBOL_RATE 8
271#define DTV_INNER_FEC 9
272#define DTV_VOLTAGE 10
273#define DTV_TONE 11
274#define DTV_PILOT 12
275#define DTV_ROLLOFF 13
276#define DTV_DISEQC_SLAVE_REPLY 14
277
278/* Basic enumeration set for querying unlimited capabilities */
279#define DTV_FE_CAPABILITY_COUNT 15
280#define DTV_FE_CAPABILITY 16
281#define DTV_DELIVERY_SYSTEM 17
282
283/* ISDB-T and ISDB-Tsb */
284#define DTV_ISDBT_PARTIAL_RECEPTION 18
285#define DTV_ISDBT_SOUND_BROADCASTING 19
286
287#define DTV_ISDBT_SB_SUBCHANNEL_ID 20
288#define DTV_ISDBT_SB_SEGMENT_IDX 21
289#define DTV_ISDBT_SB_SEGMENT_COUNT 22
290
291#define DTV_ISDBT_LAYERA_FEC 23
292#define DTV_ISDBT_LAYERA_MODULATION 24
293#define DTV_ISDBT_LAYERA_SEGMENT_COUNT 25
294#define DTV_ISDBT_LAYERA_TIME_INTERLEAVING 26
295
296#define DTV_ISDBT_LAYERB_FEC 27
297#define DTV_ISDBT_LAYERB_MODULATION 28
298#define DTV_ISDBT_LAYERB_SEGMENT_COUNT 29
299#define DTV_ISDBT_LAYERB_TIME_INTERLEAVING 30
300
301#define DTV_ISDBT_LAYERC_FEC 31
302#define DTV_ISDBT_LAYERC_MODULATION 32
303#define DTV_ISDBT_LAYERC_SEGMENT_COUNT 33
304#define DTV_ISDBT_LAYERC_TIME_INTERLEAVING 34
305
306#define DTV_API_VERSION 35
307
308#define DTV_CODE_RATE_HP 36
309#define DTV_CODE_RATE_LP 37
310#define DTV_GUARD_INTERVAL 38
311#define DTV_TRANSMISSION_MODE 39
312#define DTV_HIERARCHY 40
313
314#define DTV_ISDBT_LAYER_ENABLED 41
315
316#define DTV_ISDBS_TS_ID 42
317
318#define DTV_DVBT2_PLP_ID 43
319
320#define DTV_MAX_COMMAND DTV_DVBT2_PLP_ID
321
322typedef enum fe_pilot {
323 PILOT_ON,
324 PILOT_OFF,
325 PILOT_AUTO,
326} fe_pilot_t;
327
328typedef enum fe_rolloff {
329 ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
330 ROLLOFF_20,
331 ROLLOFF_25,
332 ROLLOFF_AUTO,
333} fe_rolloff_t;
334
335typedef enum fe_delivery_system {
336 SYS_UNDEFINED,
337 SYS_DVBC_ANNEX_AC,
338 SYS_DVBC_ANNEX_B,
339 SYS_DVBT,
340 SYS_DSS,
341 SYS_DVBS,
342 SYS_DVBS2,
343 SYS_DVBH,
344 SYS_ISDBT,
345 SYS_ISDBS,
346 SYS_ISDBC,
347 SYS_ATSC,
348 SYS_ATSCMH,
349 SYS_DMBTH,
350 SYS_CMMB,
351 SYS_DAB,
352 SYS_DVBT2,
353} fe_delivery_system_t;
354
355struct dtv_cmds_h {
356 char *name; /* A display name for debugging purposes */
357
358 __u32 cmd; /* A unique ID */
359
360 /* Flags */
361 __u32 set:1; /* Either a set or get property */
362 __u32 buffer:1; /* Does this property use the buffer? */
363 __u32 reserved:30; /* Align */
364};
365
366struct dtv_property {
367 __u32 cmd;
368 __u32 reserved[3];
369 union {
370 __u32 data;
371 struct {
372 __u8 data[32];
373 __u32 len;
374 __u32 reserved1[3];
375 void *reserved2;
376 } buffer;
377 } u;
378 int result;
379} __attribute__ ((packed));
380
381/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
382#define DTV_IOCTL_MAX_MSGS 64
383
384struct dtv_properties {
385 __u32 num;
386 struct dtv_property *props;
387};
388
389#define <link linkend="FE_GET_PROPERTY">FE_SET_PROPERTY</link> _IOW('o', 82, struct dtv_properties)
390#define <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> _IOR('o', 83, struct dtv_properties)
391
392
393/**
394 * When set, this flag will disable any zigzagging or other "normal" tuning
395 * behaviour. Additionally, there will be no automatic monitoring of the lock
396 * status, and hence no frontend events will be generated. If a frontend device
397 * is closed, this flag will be automatically turned off when the device is
398 * reopened read-write.
399 */
400#define FE_TUNE_MODE_ONESHOT 0x01
401
402
403#define <link linkend="FE_GET_INFO">FE_GET_INFO</link> _IOR('o', 61, struct dvb_frontend_info)
404
405#define <link linkend="FE_DISEQC_RESET_OVERLOAD">FE_DISEQC_RESET_OVERLOAD</link> _IO('o', 62)
406#define <link linkend="FE_DISEQC_SEND_MASTER_CMD">FE_DISEQC_SEND_MASTER_CMD</link> _IOW('o', 63, struct dvb_diseqc_master_cmd)
407#define <link linkend="FE_DISEQC_RECV_SLAVE_REPLY">FE_DISEQC_RECV_SLAVE_REPLY</link> _IOR('o', 64, struct dvb_diseqc_slave_reply)
408#define <link linkend="FE_DISEQC_SEND_BURST">FE_DISEQC_SEND_BURST</link> _IO('o', 65) /* fe_sec_mini_cmd_t */
409
410#define <link linkend="FE_SET_TONE">FE_SET_TONE</link> _IO('o', 66) /* fe_sec_tone_mode_t */
411#define <link linkend="FE_SET_VOLTAGE">FE_SET_VOLTAGE</link> _IO('o', 67) /* fe_sec_voltage_t */
412#define <link linkend="FE_ENABLE_HIGH_LNB_VOLTAGE">FE_ENABLE_HIGH_LNB_VOLTAGE</link> _IO('o', 68) /* int */
413
414#define <link linkend="FE_READ_STATUS">FE_READ_STATUS</link> _IOR('o', 69, fe_status_t)
415#define <link linkend="FE_READ_BER">FE_READ_BER</link> _IOR('o', 70, __u32)
416#define <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> _IOR('o', 71, __u16)
417#define <link linkend="FE_READ_SNR">FE_READ_SNR</link> _IOR('o', 72, __u16)
418#define <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> _IOR('o', 73, __u32)
419
420#define <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> _IOW('o', 76, struct dvb_frontend_parameters)
421#define <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link> _IOR('o', 77, struct dvb_frontend_parameters)
422#define <link linkend="FE_SET_FRONTEND_TUNE_MODE">FE_SET_FRONTEND_TUNE_MODE</link> _IO('o', 81) /* unsigned int */
423#define <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> _IOR('o', 78, struct dvb_frontend_event)
424
425#define <link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link> _IO('o', 80) /* unsigned int */
426
427#endif /*_DVBFRONTEND_H_*/
428</programlisting>
diff --git a/Documentation/DocBook/dvb/net.xml b/Documentation/DocBook/dvb/net.xml
deleted file mode 100644
index 94e388d94c0..00000000000
--- a/Documentation/DocBook/dvb/net.xml
+++ /dev/null
@@ -1,12 +0,0 @@
1<title>DVB Network API</title>
2<para>The DVB net device enables feeding of MPE (multi protocol encapsulation) packets
3received via DVB into the Linux network protocol stack, e.g. for internet via satellite
4applications. It can be accessed through <emphasis role="tt">/dev/dvb/adapter0/net0</emphasis>. Data types and
5and ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/net.h</emphasis> in your
6application.
7</para>
8<section id="dvb_net_types">
9<title>DVB Net Data Types</title>
10<para>To be written&#x2026;
11</para>
12</section>
diff --git a/Documentation/DocBook/kernel-hacking.tmpl b/Documentation/DocBook/kernel-hacking.tmpl
index 7b3f4936341..07a9c48de5a 100644
--- a/Documentation/DocBook/kernel-hacking.tmpl
+++ b/Documentation/DocBook/kernel-hacking.tmpl
@@ -409,7 +409,7 @@ cond_resched(); /* Will sleep */
409 409
410 <para> 410 <para>
411 You should always compile your kernel 411 You should always compile your kernel
412 <symbol>CONFIG_DEBUG_SPINLOCK_SLEEP</symbol> on, and it will warn 412 <symbol>CONFIG_DEBUG_ATOMIC_SLEEP</symbol> on, and it will warn
413 you if you break these rules. If you <emphasis>do</emphasis> break 413 you if you break these rules. If you <emphasis>do</emphasis> break
414 the rules, you will eventually lock up your box. 414 the rules, you will eventually lock up your box.
415 </para> 415 </para>
diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl
deleted file mode 100644
index e5fe09430fd..00000000000
--- a/Documentation/DocBook/media-entities.tmpl
+++ /dev/null
@@ -1,464 +0,0 @@
1<!-- Generated file! Do not edit. -->
2
3<!-- Functions -->
4<!ENTITY func-close "<link linkend='func-close'><function>close()</function></link>">
5<!ENTITY func-ioctl "<link linkend='func-ioctl'><function>ioctl()</function></link>">
6<!ENTITY func-mmap "<link linkend='func-mmap'><function>mmap()</function></link>">
7<!ENTITY func-munmap "<link linkend='func-munmap'><function>munmap()</function></link>">
8<!ENTITY func-open "<link linkend='func-open'><function>open()</function></link>">
9<!ENTITY func-poll "<link linkend='func-poll'><function>poll()</function></link>">
10<!ENTITY func-read "<link linkend='func-read'><function>read()</function></link>">
11<!ENTITY func-select "<link linkend='func-select'><function>select()</function></link>">
12<!ENTITY func-write "<link linkend='func-write'><function>write()</function></link>">
13
14<!ENTITY media-func-close "<link linkend='media-func-close'><function>close()</function></link>">
15<!ENTITY media-func-ioctl "<link linkend='media-func-ioctl'><function>ioctl()</function></link>">
16<!ENTITY media-func-open "<link linkend='media-func-open'><function>open()</function></link>">
17
18<!-- Ioctls -->
19<!ENTITY VIDIOC-CROPCAP "<link linkend='vidioc-cropcap'><constant>VIDIOC_CROPCAP</constant></link>">
20<!ENTITY VIDIOC-DBG-G-CHIP-IDENT "<link linkend='vidioc-dbg-g-chip-ident'><constant>VIDIOC_DBG_G_CHIP_IDENT</constant></link>">
21<!ENTITY VIDIOC-DBG-G-REGISTER "<link linkend='vidioc-dbg-g-register'><constant>VIDIOC_DBG_G_REGISTER</constant></link>">
22<!ENTITY VIDIOC-DBG-S-REGISTER "<link linkend='vidioc-dbg-g-register'><constant>VIDIOC_DBG_S_REGISTER</constant></link>">
23<!ENTITY VIDIOC-DQBUF "<link linkend='vidioc-qbuf'><constant>VIDIOC_DQBUF</constant></link>">
24<!ENTITY VIDIOC-DQEVENT "<link linkend='vidioc-dqevent'><constant>VIDIOC_DQEVENT</constant></link>">
25<!ENTITY VIDIOC-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_ENCODER_CMD</constant></link>">
26<!ENTITY VIDIOC-ENUMAUDIO "<link linkend='vidioc-enumaudio'><constant>VIDIOC_ENUMAUDIO</constant></link>">
27<!ENTITY VIDIOC-ENUMAUDOUT "<link linkend='vidioc-enumaudioout'><constant>VIDIOC_ENUMAUDOUT</constant></link>">
28<!ENTITY VIDIOC-ENUMINPUT "<link linkend='vidioc-enuminput'><constant>VIDIOC_ENUMINPUT</constant></link>">
29<!ENTITY VIDIOC-ENUMOUTPUT "<link linkend='vidioc-enumoutput'><constant>VIDIOC_ENUMOUTPUT</constant></link>">
30<!ENTITY VIDIOC-ENUMSTD "<link linkend='vidioc-enumstd'><constant>VIDIOC_ENUMSTD</constant></link>">
31<!ENTITY VIDIOC-ENUM-DV-PRESETS "<link linkend='vidioc-enum-dv-presets'><constant>VIDIOC_ENUM_DV_PRESETS</constant></link>">
32<!ENTITY VIDIOC-ENUM-FMT "<link linkend='vidioc-enum-fmt'><constant>VIDIOC_ENUM_FMT</constant></link>">
33<!ENTITY VIDIOC-ENUM-FRAMEINTERVALS "<link linkend='vidioc-enum-frameintervals'><constant>VIDIOC_ENUM_FRAMEINTERVALS</constant></link>">
34<!ENTITY VIDIOC-ENUM-FRAMESIZES "<link linkend='vidioc-enum-framesizes'><constant>VIDIOC_ENUM_FRAMESIZES</constant></link>">
35<!ENTITY VIDIOC-G-AUDIO "<link linkend='vidioc-g-audio'><constant>VIDIOC_G_AUDIO</constant></link>">
36<!ENTITY VIDIOC-G-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_G_AUDOUT</constant></link>">
37<!ENTITY VIDIOC-G-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_G_CROP</constant></link>">
38<!ENTITY VIDIOC-G-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_G_CTRL</constant></link>">
39<!ENTITY VIDIOC-G-DV-PRESET "<link linkend='vidioc-g-dv-preset'><constant>VIDIOC_G_DV_PRESET</constant></link>">
40<!ENTITY VIDIOC-G-DV-TIMINGS "<link linkend='vidioc-g-dv-timings'><constant>VIDIOC_G_DV_TIMINGS</constant></link>">
41<!ENTITY VIDIOC-G-ENC-INDEX "<link linkend='vidioc-g-enc-index'><constant>VIDIOC_G_ENC_INDEX</constant></link>">
42<!ENTITY VIDIOC-G-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_G_EXT_CTRLS</constant></link>">
43<!ENTITY VIDIOC-G-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_G_FBUF</constant></link>">
44<!ENTITY VIDIOC-G-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_G_FMT</constant></link>">
45<!ENTITY VIDIOC-G-FREQUENCY "<link linkend='vidioc-g-frequency'><constant>VIDIOC_G_FREQUENCY</constant></link>">
46<!ENTITY VIDIOC-G-INPUT "<link linkend='vidioc-g-input'><constant>VIDIOC_G_INPUT</constant></link>">
47<!ENTITY VIDIOC-G-JPEGCOMP "<link linkend='vidioc-g-jpegcomp'><constant>VIDIOC_G_JPEGCOMP</constant></link>">
48<!ENTITY VIDIOC-G-MPEGCOMP "<link linkend=''><constant>VIDIOC_G_MPEGCOMP</constant></link>">
49<!ENTITY VIDIOC-G-MODULATOR "<link linkend='vidioc-g-modulator'><constant>VIDIOC_G_MODULATOR</constant></link>">
50<!ENTITY VIDIOC-G-OUTPUT "<link linkend='vidioc-g-output'><constant>VIDIOC_G_OUTPUT</constant></link>">
51<!ENTITY VIDIOC-G-PARM "<link linkend='vidioc-g-parm'><constant>VIDIOC_G_PARM</constant></link>">
52<!ENTITY VIDIOC-G-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_G_PRIORITY</constant></link>">
53<!ENTITY VIDIOC-G-SLICED-VBI-CAP "<link linkend='vidioc-g-sliced-vbi-cap'><constant>VIDIOC_G_SLICED_VBI_CAP</constant></link>">
54<!ENTITY VIDIOC-G-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_G_STD</constant></link>">
55<!ENTITY VIDIOC-G-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_G_TUNER</constant></link>">
56<!ENTITY VIDIOC-LOG-STATUS "<link linkend='vidioc-log-status'><constant>VIDIOC_LOG_STATUS</constant></link>">
57<!ENTITY VIDIOC-OVERLAY "<link linkend='vidioc-overlay'><constant>VIDIOC_OVERLAY</constant></link>">
58<!ENTITY VIDIOC-QBUF "<link linkend='vidioc-qbuf'><constant>VIDIOC_QBUF</constant></link>">
59<!ENTITY VIDIOC-QUERYBUF "<link linkend='vidioc-querybuf'><constant>VIDIOC_QUERYBUF</constant></link>">
60<!ENTITY VIDIOC-QUERYCAP "<link linkend='vidioc-querycap'><constant>VIDIOC_QUERYCAP</constant></link>">
61<!ENTITY VIDIOC-QUERYCTRL "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYCTRL</constant></link>">
62<!ENTITY VIDIOC-QUERYMENU "<link linkend='vidioc-queryctrl'><constant>VIDIOC_QUERYMENU</constant></link>">
63<!ENTITY VIDIOC-QUERYSTD "<link linkend='vidioc-querystd'><constant>VIDIOC_QUERYSTD</constant></link>">
64<!ENTITY VIDIOC-QUERY-DV-PRESET "<link linkend='vidioc-query-dv-preset'><constant>VIDIOC_QUERY_DV_PRESET</constant></link>">
65<!ENTITY VIDIOC-REQBUFS "<link linkend='vidioc-reqbufs'><constant>VIDIOC_REQBUFS</constant></link>">
66<!ENTITY VIDIOC-STREAMOFF "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMOFF</constant></link>">
67<!ENTITY VIDIOC-STREAMON "<link linkend='vidioc-streamon'><constant>VIDIOC_STREAMON</constant></link>">
68<!ENTITY VIDIOC-SUBSCRIBE-EVENT "<link linkend='vidioc-subscribe-event'><constant>VIDIOC_SUBSCRIBE_EVENT</constant></link>">
69<!ENTITY VIDIOC-S-AUDIO "<link linkend='vidioc-g-audio'><constant>VIDIOC_S_AUDIO</constant></link>">
70<!ENTITY VIDIOC-S-AUDOUT "<link linkend='vidioc-g-audioout'><constant>VIDIOC_S_AUDOUT</constant></link>">
71<!ENTITY VIDIOC-S-CROP "<link linkend='vidioc-g-crop'><constant>VIDIOC_S_CROP</constant></link>">
72<!ENTITY VIDIOC-S-CTRL "<link linkend='vidioc-g-ctrl'><constant>VIDIOC_S_CTRL</constant></link>">
73<!ENTITY VIDIOC-S-DV-PRESET "<link linkend='vidioc-g-dv-preset'><constant>VIDIOC_S_DV_PRESET</constant></link>">
74<!ENTITY VIDIOC-S-DV-TIMINGS "<link linkend='vidioc-g-dv-timings'><constant>VIDIOC_S_DV_TIMINGS</constant></link>">
75<!ENTITY VIDIOC-S-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_S_EXT_CTRLS</constant></link>">
76<!ENTITY VIDIOC-S-FBUF "<link linkend='vidioc-g-fbuf'><constant>VIDIOC_S_FBUF</constant></link>">
77<!ENTITY VIDIOC-S-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_S_FMT</constant></link>">
78<!ENTITY VIDIOC-S-FREQUENCY "<link linkend='vidioc-g-frequency'><constant>VIDIOC_S_FREQUENCY</constant></link>">
79<!ENTITY VIDIOC-S-HW-FREQ-SEEK "<link linkend='vidioc-s-hw-freq-seek'><constant>VIDIOC_S_HW_FREQ_SEEK</constant></link>">
80<!ENTITY VIDIOC-S-INPUT "<link linkend='vidioc-g-input'><constant>VIDIOC_S_INPUT</constant></link>">
81<!ENTITY VIDIOC-S-JPEGCOMP "<link linkend='vidioc-g-jpegcomp'><constant>VIDIOC_S_JPEGCOMP</constant></link>">
82<!ENTITY VIDIOC-S-MPEGCOMP "<link linkend=''><constant>VIDIOC_S_MPEGCOMP</constant></link>">
83<!ENTITY VIDIOC-S-MODULATOR "<link linkend='vidioc-g-modulator'><constant>VIDIOC_S_MODULATOR</constant></link>">
84<!ENTITY VIDIOC-S-OUTPUT "<link linkend='vidioc-g-output'><constant>VIDIOC_S_OUTPUT</constant></link>">
85<!ENTITY VIDIOC-S-PARM "<link linkend='vidioc-g-parm'><constant>VIDIOC_S_PARM</constant></link>">
86<!ENTITY VIDIOC-S-PRIORITY "<link linkend='vidioc-g-priority'><constant>VIDIOC_S_PRIORITY</constant></link>">
87<!ENTITY VIDIOC-S-STD "<link linkend='vidioc-g-std'><constant>VIDIOC_S_STD</constant></link>">
88<!ENTITY VIDIOC-S-TUNER "<link linkend='vidioc-g-tuner'><constant>VIDIOC_S_TUNER</constant></link>">
89<!ENTITY VIDIOC-SUBDEV-ENUM-FRAME-SIZE "<link linkend='vidioc-subdev-enum-frame-size'><constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant></link>">
90<!ENTITY VIDIOC-SUBDEV-ENUM-MBUS-CODE "<link linkend='vidioc-subdev-enum-mbus-code'><constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant></link>">
91<!ENTITY VIDIOC-SUBDEV-G-CROP "<link linkend='vidioc-subdev-g-crop'><constant>VIDIOC_SUBDEV_G_CROP</constant></link>">
92<!ENTITY VIDIOC-SUBDEV-G-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_G_FMT</constant></link>">
93<!ENTITY VIDIOC-SUBDEV-G-FRAME-INTERVAL "<link linkend='vidioc-subdev-g-frame-interval'><constant>VIDIOC_SUBDEV_G_FRAME_INTERVAL</constant></link>">
94<!ENTITY VIDIOC-SUBDEV-S-CROP "<link linkend='vidioc-subdev-g-crop'><constant>VIDIOC_SUBDEV_S_CROP</constant></link>">
95<!ENTITY VIDIOC-SUBDEV-S-FMT "<link linkend='vidioc-subdev-g-fmt'><constant>VIDIOC_SUBDEV_S_FMT</constant></link>">
96<!ENTITY VIDIOC-SUBDEV-S-FRAME-INTERVAL "<link linkend='vidioc-subdev-g-frame-interval'><constant>VIDIOC_SUBDEV_S_FRAME_INTERVAL</constant></link>">
97<!ENTITY VIDIOC-TRY-ENCODER-CMD "<link linkend='vidioc-encoder-cmd'><constant>VIDIOC_TRY_ENCODER_CMD</constant></link>">
98<!ENTITY VIDIOC-TRY-EXT-CTRLS "<link linkend='vidioc-g-ext-ctrls'><constant>VIDIOC_TRY_EXT_CTRLS</constant></link>">
99<!ENTITY VIDIOC-TRY-FMT "<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>">
100<!ENTITY VIDIOC-UNSUBSCRIBE-EVENT "<link linkend='vidioc-subscribe-event'><constant>VIDIOC_UNSUBSCRIBE_EVENT</constant></link>">
101
102<!ENTITY MEDIA-IOC-DEVICE-INFO "<link linkend='media-ioc-device-info'><constant>MEDIA_IOC_DEVICE_INFO</constant></link>">
103<!ENTITY MEDIA-IOC-ENUM-ENTITIES "<link linkend='media-ioc-enum-entities'><constant>MEDIA_IOC_ENUM_ENTITIES</constant></link>">
104<!ENTITY MEDIA-IOC-ENUM-LINKS "<link linkend='media-ioc-enum-links'><constant>MEDIA_IOC_ENUM_LINKS</constant></link>">
105<!ENTITY MEDIA-IOC-SETUP-LINK "<link linkend='media-ioc-setup-link'><constant>MEDIA_IOC_SETUP_LINK</constant></link>">
106
107<!-- Types -->
108<!ENTITY v4l2-std-id "<link linkend='v4l2-std-id'>v4l2_std_id</link>">
109
110<!-- Enums -->
111<!ENTITY v4l2-buf-type "enum&nbsp;<link linkend='v4l2-buf-type'>v4l2_buf_type</link>">
112<!ENTITY v4l2-colorspace "enum&nbsp;<link linkend='v4l2-colorspace'>v4l2_colorspace</link>">
113<!ENTITY v4l2-ctrl-type "enum&nbsp;<link linkend='v4l2-ctrl-type'>v4l2_ctrl_type</link>">
114<!ENTITY v4l2-exposure-auto-type "enum&nbsp;<link linkend='v4l2-exposure-auto-type'>v4l2_exposure_auto_type</link>">
115<!ENTITY v4l2-field "enum&nbsp;<link linkend='v4l2-field'>v4l2_field</link>">
116<!ENTITY v4l2-frmivaltypes "enum&nbsp;<link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link>">
117<!ENTITY v4l2-frmsizetypes "enum&nbsp;<link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link>">
118<!ENTITY v4l2-mbus-pixelcode "enum&nbsp;<link linkend='v4l2-mbus-pixelcode'>v4l2_mbus_pixelcode</link>">
119<!ENTITY v4l2-memory "enum&nbsp;<link linkend='v4l2-memory'>v4l2_memory</link>">
120<!ENTITY v4l2-mpeg-audio-ac3-bitrate "enum&nbsp;<link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link>">
121<!ENTITY v4l2-mpeg-audio-crc "enum&nbsp;<link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link>">
122<!ENTITY v4l2-mpeg-audio-emphasis "enum&nbsp;<link linkend='v4l2-mpeg-audio-emphasis'>v4l2_mpeg_audio_emphasis</link>">
123<!ENTITY v4l2-mpeg-audio-encoding "enum&nbsp;<link linkend='v4l2-mpeg-audio-encoding'>v4l2_mpeg_audio_encoding</link>">
124<!ENTITY v4l2-mpeg-audio-l1-bitrate "enum&nbsp;<link linkend='v4l2-mpeg-audio-l1-bitrate'>v4l2_mpeg_audio_l1_bitrate</link>">
125<!ENTITY v4l2-mpeg-audio-l2-bitrate "enum&nbsp;<link linkend='v4l2-mpeg-audio-l2-bitrate'>v4l2_mpeg_audio_l2_bitrate</link>">
126<!ENTITY v4l2-mpeg-audio-l3-bitrate "enum&nbsp;<link linkend='v4l2-mpeg-audio-l3-bitrate'>v4l2_mpeg_audio_l3_bitrate</link>">
127<!ENTITY v4l2-mpeg-audio-mode "enum&nbsp;<link linkend='v4l2-mpeg-audio-mode'>v4l2_mpeg_audio_mode</link>">
128<!ENTITY v4l2-mpeg-audio-mode-extension "enum&nbsp;<link linkend='v4l2-mpeg-audio-mode-extension'>v4l2_mpeg_audio_mode_extension</link>">
129<!ENTITY v4l2-mpeg-audio-sampling-freq "enum&nbsp;<link linkend='v4l2-mpeg-audio-sampling-freq'>v4l2_mpeg_audio_sampling_freq</link>">
130<!ENTITY chroma-spatial-filter-type "enum&nbsp;<link linkend='chroma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link>">
131<!ENTITY luma-spatial-filter-type "enum&nbsp;<link linkend='luma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link>">
132<!ENTITY v4l2-mpeg-cx2341x-video-median-filter-type "enum&nbsp;<link linkend='v4l2-mpeg-cx2341x-video-median-filter-type'>v4l2_mpeg_cx2341x_video_median_filter_type</link>">
133<!ENTITY v4l2-mpeg-cx2341x-video-spatial-filter-mode "enum&nbsp;<link linkend='v4l2-mpeg-cx2341x-video-spatial-filter-mode'>v4l2_mpeg_cx2341x_video_spatial_filter_mode</link>">
134<!ENTITY v4l2-mpeg-cx2341x-video-temporal-filter-mode "enum&nbsp;<link linkend='v4l2-mpeg-cx2341x-video-temporal-filter-mode'>v4l2_mpeg_cx2341x_video_temporal_filter_mode</link>">
135<!ENTITY v4l2-mpeg-stream-type "enum&nbsp;<link linkend='v4l2-mpeg-stream-type'>v4l2_mpeg_stream_type</link>">
136<!ENTITY v4l2-mpeg-stream-vbi-fmt "enum&nbsp;<link linkend='v4l2-mpeg-stream-vbi-fmt'>v4l2_mpeg_stream_vbi_fmt</link>">
137<!ENTITY v4l2-mpeg-video-aspect "enum&nbsp;<link linkend='v4l2-mpeg-video-aspect'>v4l2_mpeg_video_aspect</link>">
138<!ENTITY v4l2-mpeg-video-bitrate-mode "enum&nbsp;<link linkend='v4l2-mpeg-video-bitrate-mode'>v4l2_mpeg_video_bitrate_mode</link>">
139<!ENTITY v4l2-mpeg-video-encoding "enum&nbsp;<link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link>">
140<!ENTITY v4l2-power-line-frequency "enum&nbsp;<link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link>">
141<!ENTITY v4l2-priority "enum&nbsp;<link linkend='v4l2-priority'>v4l2_priority</link>">
142<!ENTITY v4l2-subdev-format-whence "enum&nbsp;<link linkend='v4l2-subdev-format-whence'>v4l2_subdev_format_whence</link>">
143<!ENTITY v4l2-tuner-type "enum&nbsp;<link linkend='v4l2-tuner-type'>v4l2_tuner_type</link>">
144<!ENTITY v4l2-preemphasis "enum&nbsp;<link linkend='v4l2-preemphasis'>v4l2_preemphasis</link>">
145
146<!-- Structures -->
147<!ENTITY v4l2-audio "struct&nbsp;<link linkend='v4l2-audio'>v4l2_audio</link>">
148<!ENTITY v4l2-audioout "struct&nbsp;<link linkend='v4l2-audioout'>v4l2_audioout</link>">
149<!ENTITY v4l2-bt-timings "struct&nbsp;<link linkend='v4l2-bt-timings'>v4l2_bt_timings</link>">
150<!ENTITY v4l2-buffer "struct&nbsp;<link linkend='v4l2-buffer'>v4l2_buffer</link>">
151<!ENTITY v4l2-plane "struct&nbsp;<link linkend='v4l2-plane'>v4l2_plane</link>">
152<!ENTITY v4l2-capability "struct&nbsp;<link linkend='v4l2-capability'>v4l2_capability</link>">
153<!ENTITY v4l2-captureparm "struct&nbsp;<link linkend='v4l2-captureparm'>v4l2_captureparm</link>">
154<!ENTITY v4l2-clip "struct&nbsp;<link linkend='v4l2-clip'>v4l2_clip</link>">
155<!ENTITY v4l2-control "struct&nbsp;<link linkend='v4l2-control'>v4l2_control</link>">
156<!ENTITY v4l2-crop "struct&nbsp;<link linkend='v4l2-crop'>v4l2_crop</link>">
157<!ENTITY v4l2-cropcap "struct&nbsp;<link linkend='v4l2-cropcap'>v4l2_cropcap</link>">
158<!ENTITY v4l2-dbg-chip-ident "struct&nbsp;<link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link>">
159<!ENTITY v4l2-dbg-match "struct&nbsp;<link linkend='v4l2-dbg-match'>v4l2_dbg_match</link>">
160<!ENTITY v4l2-dbg-register "struct&nbsp;<link linkend='v4l2-dbg-register'>v4l2_dbg_register</link>">
161<!ENTITY v4l2-dv-enum-preset "struct&nbsp;<link linkend='v4l2-dv-enum-preset'>v4l2_dv_enum_preset</link>">
162<!ENTITY v4l2-dv-preset "struct&nbsp;<link linkend='v4l2-dv-preset'>v4l2_dv_preset</link>">
163<!ENTITY v4l2-dv-timings "struct&nbsp;<link linkend='v4l2-dv-timings'>v4l2_dv_timings</link>">
164<!ENTITY v4l2-enc-idx "struct&nbsp;<link linkend='v4l2-enc-idx'>v4l2_enc_idx</link>">
165<!ENTITY v4l2-enc-idx-entry "struct&nbsp;<link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link>">
166<!ENTITY v4l2-encoder-cmd "struct&nbsp;<link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link>">
167<!ENTITY v4l2-event "struct&nbsp;<link linkend='v4l2-event'>v4l2_event</link>">
168<!ENTITY v4l2-event-subscription "struct&nbsp;<link linkend='v4l2-event-subscription'>v4l2_event_subscription</link>">
169<!ENTITY v4l2-event-vsync "struct&nbsp;<link linkend='v4l2-event-vsync'>v4l2_event_vsync</link>">
170<!ENTITY v4l2-ext-control "struct&nbsp;<link linkend='v4l2-ext-control'>v4l2_ext_control</link>">
171<!ENTITY v4l2-ext-controls "struct&nbsp;<link linkend='v4l2-ext-controls'>v4l2_ext_controls</link>">
172<!ENTITY v4l2-fmtdesc "struct&nbsp;<link linkend='v4l2-fmtdesc'>v4l2_fmtdesc</link>">
173<!ENTITY v4l2-format "struct&nbsp;<link linkend='v4l2-format'>v4l2_format</link>">
174<!ENTITY v4l2-fract "struct&nbsp;<link linkend='v4l2-fract'>v4l2_fract</link>">
175<!ENTITY v4l2-framebuffer "struct&nbsp;<link linkend='v4l2-framebuffer'>v4l2_framebuffer</link>">
176<!ENTITY v4l2-frequency "struct&nbsp;<link linkend='v4l2-frequency'>v4l2_frequency</link>">
177<!ENTITY v4l2-frmival-stepwise "struct&nbsp;<link linkend='v4l2-frmival-stepwise'>v4l2_frmival_stepwise</link>">
178<!ENTITY v4l2-frmivalenum "struct&nbsp;<link linkend='v4l2-frmivalenum'>v4l2_frmivalenum</link>">
179<!ENTITY v4l2-frmsize-discrete "struct&nbsp;<link linkend='v4l2-frmsize-discrete'>v4l2_frmsize_discrete</link>">
180<!ENTITY v4l2-frmsize-stepwise "struct&nbsp;<link linkend='v4l2-frmsize-stepwise'>v4l2_frmsize_stepwise</link>">
181<!ENTITY v4l2-frmsizeenum "struct&nbsp;<link linkend='v4l2-frmsizeenum'>v4l2_frmsizeenum</link>">
182<!ENTITY v4l2-hw-freq-seek "struct&nbsp;<link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link>">
183<!ENTITY v4l2-input "struct&nbsp;<link linkend='v4l2-input'>v4l2_input</link>">
184<!ENTITY v4l2-jpegcompression "struct&nbsp;<link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link>">
185<!ENTITY v4l2-mbus-framefmt "struct&nbsp;<link linkend='v4l2-mbus-framefmt'>v4l2_mbus_framefmt</link>">
186<!ENTITY v4l2-modulator "struct&nbsp;<link linkend='v4l2-modulator'>v4l2_modulator</link>">
187<!ENTITY v4l2-mpeg-vbi-fmt-ivtv "struct&nbsp;<link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link>">
188<!ENTITY v4l2-output "struct&nbsp;<link linkend='v4l2-output'>v4l2_output</link>">
189<!ENTITY v4l2-outputparm "struct&nbsp;<link linkend='v4l2-outputparm'>v4l2_outputparm</link>">
190<!ENTITY v4l2-pix-format "struct&nbsp;<link linkend='v4l2-pix-format'>v4l2_pix_format</link>">
191<!ENTITY v4l2-pix-format-mplane "struct&nbsp;<link linkend='v4l2-pix-format-mplane'>v4l2_pix_format_mplane</link>">
192<!ENTITY v4l2-plane-pix-format "struct&nbsp;<link linkend='v4l2-plane-pix-format'>v4l2_plane_pix_format</link>">
193<!ENTITY v4l2-queryctrl "struct&nbsp;<link linkend='v4l2-queryctrl'>v4l2_queryctrl</link>">
194<!ENTITY v4l2-querymenu "struct&nbsp;<link linkend='v4l2-querymenu'>v4l2_querymenu</link>">
195<!ENTITY v4l2-rect "struct&nbsp;<link linkend='v4l2-rect'>v4l2_rect</link>">
196<!ENTITY v4l2-requestbuffers "struct&nbsp;<link linkend='v4l2-requestbuffers'>v4l2_requestbuffers</link>">
197<!ENTITY v4l2-sliced-vbi-cap "struct&nbsp;<link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link>">
198<!ENTITY v4l2-sliced-vbi-data "struct&nbsp;<link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link>">
199<!ENTITY v4l2-sliced-vbi-format "struct&nbsp;<link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link>">
200<!ENTITY v4l2-subdev-frame-interval "struct&nbsp;<link linkend='v4l2-subdev-frame-interval'>v4l2_subdev_frame_interval</link>">
201<!ENTITY v4l2-subdev-frame-interval-enum "struct&nbsp;<link linkend='v4l2-subdev-frame-interval-enum'>v4l2_subdev_frame_interval_enum</link>">
202<!ENTITY v4l2-subdev-frame-size-enum "struct&nbsp;<link linkend='v4l2-subdev-frame-size-enum'>v4l2_subdev_frame_size_enum</link>">
203<!ENTITY v4l2-subdev-crop "struct&nbsp;<link linkend='v4l2-subdev-crop'>v4l2_subdev_crop</link>">
204<!ENTITY v4l2-subdev-format "struct&nbsp;<link linkend='v4l2-subdev-format'>v4l2_subdev_format</link>">
205<!ENTITY v4l2-subdev-mbus-code-enum "struct&nbsp;<link linkend='v4l2-subdev-mbus-code-enum'>v4l2_subdev_mbus_code_enum</link>">
206<!ENTITY v4l2-standard "struct&nbsp;<link linkend='v4l2-standard'>v4l2_standard</link>">
207<!ENTITY v4l2-streamparm "struct&nbsp;<link linkend='v4l2-streamparm'>v4l2_streamparm</link>">
208<!ENTITY v4l2-timecode "struct&nbsp;<link linkend='v4l2-timecode'>v4l2_timecode</link>">
209<!ENTITY v4l2-tuner "struct&nbsp;<link linkend='v4l2-tuner'>v4l2_tuner</link>">
210<!ENTITY v4l2-vbi-format "struct&nbsp;<link linkend='v4l2-vbi-format'>v4l2_vbi_format</link>">
211<!ENTITY v4l2-window "struct&nbsp;<link linkend='v4l2-window'>v4l2_window</link>">
212
213<!ENTITY media-device-info "struct&nbsp;<link linkend='media-device-info'>media_device_info</link>">
214<!ENTITY media-entity-desc "struct&nbsp;<link linkend='media-entity-desc'>media_entity_desc</link>">
215<!ENTITY media-links-enum "struct&nbsp;<link linkend='media-links-enum'>media_links_enum</link>">
216<!ENTITY media-pad-desc "struct&nbsp;<link linkend='media-pad-desc'>media_pad_desc</link>">
217<!ENTITY media-link-desc "struct&nbsp;<link linkend='media-link-desc'>media_link_desc</link>">
218
219<!-- Error Codes -->
220<!ENTITY EACCES "<errorcode>EACCES</errorcode> error code">
221<!ENTITY EAGAIN "<errorcode>EAGAIN</errorcode> error code">
222<!ENTITY EBADF "<errorcode>EBADF</errorcode> error code">
223<!ENTITY EBUSY "<errorcode>EBUSY</errorcode> error code">
224<!ENTITY EFAULT "<errorcode>EFAULT</errorcode> error code">
225<!ENTITY EIO "<errorcode>EIO</errorcode> error code">
226<!ENTITY EINTR "<errorcode>EINTR</errorcode> error code">
227<!ENTITY EINVAL "<errorcode>EINVAL</errorcode> error code">
228<!ENTITY ENFILE "<errorcode>ENFILE</errorcode> error code">
229<!ENTITY ENOMEM "<errorcode>ENOMEM</errorcode> error code">
230<!ENTITY ENOSPC "<errorcode>ENOSPC</errorcode> error code">
231<!ENTITY ENOTTY "<errorcode>ENOTTY</errorcode> error code">
232<!ENTITY ENXIO "<errorcode>ENXIO</errorcode> error code">
233<!ENTITY EMFILE "<errorcode>EMFILE</errorcode> error code">
234<!ENTITY EPERM "<errorcode>EPERM</errorcode> error code">
235<!ENTITY EPIPE "<errorcode>EPIPE</errorcode> error code">
236<!ENTITY ERANGE "<errorcode>ERANGE</errorcode> error code">
237
238<!-- Subsections -->
239<!ENTITY sub-biblio SYSTEM "v4l/biblio.xml">
240<!ENTITY sub-common SYSTEM "v4l/common.xml">
241<!ENTITY sub-planar-apis SYSTEM "v4l/planar-apis.xml">
242<!ENTITY sub-compat SYSTEM "v4l/compat.xml">
243<!ENTITY sub-controls SYSTEM "v4l/controls.xml">
244<!ENTITY sub-dev-capture SYSTEM "v4l/dev-capture.xml">
245<!ENTITY sub-dev-codec SYSTEM "v4l/dev-codec.xml">
246<!ENTITY sub-dev-event SYSTEM "v4l/dev-event.xml">
247<!ENTITY sub-dev-effect SYSTEM "v4l/dev-effect.xml">
248<!ENTITY sub-dev-osd SYSTEM "v4l/dev-osd.xml">
249<!ENTITY sub-dev-output SYSTEM "v4l/dev-output.xml">
250<!ENTITY sub-dev-overlay SYSTEM "v4l/dev-overlay.xml">
251<!ENTITY sub-dev-radio SYSTEM "v4l/dev-radio.xml">
252<!ENTITY sub-dev-raw-vbi SYSTEM "v4l/dev-raw-vbi.xml">
253<!ENTITY sub-dev-rds SYSTEM "v4l/dev-rds.xml">
254<!ENTITY sub-dev-sliced-vbi SYSTEM "v4l/dev-sliced-vbi.xml">
255<!ENTITY sub-dev-subdev SYSTEM "v4l/dev-subdev.xml">
256<!ENTITY sub-dev-teletext SYSTEM "v4l/dev-teletext.xml">
257<!ENTITY sub-driver SYSTEM "v4l/driver.xml">
258<!ENTITY sub-libv4l SYSTEM "v4l/libv4l.xml">
259<!ENTITY sub-lirc_device_interface SYSTEM "v4l/lirc_device_interface.xml">
260<!ENTITY sub-remote_controllers SYSTEM "v4l/remote_controllers.xml">
261<!ENTITY sub-fdl-appendix SYSTEM "v4l/fdl-appendix.xml">
262<!ENTITY sub-close SYSTEM "v4l/func-close.xml">
263<!ENTITY sub-ioctl SYSTEM "v4l/func-ioctl.xml">
264<!ENTITY sub-mmap SYSTEM "v4l/func-mmap.xml">
265<!ENTITY sub-munmap SYSTEM "v4l/func-munmap.xml">
266<!ENTITY sub-open SYSTEM "v4l/func-open.xml">
267<!ENTITY sub-poll SYSTEM "v4l/func-poll.xml">
268<!ENTITY sub-read SYSTEM "v4l/func-read.xml">
269<!ENTITY sub-select SYSTEM "v4l/func-select.xml">
270<!ENTITY sub-write SYSTEM "v4l/func-write.xml">
271<!ENTITY sub-io SYSTEM "v4l/io.xml">
272<!ENTITY sub-grey SYSTEM "v4l/pixfmt-grey.xml">
273<!ENTITY sub-m420 SYSTEM "v4l/pixfmt-m420.xml">
274<!ENTITY sub-nv12 SYSTEM "v4l/pixfmt-nv12.xml">
275<!ENTITY sub-nv12m SYSTEM "v4l/pixfmt-nv12m.xml">
276<!ENTITY sub-nv12mt SYSTEM "v4l/pixfmt-nv12mt.xml">
277<!ENTITY sub-nv16 SYSTEM "v4l/pixfmt-nv16.xml">
278<!ENTITY sub-packed-rgb SYSTEM "v4l/pixfmt-packed-rgb.xml">
279<!ENTITY sub-packed-yuv SYSTEM "v4l/pixfmt-packed-yuv.xml">
280<!ENTITY sub-sbggr16 SYSTEM "v4l/pixfmt-sbggr16.xml">
281<!ENTITY sub-sbggr8 SYSTEM "v4l/pixfmt-sbggr8.xml">
282<!ENTITY sub-sgbrg8 SYSTEM "v4l/pixfmt-sgbrg8.xml">
283<!ENTITY sub-sgrbg8 SYSTEM "v4l/pixfmt-sgrbg8.xml">
284<!ENTITY sub-uyvy SYSTEM "v4l/pixfmt-uyvy.xml">
285<!ENTITY sub-vyuy SYSTEM "v4l/pixfmt-vyuy.xml">
286<!ENTITY sub-y16 SYSTEM "v4l/pixfmt-y16.xml">
287<!ENTITY sub-y41p SYSTEM "v4l/pixfmt-y41p.xml">
288<!ENTITY sub-yuv410 SYSTEM "v4l/pixfmt-yuv410.xml">
289<!ENTITY sub-yuv411p SYSTEM "v4l/pixfmt-yuv411p.xml">
290<!ENTITY sub-yuv420 SYSTEM "v4l/pixfmt-yuv420.xml">
291<!ENTITY sub-yuv420m SYSTEM "v4l/pixfmt-yuv420m.xml">
292<!ENTITY sub-yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml">
293<!ENTITY sub-yuyv SYSTEM "v4l/pixfmt-yuyv.xml">
294<!ENTITY sub-yvyu SYSTEM "v4l/pixfmt-yvyu.xml">
295<!ENTITY sub-srggb10 SYSTEM "v4l/pixfmt-srggb10.xml">
296<!ENTITY sub-srggb12 SYSTEM "v4l/pixfmt-srggb12.xml">
297<!ENTITY sub-srggb8 SYSTEM "v4l/pixfmt-srggb8.xml">
298<!ENTITY sub-y10 SYSTEM "v4l/pixfmt-y10.xml">
299<!ENTITY sub-y12 SYSTEM "v4l/pixfmt-y12.xml">
300<!ENTITY sub-y10b SYSTEM "v4l/pixfmt-y10b.xml">
301<!ENTITY sub-pixfmt SYSTEM "v4l/pixfmt.xml">
302<!ENTITY sub-cropcap SYSTEM "v4l/vidioc-cropcap.xml">
303<!ENTITY sub-dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml">
304<!ENTITY sub-encoder-cmd SYSTEM "v4l/vidioc-encoder-cmd.xml">
305<!ENTITY sub-enum-fmt SYSTEM "v4l/vidioc-enum-fmt.xml">
306<!ENTITY sub-enum-frameintervals SYSTEM "v4l/vidioc-enum-frameintervals.xml">
307<!ENTITY sub-enum-framesizes SYSTEM "v4l/vidioc-enum-framesizes.xml">
308<!ENTITY sub-enumaudio SYSTEM "v4l/vidioc-enumaudio.xml">
309<!ENTITY sub-enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml">
310<!ENTITY sub-enuminput SYSTEM "v4l/vidioc-enuminput.xml">
311<!ENTITY sub-enumoutput SYSTEM "v4l/vidioc-enumoutput.xml">
312<!ENTITY sub-enum-dv-presets SYSTEM "v4l/vidioc-enum-dv-presets.xml">
313<!ENTITY sub-g-dv-preset SYSTEM "v4l/vidioc-g-dv-preset.xml">
314<!ENTITY sub-query-dv-preset SYSTEM "v4l/vidioc-query-dv-preset.xml">
315<!ENTITY sub-g-dv-timings SYSTEM "v4l/vidioc-g-dv-timings.xml">
316<!ENTITY sub-enumstd SYSTEM "v4l/vidioc-enumstd.xml">
317<!ENTITY sub-g-audio SYSTEM "v4l/vidioc-g-audio.xml">
318<!ENTITY sub-g-audioout SYSTEM "v4l/vidioc-g-audioout.xml">
319<!ENTITY sub-dbg-g-chip-ident SYSTEM "v4l/vidioc-dbg-g-chip-ident.xml">
320<!ENTITY sub-g-crop SYSTEM "v4l/vidioc-g-crop.xml">
321<!ENTITY sub-g-ctrl SYSTEM "v4l/vidioc-g-ctrl.xml">
322<!ENTITY sub-g-enc-index SYSTEM "v4l/vidioc-g-enc-index.xml">
323<!ENTITY sub-g-ext-ctrls SYSTEM "v4l/vidioc-g-ext-ctrls.xml">
324<!ENTITY sub-g-fbuf SYSTEM "v4l/vidioc-g-fbuf.xml">
325<!ENTITY sub-g-fmt SYSTEM "v4l/vidioc-g-fmt.xml">
326<!ENTITY sub-g-frequency SYSTEM "v4l/vidioc-g-frequency.xml">
327<!ENTITY sub-g-input SYSTEM "v4l/vidioc-g-input.xml">
328<!ENTITY sub-g-jpegcomp SYSTEM "v4l/vidioc-g-jpegcomp.xml">
329<!ENTITY sub-g-modulator SYSTEM "v4l/vidioc-g-modulator.xml">
330<!ENTITY sub-g-output SYSTEM "v4l/vidioc-g-output.xml">
331<!ENTITY sub-g-parm SYSTEM "v4l/vidioc-g-parm.xml">
332<!ENTITY sub-g-priority SYSTEM "v4l/vidioc-g-priority.xml">
333<!ENTITY sub-g-sliced-vbi-cap SYSTEM "v4l/vidioc-g-sliced-vbi-cap.xml">
334<!ENTITY sub-g-std SYSTEM "v4l/vidioc-g-std.xml">
335<!ENTITY sub-g-tuner SYSTEM "v4l/vidioc-g-tuner.xml">
336<!ENTITY sub-log-status SYSTEM "v4l/vidioc-log-status.xml">
337<!ENTITY sub-overlay SYSTEM "v4l/vidioc-overlay.xml">
338<!ENTITY sub-qbuf SYSTEM "v4l/vidioc-qbuf.xml">
339<!ENTITY sub-querybuf SYSTEM "v4l/vidioc-querybuf.xml">
340<!ENTITY sub-querycap SYSTEM "v4l/vidioc-querycap.xml">
341<!ENTITY sub-queryctrl SYSTEM "v4l/vidioc-queryctrl.xml">
342<!ENTITY sub-querystd SYSTEM "v4l/vidioc-querystd.xml">
343<!ENTITY sub-reqbufs SYSTEM "v4l/vidioc-reqbufs.xml">
344<!ENTITY sub-s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml">
345<!ENTITY sub-streamon SYSTEM "v4l/vidioc-streamon.xml">
346<!ENTITY sub-subdev-enum-frame-interval SYSTEM "v4l/vidioc-subdev-enum-frame-interval.xml">
347<!ENTITY sub-subdev-enum-frame-size SYSTEM "v4l/vidioc-subdev-enum-frame-size.xml">
348<!ENTITY sub-subdev-enum-mbus-code SYSTEM "v4l/vidioc-subdev-enum-mbus-code.xml">
349<!ENTITY sub-subdev-formats SYSTEM "v4l/subdev-formats.xml">
350<!ENTITY sub-subdev-g-crop SYSTEM "v4l/vidioc-subdev-g-crop.xml">
351<!ENTITY sub-subdev-g-fmt SYSTEM "v4l/vidioc-subdev-g-fmt.xml">
352<!ENTITY sub-subdev-g-frame-interval SYSTEM "v4l/vidioc-subdev-g-frame-interval.xml">
353<!ENTITY sub-capture-c SYSTEM "v4l/capture.c.xml">
354<!ENTITY sub-keytable-c SYSTEM "v4l/keytable.c.xml">
355<!ENTITY sub-v4l2grab-c SYSTEM "v4l/v4l2grab.c.xml">
356<!ENTITY sub-videodev2-h SYSTEM "v4l/videodev2.h.xml">
357<!ENTITY sub-v4l2 SYSTEM "v4l/v4l2.xml">
358<!ENTITY sub-dqevent SYSTEM "v4l/vidioc-dqevent.xml">
359<!ENTITY sub-subscribe-event SYSTEM "v4l/vidioc-subscribe-event.xml">
360<!ENTITY sub-intro SYSTEM "dvb/intro.xml">
361<!ENTITY sub-frontend SYSTEM "dvb/frontend.xml">
362<!ENTITY sub-dvbproperty SYSTEM "dvb/dvbproperty.xml">
363<!ENTITY sub-demux SYSTEM "dvb/demux.xml">
364<!ENTITY sub-video SYSTEM "dvb/video.xml">
365<!ENTITY sub-audio SYSTEM "dvb/audio.xml">
366<!ENTITY sub-ca SYSTEM "dvb/ca.xml">
367<!ENTITY sub-net SYSTEM "dvb/net.xml">
368<!ENTITY sub-kdapi SYSTEM "dvb/kdapi.xml">
369<!ENTITY sub-examples SYSTEM "dvb/examples.xml">
370<!ENTITY sub-frontend-h SYSTEM "dvb/frontend.h.xml">
371<!ENTITY sub-dvbapi SYSTEM "dvb/dvbapi.xml">
372<!ENTITY sub-media SYSTEM "media.xml">
373<!ENTITY sub-media-entities SYSTEM "media-entities.tmpl">
374<!ENTITY sub-media-indices SYSTEM "media-indices.tmpl">
375
376<!ENTITY sub-media-controller SYSTEM "v4l/media-controller.xml">
377<!ENTITY sub-media-func-open SYSTEM "v4l/media-func-open.xml">
378<!ENTITY sub-media-func-close SYSTEM "v4l/media-func-close.xml">
379<!ENTITY sub-media-func-ioctl SYSTEM "v4l/media-func-ioctl.xml">
380<!ENTITY sub-media-ioc-device-info SYSTEM "v4l/media-ioc-device-info.xml">
381<!ENTITY sub-media-ioc-enum-entities SYSTEM "v4l/media-ioc-enum-entities.xml">
382<!ENTITY sub-media-ioc-enum-links SYSTEM "v4l/media-ioc-enum-links.xml">
383<!ENTITY sub-media-ioc-setup-link SYSTEM "v4l/media-ioc-setup-link.xml">
384
385<!-- Function Reference -->
386<!ENTITY close SYSTEM "v4l/func-close.xml">
387<!ENTITY ioctl SYSTEM "v4l/func-ioctl.xml">
388<!ENTITY mmap SYSTEM "v4l/func-mmap.xml">
389<!ENTITY munmap SYSTEM "v4l/func-munmap.xml">
390<!ENTITY open SYSTEM "v4l/func-open.xml">
391<!ENTITY poll SYSTEM "v4l/func-poll.xml">
392<!ENTITY read SYSTEM "v4l/func-read.xml">
393<!ENTITY select SYSTEM "v4l/func-select.xml">
394<!ENTITY write SYSTEM "v4l/func-write.xml">
395<!ENTITY grey SYSTEM "v4l/pixfmt-grey.xml">
396<!ENTITY nv12 SYSTEM "v4l/pixfmt-nv12.xml">
397<!ENTITY nv12m SYSTEM "v4l/pixfmt-nv12m.xml">
398<!ENTITY nv16 SYSTEM "v4l/pixfmt-nv16.xml">
399<!ENTITY packed-rgb SYSTEM "v4l/pixfmt-packed-rgb.xml">
400<!ENTITY packed-yuv SYSTEM "v4l/pixfmt-packed-yuv.xml">
401<!ENTITY sbggr16 SYSTEM "v4l/pixfmt-sbggr16.xml">
402<!ENTITY sbggr8 SYSTEM "v4l/pixfmt-sbggr8.xml">
403<!ENTITY sgbrg8 SYSTEM "v4l/pixfmt-sgbrg8.xml">
404<!ENTITY sgrbg8 SYSTEM "v4l/pixfmt-sgrbg8.xml">
405<!ENTITY uyvy SYSTEM "v4l/pixfmt-uyvy.xml">
406<!ENTITY vyuy SYSTEM "v4l/pixfmt-vyuy.xml">
407<!ENTITY y16 SYSTEM "v4l/pixfmt-y16.xml">
408<!ENTITY y41p SYSTEM "v4l/pixfmt-y41p.xml">
409<!ENTITY yuv410 SYSTEM "v4l/pixfmt-yuv410.xml">
410<!ENTITY yuv411p SYSTEM "v4l/pixfmt-yuv411p.xml">
411<!ENTITY yuv420 SYSTEM "v4l/pixfmt-yuv420.xml">
412<!ENTITY yuv420m SYSTEM "v4l/pixfmt-yuv420m.xml">
413<!ENTITY yuv422p SYSTEM "v4l/pixfmt-yuv422p.xml">
414<!ENTITY yuyv SYSTEM "v4l/pixfmt-yuyv.xml">
415<!ENTITY yvyu SYSTEM "v4l/pixfmt-yvyu.xml">
416<!ENTITY srggb10 SYSTEM "v4l/pixfmt-srggb10.xml">
417<!ENTITY srggb8 SYSTEM "v4l/pixfmt-srggb8.xml">
418<!ENTITY y10 SYSTEM "v4l/pixfmt-y10.xml">
419<!ENTITY cropcap SYSTEM "v4l/vidioc-cropcap.xml">
420<!ENTITY dbg-g-register SYSTEM "v4l/vidioc-dbg-g-register.xml">
421<!ENTITY encoder-cmd SYSTEM "v4l/vidioc-encoder-cmd.xml">
422<!ENTITY enum-fmt SYSTEM "v4l/vidioc-enum-fmt.xml">
423<!ENTITY enum-frameintervals SYSTEM "v4l/vidioc-enum-frameintervals.xml">
424<!ENTITY enum-framesizes SYSTEM "v4l/vidioc-enum-framesizes.xml">
425<!ENTITY enumaudio SYSTEM "v4l/vidioc-enumaudio.xml">
426<!ENTITY enumaudioout SYSTEM "v4l/vidioc-enumaudioout.xml">
427<!ENTITY enuminput SYSTEM "v4l/vidioc-enuminput.xml">
428<!ENTITY enumoutput SYSTEM "v4l/vidioc-enumoutput.xml">
429<!ENTITY enum-dv-presets SYSTEM "v4l/vidioc-enum-dv-presets.xml">
430<!ENTITY g-dv-preset SYSTEM "v4l/vidioc-g-dv-preset.xml">
431<!ENTITY query-dv-preset SYSTEM "v4l/vidioc-query-dv-preset.xml">
432<!ENTITY g-dv-timings SYSTEM "v4l/vidioc-g-dv-timings.xml">
433<!ENTITY enumstd SYSTEM "v4l/vidioc-enumstd.xml">
434<!ENTITY g-audio SYSTEM "v4l/vidioc-g-audio.xml">
435<!ENTITY g-audioout SYSTEM "v4l/vidioc-g-audioout.xml">
436<!ENTITY dbg-g-chip-ident SYSTEM "v4l/vidioc-dbg-g-chip-ident.xml">
437<!ENTITY g-crop SYSTEM "v4l/vidioc-g-crop.xml">
438<!ENTITY g-ctrl SYSTEM "v4l/vidioc-g-ctrl.xml">
439<!ENTITY g-enc-index SYSTEM "v4l/vidioc-g-enc-index.xml">
440<!ENTITY g-ext-ctrls SYSTEM "v4l/vidioc-g-ext-ctrls.xml">
441<!ENTITY g-fbuf SYSTEM "v4l/vidioc-g-fbuf.xml">
442<!ENTITY g-fmt SYSTEM "v4l/vidioc-g-fmt.xml">
443<!ENTITY g-frequency SYSTEM "v4l/vidioc-g-frequency.xml">
444<!ENTITY g-input SYSTEM "v4l/vidioc-g-input.xml">
445<!ENTITY g-jpegcomp SYSTEM "v4l/vidioc-g-jpegcomp.xml">
446<!ENTITY g-modulator SYSTEM "v4l/vidioc-g-modulator.xml">
447<!ENTITY g-output SYSTEM "v4l/vidioc-g-output.xml">
448<!ENTITY g-parm SYSTEM "v4l/vidioc-g-parm.xml">
449<!ENTITY g-priority SYSTEM "v4l/vidioc-g-priority.xml">
450<!ENTITY g-sliced-vbi-cap SYSTEM "v4l/vidioc-g-sliced-vbi-cap.xml">
451<!ENTITY g-std SYSTEM "v4l/vidioc-g-std.xml">
452<!ENTITY g-tuner SYSTEM "v4l/vidioc-g-tuner.xml">
453<!ENTITY log-status SYSTEM "v4l/vidioc-log-status.xml">
454<!ENTITY overlay SYSTEM "v4l/vidioc-overlay.xml">
455<!ENTITY qbuf SYSTEM "v4l/vidioc-qbuf.xml">
456<!ENTITY querybuf SYSTEM "v4l/vidioc-querybuf.xml">
457<!ENTITY querycap SYSTEM "v4l/vidioc-querycap.xml">
458<!ENTITY queryctrl SYSTEM "v4l/vidioc-queryctrl.xml">
459<!ENTITY querystd SYSTEM "v4l/vidioc-querystd.xml">
460<!ENTITY reqbufs SYSTEM "v4l/vidioc-reqbufs.xml">
461<!ENTITY s-hw-freq-seek SYSTEM "v4l/vidioc-s-hw-freq-seek.xml">
462<!ENTITY streamon SYSTEM "v4l/vidioc-streamon.xml">
463<!ENTITY dqevent SYSTEM "v4l/vidioc-dqevent.xml">
464<!ENTITY subscribe_event SYSTEM "v4l/vidioc-subscribe-event.xml">
diff --git a/Documentation/DocBook/media-indices.tmpl b/Documentation/DocBook/media-indices.tmpl
deleted file mode 100644
index 78d6031de00..00000000000
--- a/Documentation/DocBook/media-indices.tmpl
+++ /dev/null
@@ -1,89 +0,0 @@
1<!-- Generated file! Do not edit. -->
2
3<index><title>List of Types</title>
4<indexentry><primaryie><link linkend='v4l2-std-id'>v4l2_std_id</link></primaryie></indexentry>
5<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-buf-type'>v4l2_buf_type</link></primaryie></indexentry>
6<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-colorspace'>v4l2_colorspace</link></primaryie></indexentry>
7<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-ctrl-type'>v4l2_ctrl_type</link></primaryie></indexentry>
8<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-exposure-auto-type'>v4l2_exposure_auto_type</link></primaryie></indexentry>
9<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-field'>v4l2_field</link></primaryie></indexentry>
10<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-frmivaltypes'>v4l2_frmivaltypes</link></primaryie></indexentry>
11<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-frmsizetypes'>v4l2_frmsizetypes</link></primaryie></indexentry>
12<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-memory'>v4l2_memory</link></primaryie></indexentry>
13<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-ac3-bitrate'>v4l2_mpeg_audio_ac3_bitrate</link></primaryie></indexentry>
14<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-crc'>v4l2_mpeg_audio_crc</link></primaryie></indexentry>
15<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-emphasis'>v4l2_mpeg_audio_emphasis</link></primaryie></indexentry>
16<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-encoding'>v4l2_mpeg_audio_encoding</link></primaryie></indexentry>
17<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-l1-bitrate'>v4l2_mpeg_audio_l1_bitrate</link></primaryie></indexentry>
18<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-l2-bitrate'>v4l2_mpeg_audio_l2_bitrate</link></primaryie></indexentry>
19<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-l3-bitrate'>v4l2_mpeg_audio_l3_bitrate</link></primaryie></indexentry>
20<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-mode'>v4l2_mpeg_audio_mode</link></primaryie></indexentry>
21<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-mode-extension'>v4l2_mpeg_audio_mode_extension</link></primaryie></indexentry>
22<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-audio-sampling-freq'>v4l2_mpeg_audio_sampling_freq</link></primaryie></indexentry>
23<indexentry><primaryie>enum&nbsp;<link linkend='chroma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link></primaryie></indexentry>
24<indexentry><primaryie>enum&nbsp;<link linkend='luma-spatial-filter-type'>v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link></primaryie></indexentry>
25<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-cx2341x-video-median-filter-type'>v4l2_mpeg_cx2341x_video_median_filter_type</link></primaryie></indexentry>
26<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-cx2341x-video-spatial-filter-mode'>v4l2_mpeg_cx2341x_video_spatial_filter_mode</link></primaryie></indexentry>
27<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-cx2341x-video-temporal-filter-mode'>v4l2_mpeg_cx2341x_video_temporal_filter_mode</link></primaryie></indexentry>
28<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-stream-type'>v4l2_mpeg_stream_type</link></primaryie></indexentry>
29<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-stream-vbi-fmt'>v4l2_mpeg_stream_vbi_fmt</link></primaryie></indexentry>
30<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-video-aspect'>v4l2_mpeg_video_aspect</link></primaryie></indexentry>
31<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-video-bitrate-mode'>v4l2_mpeg_video_bitrate_mode</link></primaryie></indexentry>
32<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-mpeg-video-encoding'>v4l2_mpeg_video_encoding</link></primaryie></indexentry>
33<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-power-line-frequency'>v4l2_power_line_frequency</link></primaryie></indexentry>
34<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-priority'>v4l2_priority</link></primaryie></indexentry>
35<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-tuner-type'>v4l2_tuner_type</link></primaryie></indexentry>
36<indexentry><primaryie>enum&nbsp;<link linkend='v4l2-preemphasis'>v4l2_preemphasis</link></primaryie></indexentry>
37<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-audio'>v4l2_audio</link></primaryie></indexentry>
38<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-audioout'>v4l2_audioout</link></primaryie></indexentry>
39<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-bt-timings'>v4l2_bt_timings</link></primaryie></indexentry>
40<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-buffer'>v4l2_buffer</link></primaryie></indexentry>
41<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-capability'>v4l2_capability</link></primaryie></indexentry>
42<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-captureparm'>v4l2_captureparm</link></primaryie></indexentry>
43<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-clip'>v4l2_clip</link></primaryie></indexentry>
44<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-control'>v4l2_control</link></primaryie></indexentry>
45<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-crop'>v4l2_crop</link></primaryie></indexentry>
46<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-cropcap'>v4l2_cropcap</link></primaryie></indexentry>
47<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-dbg-chip-ident'>v4l2_dbg_chip_ident</link></primaryie></indexentry>
48<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-dbg-match'>v4l2_dbg_match</link></primaryie></indexentry>
49<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-dbg-register'>v4l2_dbg_register</link></primaryie></indexentry>
50<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-dv-enum-preset'>v4l2_dv_enum_preset</link></primaryie></indexentry>
51<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-dv-preset'>v4l2_dv_preset</link></primaryie></indexentry>
52<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-dv-timings'>v4l2_dv_timings</link></primaryie></indexentry>
53<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-enc-idx'>v4l2_enc_idx</link></primaryie></indexentry>
54<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-enc-idx-entry'>v4l2_enc_idx_entry</link></primaryie></indexentry>
55<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-encoder-cmd'>v4l2_encoder_cmd</link></primaryie></indexentry>
56<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-ext-control'>v4l2_ext_control</link></primaryie></indexentry>
57<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-ext-controls'>v4l2_ext_controls</link></primaryie></indexentry>
58<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-fmtdesc'>v4l2_fmtdesc</link></primaryie></indexentry>
59<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-format'>v4l2_format</link></primaryie></indexentry>
60<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-fract'>v4l2_fract</link></primaryie></indexentry>
61<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-framebuffer'>v4l2_framebuffer</link></primaryie></indexentry>
62<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-frequency'>v4l2_frequency</link></primaryie></indexentry>
63<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-frmival-stepwise'>v4l2_frmival_stepwise</link></primaryie></indexentry>
64<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-frmivalenum'>v4l2_frmivalenum</link></primaryie></indexentry>
65<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-frmsize-discrete'>v4l2_frmsize_discrete</link></primaryie></indexentry>
66<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-frmsize-stepwise'>v4l2_frmsize_stepwise</link></primaryie></indexentry>
67<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-frmsizeenum'>v4l2_frmsizeenum</link></primaryie></indexentry>
68<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-hw-freq-seek'>v4l2_hw_freq_seek</link></primaryie></indexentry>
69<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-input'>v4l2_input</link></primaryie></indexentry>
70<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-jpegcompression'>v4l2_jpegcompression</link></primaryie></indexentry>
71<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-modulator'>v4l2_modulator</link></primaryie></indexentry>
72<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-mpeg-vbi-fmt-ivtv'>v4l2_mpeg_vbi_fmt_ivtv</link></primaryie></indexentry>
73<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-output'>v4l2_output</link></primaryie></indexentry>
74<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-outputparm'>v4l2_outputparm</link></primaryie></indexentry>
75<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-pix-format'>v4l2_pix_format</link></primaryie></indexentry>
76<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-queryctrl'>v4l2_queryctrl</link></primaryie></indexentry>
77<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-querymenu'>v4l2_querymenu</link></primaryie></indexentry>
78<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-rect'>v4l2_rect</link></primaryie></indexentry>
79<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-requestbuffers'>v4l2_requestbuffers</link></primaryie></indexentry>
80<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-sliced-vbi-cap'>v4l2_sliced_vbi_cap</link></primaryie></indexentry>
81<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-sliced-vbi-data'>v4l2_sliced_vbi_data</link></primaryie></indexentry>
82<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-sliced-vbi-format'>v4l2_sliced_vbi_format</link></primaryie></indexentry>
83<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-standard'>v4l2_standard</link></primaryie></indexentry>
84<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-streamparm'>v4l2_streamparm</link></primaryie></indexentry>
85<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-timecode'>v4l2_timecode</link></primaryie></indexentry>
86<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-tuner'>v4l2_tuner</link></primaryie></indexentry>
87<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-vbi-format'>v4l2_vbi_format</link></primaryie></indexentry>
88<indexentry><primaryie>struct&nbsp;<link linkend='v4l2-window'>v4l2_window</link></primaryie></indexentry>
89</index>
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile
new file mode 100644
index 00000000000..6628b4b9cac
--- /dev/null
+++ b/Documentation/DocBook/media/Makefile
@@ -0,0 +1,386 @@
1###
2# Media build rules - Auto-generates media contents/indexes and *.h xml's
3#
4
5SHELL=/bin/bash
6
7MEDIA_OBJ_DIR=$(objtree)/Documentation/DocBook/
8MEDIA_SRC_DIR=$(srctree)/Documentation/DocBook/media
9
10MEDIA_TEMP = media-entities.tmpl \
11 media-indices.tmpl \
12 videodev2.h.xml \
13 v4l2.xml \
14 audio.h.xml \
15 ca.h.xml \
16 dmx.h.xml \
17 frontend.h.xml \
18 net.h.xml \
19 video.h.xml \
20
21IMGFILES := $(patsubst %.b64,%, $(notdir $(shell ls $(MEDIA_SRC_DIR)/*.b64)))
22OBJIMGFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(IMGFILES))
23GENFILES := $(addprefix $(MEDIA_OBJ_DIR)/, $(MEDIA_TEMP))
24
25PHONY += cleanmediadocs
26
27cleanmediadocs:
28 -@rm `find $(MEDIA_OBJ_DIR) -type l` $(GENFILES) $(OBJIMGFILES) 2>/dev/null
29
30$(obj)/media_api.xml: $(GENFILES) FORCE
31
32#$(MEDIA_OBJ_DIR)/media_api.html: $(MEDIA_OBJ_DIR)/media_api.xml
33#$(MEDIA_OBJ_DIR)/media_api.pdf: $(MEDIA_OBJ_DIR)/media_api.xml
34#$(MEDIA_OBJ_DIR)/media_api.ps: $(MEDIA_OBJ_DIR)/media_api.xml
35
36V4L_SGMLS = \
37 $(shell ls $(MEDIA_SRC_DIR)/v4l/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)') \
38 capture.c.xml \
39 keytable.c.xml \
40 v4l2grab.c.xml
41
42DVB_SGMLS = \
43 $(shell ls $(MEDIA_SRC_DIR)/dvb/*.xml|perl -ne 'print "$$1 " if (m,.*/(.*)\n,)')
44
45MEDIA_SGMLS = $(addprefix ./,$(V4L_SGMLS)) $(addprefix ./,$(DVB_SGMLS)) $(addprefix ./,$(MEDIA_TEMP))
46
47FUNCS = \
48 close \
49 ioctl \
50 mmap \
51 munmap \
52 open \
53 poll \
54 read \
55 select \
56 write \
57
58IOCTLS = \
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) \
68 VIDIOC_SUBDEV_G_FRAME_INTERVAL \
69 VIDIOC_SUBDEV_S_FRAME_INTERVAL \
70 VIDIOC_SUBDEV_ENUM_MBUS_CODE \
71 VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
72 VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
73
74TYPES = \
75 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \
76 $(shell perl -ne 'print "$$1 " if /^}\s+([a-z0-9_]+_t)/' $(srctree)/include/linux/dvb/frontend.h)
77
78ENUMS = \
79 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \
80 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/audio.h) \
81 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/ca.h) \
82 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/dmx.h) \
83 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/frontend.h) \
84 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/net.h) \
85 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/dvb/video.h) \
86 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \
87 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h) \
88 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h)
89
90STRUCTS = \
91 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/videodev2.h) \
92 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/linux/dvb/audio.h) \
93 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/ca.h) \
94 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/dmx.h) \
95 $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/frontend.h) \
96 $(shell perl -ne 'print "$$1 " if (/^struct\s+([A-Z][^\s]+)\s+/)' $(srctree)/include/linux/dvb/net.h) \
97 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/linux/dvb/video.h) \
98 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/media.h) \
99 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-subdev.h) \
100 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/v4l2-mediabus.h)
101
102ERRORS = \
103 E2BIG \
104 EACCES \
105 EAGAIN \
106 EBADF \
107 EBADFD \
108 EBADR \
109 EBADRQC \
110 EBUSY \
111 ECHILD \
112 ECONNRESET \
113 EDEADLK \
114 EDOM \
115 EEXIST \
116 EFAULT \
117 EFBIG \
118 EILSEQ \
119 EINIT \
120 EINPROGRESS \
121 EINTR \
122 EINVAL \
123 EIO \
124 EMFILE \
125 ENFILE \
126 ENOBUFS \
127 ENODATA \
128 ENODEV \
129 ENOENT \
130 ENOIOCTLCMD \
131 ENOMEM \
132 ENOSPC \
133 ENOSR \
134 ENOSYS \
135 ENOTSUP \
136 ENOTSUPP \
137 ENOTTY \
138 ENXIO \
139 EOPNOTSUPP \
140 EOVERFLOW \
141 EPERM \
142 EPIPE \
143 EPROTO \
144 ERANGE \
145 EREMOTE \
146 EREMOTEIO \
147 ERESTART \
148 ERESTARTSYS \
149 ESHUTDOWN \
150 ESPIPE \
151 ETIME \
152 ETIMEDOUT \
153 EUSERS \
154 EWOULDBLOCK \
155 EXDEV \
156
157ESCAPE = \
158 -e "s/&/\\&amp;/g" \
159 -e "s/</\\&lt;/g" \
160 -e "s/>/\\&gt;/g"
161
162FILENAME = \
163 -e s,"^[^\/]*/",, \
164 -e s/"\\.xml"// \
165 -e s/"\\.tmpl"// \
166 -e s/\\\./-/g \
167 -e s/"^func-"// \
168 -e s/"^pixfmt-"// \
169 -e s/"^vidioc-"//
170
171# Generate references to these structs in videodev2.h.xml.
172DOCUMENTED = \
173 -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \
174 -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \
175 -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\) /<link linkend=\"\1\">\1<\/link> /g" \
176 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
177 -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g"
178
179DVB_DOCUMENTED = \
180 -e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \
181 -e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
182 -e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \
183 -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
184 -e "s,<link\s\+linkend=\".*\">\(DTV_IOCTL_MAX_MSGS\|dtv_cmds_h\|__.*_old\)<\/link>,\1,g" \
185 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
186 -e "s,\(audio-mixer\|audio-karaoke\|audio-status\|ca-slot-info\|ca-descr-info\|ca-caps\|ca-msg\|ca-descr\|ca-pid\|dmx-filter\|dmx-caps\|video-system\|video-highlight\|video-spu\|video-spu-palette\|video-navi-pack\)-t,\1,g" \
187 -e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \
188 -e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
189 -e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \
190
191#
192# Media targets and dependencies
193#
194
195install_media_images = \
196 $(Q)cp $(OBJIMGFILES) $(MEDIA_OBJ_DIR)/media_api
197
198$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
199 $(Q)base64 -d $< >$@
200
201$(MEDIA_OBJ_DIR)/v4l2.xml: $(OBJIMGFILES)
202 @$($(quiet)gen_xml)
203 @(ln -sf $(MEDIA_SRC_DIR)/v4l/*xml $(MEDIA_OBJ_DIR)/)
204 @(ln -sf $(MEDIA_SRC_DIR)/dvb/*xml $(MEDIA_OBJ_DIR)/)
205
206$(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml
207 @$($(quiet)gen_xml)
208 @( \
209 echo "<programlisting>") > $@
210 @( \
211 expand --tabs=8 < $< | \
212 sed $(ESCAPE) $(DOCUMENTED) | \
213 sed 's/i\.e\./&ie;/') >> $@
214 @( \
215 echo "</programlisting>") >> $@
216
217$(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/linux/dvb/audio.h $(MEDIA_OBJ_DIR)/v4l2.xml
218 @$($(quiet)gen_xml)
219 @( \
220 echo "<programlisting>") > $@
221 @( \
222 expand --tabs=8 < $< | \
223 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
224 sed 's/i\.e\./&ie;/') >> $@
225 @( \
226 echo "</programlisting>") >> $@
227
228$(MEDIA_OBJ_DIR)/ca.h.xml: $(srctree)/include/linux/dvb/ca.h $(MEDIA_OBJ_DIR)/v4l2.xml
229 @$($(quiet)gen_xml)
230 @( \
231 echo "<programlisting>") > $@
232 @( \
233 expand --tabs=8 < $< | \
234 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
235 sed 's/i\.e\./&ie;/') >> $@
236 @( \
237 echo "</programlisting>") >> $@
238
239$(MEDIA_OBJ_DIR)/dmx.h.xml: $(srctree)/include/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml
240 @$($(quiet)gen_xml)
241 @( \
242 echo "<programlisting>") > $@
243 @( \
244 expand --tabs=8 < $< | \
245 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
246 sed 's/i\.e\./&ie;/') >> $@
247 @( \
248 echo "</programlisting>") >> $@
249
250$(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml
251 @$($(quiet)gen_xml)
252 @( \
253 echo "<programlisting>") > $@
254 @( \
255 expand --tabs=8 < $< | \
256 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
257 sed 's/i\.e\./&ie;/') >> $@
258 @( \
259 echo "</programlisting>") >> $@
260
261$(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml
262 @$($(quiet)gen_xml)
263 @( \
264 echo "<programlisting>") > $@
265 @( \
266 expand --tabs=8 < $< | \
267 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
268 sed 's/i\.e\./&ie;/') >> $@
269 @( \
270 echo "</programlisting>") >> $@
271
272$(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml
273 @$($(quiet)gen_xml)
274 @( \
275 echo "<programlisting>") > $@
276 @( \
277 expand --tabs=8 < $< | \
278 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
279 sed 's/i\.e\./&ie;/') >> $@
280 @( \
281 echo "</programlisting>") >> $@
282
283$(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
284 @$($(quiet)gen_xml)
285 @( \
286 echo "<!-- Generated file! Do not edit. -->") >$@
287 @( \
288 echo -e "\n<!-- Functions -->") >>$@
289 @( \
290 for ident in $(FUNCS) ; do \
291 entity=`echo $$ident | tr _ -` ; \
292 echo "<!ENTITY func-$$entity \"<link" \
293 "linkend='func-$$entity'><function>$$ident()</function></link>\">" \
294 >>$@ ; \
295 done)
296 @( \
297 echo -e "\n<!-- Ioctls -->") >>$@
298 @( \
299 for ident in $(IOCTLS) ; do \
300 entity=`echo $$ident | tr _ -` ; \
301 id=`grep "<refname>$$ident" $(MEDIA_OBJ_DIR)/vidioc-*.xml | sed -r s,"^.*/(.*).xml.*","\1",` ; \
302 echo "<!ENTITY $$entity \"<link" \
303 "linkend='$$id'><constant>$$ident</constant></link>\">" \
304 >>$@ ; \
305 done)
306 @( \
307 echo -e "\n<!-- Types -->") >>$@
308 @( \
309 for ident in $(TYPES) ; do \
310 entity=`echo $$ident | tr _ -` ; \
311 echo "<!ENTITY $$entity \"<link" \
312 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
313 done)
314 @( \
315 echo -e "\n<!-- Enums -->") >>$@
316 @( \
317 for ident in $(ENUMS) ; do \
318 entity=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -` ; \
319 echo "<!ENTITY $$entity \"enum&nbsp;<link" \
320 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
321 done)
322 @( \
323 echo -e "\n<!-- Structures -->") >>$@
324 @( \
325 for ident in $(STRUCTS) ; do \
326 entity=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
327 echo "<!ENTITY $$entity \"struct&nbsp;<link" \
328 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
329 done)
330 @( \
331 echo -e "\n<!-- Error Codes -->") >>$@
332 @( \
333 for ident in $(ERRORS) ; do \
334 echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
335 "error code\">" >>$@ ; \
336 done)
337 @( \
338 echo -e "\n<!-- Subsections -->") >>$@
339 @( \
340 for file in $(MEDIA_SGMLS) ; do \
341 entity=`echo "$$file" | sed $(FILENAME) -e s/"^([^-]*)"/sub\1/` ; \
342 if ! echo "$$file" | \
343 grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
344 echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \
345 fi ; \
346 done)
347 @( \
348 echo -e "\n<!-- Function Reference -->") >>$@
349 @( \
350 for file in $(MEDIA_SGMLS) ; do \
351 if echo "$$file" | \
352 grep -q -E -e '(func|vidioc|pixfmt)-' ; then \
353 entity=`echo "$$file" |sed $(FILENAME)` ; \
354 echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \
355 fi ; \
356 done)
357
358# Jade can auto-generate a list-of-tables, which includes all structs,
359# but we only want data types, all types, and sorted please.
360$(MEDIA_OBJ_DIR)/media-indices.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
361 @$($(quiet)gen_xml)
362 @( \
363 echo "<!-- Generated file! Do not edit. -->") >$@
364 @( \
365 echo -e "\n<index><title>List of Types</title>") >>$@
366 @( \
367 for ident in $(TYPES) ; do \
368 id=`echo $$ident | tr _ -` ; \
369 echo "<indexentry><primaryie><link" \
370 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
371 done)
372 @( \
373 for ident in $(ENUMS) ; do \
374 id=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -`; \
375 echo "<indexentry><primaryie>enum&nbsp;<link" \
376 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
377 done)
378 @( \
379 for ident in $(STRUCTS) ; do \
380 id=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
381 echo "<indexentry><primaryie>struct&nbsp;<link" \
382 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
383 done)
384 @( \
385 echo "</index>") >>$@
386
diff --git a/Documentation/DocBook/media/bayer.png.b64 b/Documentation/DocBook/media/bayer.png.b64
new file mode 100644
index 00000000000..ccdf2bcda95
--- /dev/null
+++ b/Documentation/DocBook/media/bayer.png.b64
@@ -0,0 +1,171 @@
1iVBORw0KGgoAAAANSUhEUgAAAlgAAACqCAMAAABGfcHVAAAAAXNSR0IArs4c6QAAAwBQTFRFAAIA
2CAICAAQVEQEBAgsAJgECAAogAwsTAQopHQYBNAEAAAxNARQAERIQAhoDABwAABZEHRQKGRYKQw0F
3ACMBACUAERwpHR4cVRAFBR5rZhADACR2JiIhBDAGAiWGgQ4AcxQABDYACSeQMSYlJykmESxYlQ4A
4PSYZIS05OSsJHS5JOC8kAEMDUC8SADXLNDUzADbEAEsAADX/2RABCFIAAD/qxB0AAD//BFgAK0Vp
5WT4r3hwA3RsTRERAAEf/5CIA2iYCCUv+WUgz7iIAOk5g3CgVSU5SiD8uB2sABm8AE1X/U1RQOFyL
64jkfIlz/RV98M1j+G2H/fVk23jtD4T0pXl9ieFtGcV894UIiYWJfAIwA50gOV2p+4kssO2j+dGZx
7bG1qVmj/OHH/aHJzfnBX5lQ7B50AZnahdXd0AKUG5V1ARnz/6mErCqgAAKsAent46GBIW4GhAK0A
8AK8B42FtALIOin9/ALUAiIOBALkAVIf/6WxWg4eBi4SKJrEAmoVtdY2geoP/rYVXhoyOqYVuJbUh
9IrgWX5D/jo6J7nszP7gAsI9S63xnN70zZqO/fZzCOb4+cZr+64dy8otYnJ6b7ImDRcM56IqcWMEo
10oJb/N8ZoTMRL7Y9/QchcsaOTo6eohaj/7ZqKXspXj6v9xal+oK+7d7vTUM+Afco5r7CumLTVStKV
11bs9ukbb/9qx/9q9l8queoLv/e9R66beG7rDImNRhi9aDwsPAs8bWzcK2cd67jtqP5MWUodyB8b+1
12tMr/z8L/j9+kbOXWnN2ZstD7yc7Rzs7Ly9xb183UwdD/+si/qeOmvuKIx9fj4tPCtuWiqOrL+tS2
13y9v++NPK2dvZt+m0ueq80+Wo3OeSwuy/yezG+d7f/eS/z/DS3uf/6Ono4PC71O39xPb02vPZ/+nR
14+Ori6e399+vt+PGz+ur65fL55/Xb4vbh7ffX/PPY8vP9+vLy6Pf36fjr/PfM8vjr//f+/vn48P36
159vv+/vzf+fv4/fvu//z7+v7//P/7/v/8//QpxAAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAFY8AABWW
16AQ2TT8cAAAAHdElNRQfaCRQXGSltwbPRAAAgAElEQVR42u2dDXwU1bXAZwEJtEaNH1nbh68fpoWK
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
diff --git a/Documentation/DocBook/media/crop.gif.b64 b/Documentation/DocBook/media/crop.gif.b64
new file mode 100644
index 00000000000..11d936ae72e
--- /dev/null
+++ b/Documentation/DocBook/media/crop.gif.b64
@@ -0,0 +1,105 @@
1R0lGODlhuQJGAeMAAAAAAH9/fwCvAP8AANEA0dEAAK8Ar////wCOAAAA0QAA////////////////
2/////ywAAAAAuQJGAQAE/vDISau9OOvNu/9gKI5kaZ5oqq5s675wLM90bd94ru987//AoHBILBqP
3yKRyyWw6n9CodEqtWq/YrHbL7Xq/4LB4TC6bz+i0es1uu9/wuHxOr9vv+Lx+z+/7/4CBgoOEhYaH
4iImKi4yNjo+QkZKTlJWWl5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6gQC9vr/A
5wcLDxMXGx8jJysvMzc7P0NHS09TV1tfYxbth2d3e3+DRAePk5ebn6Onl4ezt7u3q8fLqANtg7/j5
6+s/z/f4B+wIKHAjsn8F09ex5IciwobuDEM1Bi0ixosWLGDNqrJhQIZdk/htDihxJsiTJiSZTqlzJ
7MmNHj1q+tRznsKbNmzhzDoz3EiYWmTN7+vQJgOfQmN5mAjzKtCg9pj+TBoU61ClCqlaAthSKVZdV
8dFy7NtHKMqxYW1/PmT2bhOzKtWxlpZUYF4pblXDrvpq7Tq+Tu+UGCB5MuLDhw4gTK17MuLHjx5Aj
9S55MubLly5gza95MmVxev0EAkxsg8jNoVXNJ0zy9RPQ41RtNsz6V2vPstlLTwdYo+zap2qt9G3Ed
10YLdL4bGAL0VOhLhxjL2Zf1IeXboM56Wtt6KuPXRudM8vVu+eiTt5H9hDjj9vyfyIXrTW80gfO4OC
11+/jz69/Pv7///wAG/ijggAQWaOCBCCao4IIMNujggRe4J4IwBxBg4YUYZqjhhhx26OGHIIYo4ogk
12loihMBbi1k084VlklgLsWQKjBRJqgIwEBJRyY4UqZsNidhjMGOMkQlLgnjERwkdBjuVpk2QFTB5B
13H2/2DUlJkRNYhWQKUTKyJQpdFjHlcUFaSaQxo9nGQph/fCkDm0OMCV2VZh7iZpbnwCYfBnDKcecO
14fXq3ojotckRnnXr8SQGWEtQIphuKEhEoEHKKdygHCUiQ6QEJdDrEphWA2oGo3UXaAaMHOHrCpFmY
152gSr6H2XJ5AXoHqBp5xyuimpPfCa6we+6uWqCaiqagKsTAxrBbLz/slqTqEUvWgBqLviSqqvnXpq
16rbbZTpDtt9ziSsG3unKraabkltutWMq+UOyswa3A7A/tfjGvDpW6eKm3v+a667i38vvvuQLzW7Cm
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
diff --git a/Documentation/DocBook/dvb/.gitignore b/Documentation/DocBook/media/dvb/.gitignore
index d7ec32eafac..d7ec32eafac 100644
--- a/Documentation/DocBook/dvb/.gitignore
+++ b/Documentation/DocBook/media/dvb/.gitignore
diff --git a/Documentation/DocBook/dvb/audio.xml b/Documentation/DocBook/media/dvb/audio.xml
index eeb96b8a086..a7ea56c71a2 100644
--- a/Documentation/DocBook/dvb/audio.xml
+++ b/Documentation/DocBook/media/dvb/audio.xml
@@ -1,12 +1,16 @@
1<title>DVB Audio Device</title> 1<title>DVB Audio Device</title>
2<para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It 2<para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It
3can be accessed through <emphasis role="tt">/dev/dvb/adapter0/audio0</emphasis>. Data types and and 3can be accessed through <emphasis role="tt">/dev/dvb/adapter0/audio0</emphasis>. Data types and and
4ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/video.h</emphasis> in your 4ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/audio.h</emphasis> in your
5application. 5application.
6</para> 6</para>
7<para>Please note that some DVB cards don&#8217;t have their own MPEG decoder, which results in 7<para>Please note that some DVB cards don&#8217;t have their own MPEG decoder, which results in
8the omission of the audio and video device. 8the omission of the audio and video device.
9</para> 9</para>
10<para>
11These ioctls were also used by V4L2 to control MPEG decoders implemented in V4L2. The use
12of these ioctls for that purpose has been made obsolete and proper V4L2 ioctls or controls
13have been created to replace that functionality.</para>
10 14
11<section id="audio_data_types"> 15<section id="audio_data_types">
12<title>Audio Data Types</title> 16<title>Audio Data Types</title>
@@ -14,17 +18,17 @@ the omission of the audio and video device.
14audio device. 18audio device.
15</para> 19</para>
16 20
17<section id="audio_stream_source_t"> 21<section id="audio-stream-source-t">
18<title>audio_stream_source_t</title> 22<title>audio_stream_source_t</title>
19<para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take 23<para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take
20the following values, depending on whether we are replaying from an internal (demux) or 24the following values, depending on whether we are replaying from an internal (demux) or
21external (user write) source. 25external (user write) source.
22</para> 26</para>
23<programlisting> 27<programlisting>
24 typedef enum { 28typedef enum {
25 AUDIO_SOURCE_DEMUX, 29 AUDIO_SOURCE_DEMUX,
26 AUDIO_SOURCE_MEMORY 30 AUDIO_SOURCE_MEMORY
27 } audio_stream_source_t; 31} audio_stream_source_t;
28</programlisting> 32</programlisting>
29<para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the 33<para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
30DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY 34DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY
@@ -33,61 +37,64 @@ call.
33</para> 37</para>
34 38
35</section> 39</section>
36<section id="audio_play_state_t"> 40<section id="audio-play-state-t">
37<title>audio_play_state_t</title> 41<title>audio_play_state_t</title>
38<para>The following values can be returned by the AUDIO_GET_STATUS call representing the 42<para>The following values can be returned by the AUDIO_GET_STATUS call representing the
39state of audio playback. 43state of audio playback.
40</para> 44</para>
41<programlisting> 45<programlisting>
42 typedef enum { 46typedef enum {
43 AUDIO_STOPPED, 47 AUDIO_STOPPED,
44 AUDIO_PLAYING, 48 AUDIO_PLAYING,
45 AUDIO_PAUSED 49 AUDIO_PAUSED
46 } audio_play_state_t; 50} audio_play_state_t;
47</programlisting> 51</programlisting>
48 52
49</section> 53</section>
50<section id="audio_channel_select_t"> 54<section id="audio-channel-select-t">
51<title>audio_channel_select_t</title> 55<title>audio_channel_select_t</title>
52<para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the 56<para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the
53following values. 57following values.
54</para> 58</para>
55<programlisting> 59<programlisting>
56 typedef enum { 60typedef enum {
57 AUDIO_STEREO, 61 AUDIO_STEREO,
58 AUDIO_MONO_LEFT, 62 AUDIO_MONO_LEFT,
59 AUDIO_MONO_RIGHT, 63 AUDIO_MONO_RIGHT,
60 } audio_channel_select_t; 64 AUDIO_MONO,
65 AUDIO_STEREO_SWAPPED
66} audio_channel_select_t;
61</programlisting> 67</programlisting>
62 68
63</section> 69</section>
64<section id="struct_audio_status"> 70<section id="audio-status">
65<title>struct audio_status</title> 71<title>struct audio_status</title>
66<para>The AUDIO_GET_STATUS call returns the following structure informing about various 72<para>The AUDIO_GET_STATUS call returns the following structure informing about various
67states of the playback operation. 73states of the playback operation.
68</para> 74</para>
69<programlisting> 75<programlisting>
70 typedef struct audio_status { 76typedef struct audio_status {
71 boolean AV_sync_state; 77 boolean AV_sync_state;
72 boolean mute_state; 78 boolean mute_state;
73 audio_play_state_t play_state; 79 audio_play_state_t play_state;
74 audio_stream_source_t stream_source; 80 audio_stream_source_t stream_source;
75 audio_channel_select_t channel_select; 81 audio_channel_select_t channel_select;
76 boolean bypass_mode; 82 boolean bypass_mode;
77 } audio_status_t; 83 audio_mixer_t mixer_state;
84} audio_status_t;
78</programlisting> 85</programlisting>
79 86
80</section> 87</section>
81<section id="struct_audio_mixer"> 88<section id="audio-mixer">
82<title>struct audio_mixer</title> 89<title>struct audio_mixer</title>
83<para>The following structure is used by the AUDIO_SET_MIXER call to set the audio 90<para>The following structure is used by the AUDIO_SET_MIXER call to set the audio
84volume. 91volume.
85</para> 92</para>
86<programlisting> 93<programlisting>
87 typedef struct audio_mixer { 94typedef struct audio_mixer {
88 unsigned int volume_left; 95 unsigned int volume_left;
89 unsigned int volume_right; 96 unsigned int volume_right;
90 } audio_mixer_t; 97} audio_mixer_t;
91</programlisting> 98</programlisting>
92 99
93</section> 100</section>
@@ -109,17 +116,17 @@ bits set according to the hardwares capabilities.
109</programlisting> 116</programlisting>
110 117
111</section> 118</section>
112<section id="struct_audio_karaoke"> 119<section id="audio-karaoke">
113<title>struct audio_karaoke</title> 120<title>struct audio_karaoke</title>
114<para>The ioctl AUDIO_SET_KARAOKE uses the following format: 121<para>The ioctl AUDIO_SET_KARAOKE uses the following format:
115</para> 122</para>
116<programlisting> 123<programlisting>
117 typedef 124typedef
118 struct audio_karaoke{ 125struct audio_karaoke {
119 int vocal1; 126 int vocal1;
120 int vocal2; 127 int vocal2;
121 int melody; 128 int melody;
122 } audio_karaoke_t; 129} audio_karaoke_t;
123</programlisting> 130</programlisting>
124<para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both, 131<para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both,
125Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the 132Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the
@@ -128,7 +135,7 @@ and right.
128</para> 135</para>
129 136
130</section> 137</section>
131<section id="audio_attributes"> 138<section id="audio-attributes-t">
132<title>audio attributes</title> 139<title>audio attributes</title>
133<para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES: 140<para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES:
134</para> 141</para>
@@ -217,8 +224,7 @@ and right.
217<para>(blocking mode is the default)</para> 224<para>(blocking mode is the default)</para>
218</entry> 225</entry>
219 </row></tbody></tgroup></informaltable> 226 </row></tbody></tgroup></informaltable>
220<para>ERRORS 227<para>RETURN VALUE</para>
221</para>
222<informaltable><tgroup cols="2"><tbody><row><entry 228<informaltable><tgroup cols="2"><tbody><row><entry
223 align="char"> 229 align="char">
224<para>ENODEV</para> 230<para>ENODEV</para>
@@ -228,13 +234,6 @@ and right.
228</entry> 234</entry>
229 </row><row><entry 235 </row><row><entry
230 align="char"> 236 align="char">
231<para>EINTERNAL</para>
232</entry><entry
233 align="char">
234<para>Internal error.</para>
235</entry>
236 </row><row><entry
237 align="char">
238<para>EBUSY</para> 237<para>EBUSY</para>
239</entry><entry 238</entry><entry
240 align="char"> 239 align="char">
@@ -276,8 +275,7 @@ and right.
276<para>File descriptor returned by a previous call to open().</para> 275<para>File descriptor returned by a previous call to open().</para>
277</entry> 276</entry>
278 </row></tbody></tgroup></informaltable> 277 </row></tbody></tgroup></informaltable>
279<para>ERRORS 278<para>RETURN VALUE</para>
280</para>
281<informaltable><tgroup cols="2"><tbody><row><entry 279<informaltable><tgroup cols="2"><tbody><row><entry
282 align="char"> 280 align="char">
283<para>EBADF</para> 281<para>EBADF</para>
@@ -332,8 +330,7 @@ and right.
332<para>Size of buf.</para> 330<para>Size of buf.</para>
333</entry> 331</entry>
334 </row></tbody></tgroup></informaltable> 332 </row></tbody></tgroup></informaltable>
335<para>ERRORS 333<para>RETURN VALUE</para>
336</para>
337<informaltable><tgroup cols="2"><tbody><row><entry 334<informaltable><tgroup cols="2"><tbody><row><entry
338 align="char"> 335 align="char">
339<para>EPERM</para> 336<para>EPERM</para>
@@ -358,7 +355,7 @@ and right.
358</entry> 355</entry>
359 </row></tbody></tgroup></informaltable> 356 </row></tbody></tgroup></informaltable>
360 357
361</section><section 358</section><section id="AUDIO_STOP"
362role="subsection"><title>AUDIO_STOP</title> 359role="subsection"><title>AUDIO_STOP</title>
363<para>DESCRIPTION 360<para>DESCRIPTION
364</para> 361</para>
@@ -391,25 +388,9 @@ role="subsection"><title>AUDIO_STOP</title>
391<para>Equals AUDIO_STOP for this command.</para> 388<para>Equals AUDIO_STOP for this command.</para>
392</entry> 389</entry>
393 </row></tbody></tgroup></informaltable> 390 </row></tbody></tgroup></informaltable>
394<para>ERRORS 391&return-value-dvb;
395</para>
396<informaltable><tgroup cols="2"><tbody><row><entry
397 align="char">
398<para>EBADF</para>
399</entry><entry
400 align="char">
401<para>fd is not a valid open file descriptor</para>
402</entry>
403 </row><row><entry
404 align="char">
405<para>EINTERNAL</para>
406</entry><entry
407 align="char">
408<para>Internal error.</para>
409</entry>
410 </row></tbody></tgroup></informaltable>
411 392
412</section><section 393</section><section id="AUDIO_PLAY"
413role="subsection"><title>AUDIO_PLAY</title> 394role="subsection"><title>AUDIO_PLAY</title>
414<para>DESCRIPTION 395<para>DESCRIPTION
415</para> 396</para>
@@ -443,25 +424,9 @@ role="subsection"><title>AUDIO_PLAY</title>
443<para>Equals AUDIO_PLAY for this command.</para> 424<para>Equals AUDIO_PLAY for this command.</para>
444</entry> 425</entry>
445 </row></tbody></tgroup></informaltable> 426 </row></tbody></tgroup></informaltable>
446<para>ERRORS 427&return-value-dvb;
447</para>
448<informaltable><tgroup cols="2"><tbody><row><entry
449 align="char">
450<para>EBADF</para>
451</entry><entry
452 align="char">
453<para>fd is not a valid open file descriptor</para>
454</entry>
455 </row><row><entry
456 align="char">
457<para>EINTERNAL</para>
458</entry><entry
459 align="char">
460<para>Internal error.</para>
461</entry>
462 </row></tbody></tgroup></informaltable>
463 428
464</section><section 429</section><section id="AUDIO_PAUSE"
465role="subsection"><title>AUDIO_PAUSE</title> 430role="subsection"><title>AUDIO_PAUSE</title>
466<para>DESCRIPTION 431<para>DESCRIPTION
467</para> 432</para>
@@ -503,25 +468,49 @@ role="subsection"><title>AUDIO_PAUSE</title>
503<para>Equals AUDIO_PAUSE for this command.</para> 468<para>Equals AUDIO_PAUSE for this command.</para>
504</entry> 469</entry>
505 </row></tbody></tgroup></informaltable> 470 </row></tbody></tgroup></informaltable>
506<para>ERRORS 471&return-value-dvb;
472
473</section><section id="AUDIO_CONTINUE"
474role="subsection"><title>AUDIO_CONTINUE</title>
475<para>DESCRIPTION
476</para>
477<informaltable><tgroup cols="1"><tbody><row><entry
478 align="char">
479<para>This ioctl restarts the decoding and playing process previously paused
480with AUDIO_PAUSE command.</para>
481</entry>
482 </row><row><entry
483 align="char">
484<para>It only works if the stream were previously stopped with AUDIO_PAUSE</para>
485</entry>
486 </row></tbody></tgroup></informaltable>
487<para>SYNOPSIS
488</para>
489<informaltable><tgroup cols="1"><tbody><row><entry
490 align="char">
491<para>int ioctl(int fd, int request = AUDIO_CONTINUE);</para>
492</entry>
493 </row></tbody></tgroup></informaltable>
494<para>PARAMETERS
507</para> 495</para>
508<informaltable><tgroup cols="2"><tbody><row><entry 496<informaltable><tgroup cols="2"><tbody><row><entry
509 align="char"> 497 align="char">
510<para>EBADF</para> 498<para>int fd</para>
511</entry><entry 499</entry><entry
512 align="char"> 500 align="char">
513<para>fd is not a valid open file descriptor.</para> 501<para>File descriptor returned by a previous call to open().</para>
514</entry> 502</entry>
515 </row><row><entry 503 </row><row><entry
516 align="char"> 504 align="char">
517<para>EINTERNAL</para> 505<para>int request</para>
518</entry><entry 506</entry><entry
519 align="char"> 507 align="char">
520<para>Internal error.</para> 508<para>Equals AUDIO_CONTINUE for this command.</para>
521</entry> 509</entry>
522 </row></tbody></tgroup></informaltable> 510 </row></tbody></tgroup></informaltable>
511&return-value-dvb;
523 512
524</section><section 513</section><section id="AUDIO_SELECT_SOURCE"
525role="subsection"><title>AUDIO_SELECT_SOURCE</title> 514role="subsection"><title>AUDIO_SELECT_SOURCE</title>
526<para>DESCRIPTION 515<para>DESCRIPTION
527</para> 516</para>
@@ -567,35 +556,14 @@ role="subsection"><title>AUDIO_SELECT_SOURCE</title>
567 stream.</para> 556 stream.</para>
568</entry> 557</entry>
569 </row></tbody></tgroup></informaltable> 558 </row></tbody></tgroup></informaltable>
570<para>ERRORS 559&return-value-dvb;
571</para>
572<informaltable><tgroup cols="2"><tbody><row><entry
573 align="char">
574<para>EBADF</para>
575</entry><entry
576 align="char">
577<para>fd is not a valid open file descriptor.</para>
578</entry>
579 </row><row><entry
580 align="char">
581<para>EINTERNAL</para>
582</entry><entry
583 align="char">
584<para>Internal error.</para>
585</entry>
586 </row><row><entry
587 align="char">
588<para>EINVAL</para>
589</entry><entry
590 align="char">
591<para>Illegal input parameter.</para>
592</entry>
593 </row></tbody></tgroup></informaltable>
594 560
595</section><section 561</section><section id="AUDIO_SET_MUTE"
596role="subsection"><title>AUDIO_SET_MUTE</title> 562role="subsection"><title>AUDIO_SET_MUTE</title>
597<para>DESCRIPTION 563<para>DESCRIPTION
598</para> 564</para>
565<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
566&VIDIOC-DECODER-CMD; with the <constant>V4L2_DEC_CMD_START_MUTE_AUDIO</constant> flag instead.</para>
599<informaltable><tgroup cols="1"><tbody><row><entry 567<informaltable><tgroup cols="1"><tbody><row><entry
600 align="char"> 568 align="char">
601<para>This ioctl call asks the audio device to mute the stream that is currently being 569<para>This ioctl call asks the audio device to mute the stream that is currently being
@@ -646,32 +614,9 @@ role="subsection"><title>AUDIO_SET_MUTE</title>
646<para>FALSE Audio Un-mute</para> 614<para>FALSE Audio Un-mute</para>
647</entry> 615</entry>
648 </row></tbody></tgroup></informaltable> 616 </row></tbody></tgroup></informaltable>
649<para>ERRORS 617&return-value-dvb;
650</para>
651<informaltable><tgroup cols="2"><tbody><row><entry
652 align="char">
653<para>EBADF</para>
654</entry><entry
655 align="char">
656<para>fd is not a valid open file descriptor.</para>
657</entry>
658 </row><row><entry
659 align="char">
660<para>EINTERNAL</para>
661</entry><entry
662 align="char">
663<para>Internal error.</para>
664</entry>
665 </row><row><entry
666 align="char">
667<para>EINVAL</para>
668</entry><entry
669 align="char">
670<para>Illegal input parameter.</para>
671</entry>
672 </row></tbody></tgroup></informaltable>
673 618
674</section><section 619</section><section id="AUDIO_SET_AV_SYNC"
675role="subsection"><title>AUDIO_SET_AV_SYNC</title> 620role="subsection"><title>AUDIO_SET_AV_SYNC</title>
676<para>DESCRIPTION 621<para>DESCRIPTION
677</para> 622</para>
@@ -725,32 +670,9 @@ role="subsection"><title>AUDIO_SET_AV_SYNC</title>
725<para>FALSE AV-sync OFF</para> 670<para>FALSE AV-sync OFF</para>
726</entry> 671</entry>
727 </row></tbody></tgroup></informaltable> 672 </row></tbody></tgroup></informaltable>
728<para>ERRORS 673&return-value-dvb;
729</para>
730<informaltable><tgroup cols="2"><tbody><row><entry
731 align="char">
732<para>EBADF</para>
733</entry><entry
734 align="char">
735<para>fd is not a valid open file descriptor.</para>
736</entry>
737 </row><row><entry
738 align="char">
739<para>EINTERNAL</para>
740</entry><entry
741 align="char">
742<para>Internal error.</para>
743</entry>
744 </row><row><entry
745 align="char">
746<para>EINVAL</para>
747</entry><entry
748 align="char">
749<para>Illegal input parameter.</para>
750</entry>
751 </row></tbody></tgroup></informaltable>
752 674
753</section><section 675</section><section id="AUDIO_SET_BYPASS_MODE"
754role="subsection"><title>AUDIO_SET_BYPASS_MODE</title> 676role="subsection"><title>AUDIO_SET_BYPASS_MODE</title>
755<para>DESCRIPTION 677<para>DESCRIPTION
756</para> 678</para>
@@ -808,38 +730,66 @@ role="subsection"><title>AUDIO_SET_BYPASS_MODE</title>
808<para>FALSE Bypass is enabled</para> 730<para>FALSE Bypass is enabled</para>
809</entry> 731</entry>
810 </row></tbody></tgroup></informaltable> 732 </row></tbody></tgroup></informaltable>
811<para>ERRORS 733&return-value-dvb;
734
735</section><section id="AUDIO_CHANNEL_SELECT"
736role="subsection"><title>AUDIO_CHANNEL_SELECT</title>
737<para>DESCRIPTION
738</para>
739<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
740<constant>V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK</constant> control instead.</para>
741<informaltable><tgroup cols="1"><tbody><row><entry
742 align="char">
743<para>This ioctl call asks the Audio Device to select the requested channel if possible.</para>
744</entry>
745 </row></tbody></tgroup></informaltable>
746<para>SYNOPSIS
747</para>
748<informaltable><tgroup cols="1"><tbody><row><entry
749 align="char">
750<para>int ioctl(int fd, int request =
751 AUDIO_CHANNEL_SELECT, audio_channel_select_t);</para>
752</entry>
753 </row></tbody></tgroup></informaltable>
754<para>PARAMETERS
812</para> 755</para>
813<informaltable><tgroup cols="2"><tbody><row><entry 756<informaltable><tgroup cols="2"><tbody><row><entry
814 align="char"> 757 align="char">
815<para>EBADF</para> 758<para>int fd</para>
816</entry><entry 759</entry><entry
817 align="char"> 760 align="char">
818<para>fd is not a valid open file descriptor.</para> 761<para>File descriptor returned by a previous call to open().</para>
819</entry> 762</entry>
820 </row><row><entry 763 </row><row><entry
821 align="char"> 764 align="char">
822<para>EINTERNAL</para> 765<para>int request</para>
823</entry><entry 766</entry><entry
824 align="char"> 767 align="char">
825<para>Internal error.</para> 768<para>Equals AUDIO_CHANNEL_SELECT for this
769 command.</para>
826</entry> 770</entry>
827 </row><row><entry 771 </row><row><entry
828 align="char"> 772 align="char">
829<para>EINVAL</para> 773<para>audio_channel_select_t
774 ch</para>
830</entry><entry 775</entry><entry
831 align="char"> 776 align="char">
832<para>Illegal input parameter.</para> 777<para>Select the output format of the audio (mono left/right,
778 stereo).</para>
833</entry> 779</entry>
834 </row></tbody></tgroup></informaltable> 780 </row></tbody></tgroup></informaltable>
781&return-value-dvb;
835 782
836</section><section 783</section><section id="AUDIO_BILINGUAL_CHANNEL_SELECT"
837role="subsection"><title>AUDIO_CHANNEL_SELECT</title> 784role="subsection"><title>AUDIO_BILINGUAL_CHANNEL_SELECT</title>
838<para>DESCRIPTION 785<para>DESCRIPTION
839</para> 786</para>
787<para>This ioctl is obsolete. Do not use in new drivers. It has been replaced by
788the V4L2 <constant>V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK</constant> control
789for MPEG decoders controlled through V4L2.</para>
840<informaltable><tgroup cols="1"><tbody><row><entry 790<informaltable><tgroup cols="1"><tbody><row><entry
841 align="char"> 791 align="char">
842<para>This ioctl call asks the Audio Device to select the requested channel if possible.</para> 792<para>This ioctl call asks the Audio Device to select the requested channel for bilingual streams if possible.</para>
843</entry> 793</entry>
844 </row></tbody></tgroup></informaltable> 794 </row></tbody></tgroup></informaltable>
845<para>SYNOPSIS 795<para>SYNOPSIS
@@ -847,7 +797,7 @@ role="subsection"><title>AUDIO_CHANNEL_SELECT</title>
847<informaltable><tgroup cols="1"><tbody><row><entry 797<informaltable><tgroup cols="1"><tbody><row><entry
848 align="char"> 798 align="char">
849<para>int ioctl(int fd, int request = 799<para>int ioctl(int fd, int request =
850 AUDIO_CHANNEL_SELECT, audio_channel_select_t);</para> 800 AUDIO_BILINGUAL_CHANNEL_SELECT, audio_channel_select_t);</para>
851</entry> 801</entry>
852 </row></tbody></tgroup></informaltable> 802 </row></tbody></tgroup></informaltable>
853<para>PARAMETERS 803<para>PARAMETERS
@@ -864,45 +814,76 @@ role="subsection"><title>AUDIO_CHANNEL_SELECT</title>
864<para>int request</para> 814<para>int request</para>
865</entry><entry 815</entry><entry
866 align="char"> 816 align="char">
867<para>Equals AUDIO_CHANNEL_SELECT for this 817<para>Equals AUDIO_BILINGUAL_CHANNEL_SELECT for this
868 command.</para> 818 command.</para>
869</entry> 819</entry>
870 </row><row><entry 820 </row><row><entry
871 align="char"> 821 align="char">
872<para>audio_channel_select_t 822<para>audio_channel_select_t
873 ch</para> 823ch</para>
874</entry><entry 824</entry><entry
875 align="char"> 825 align="char">
876<para>Select the output format of the audio (mono left/right, 826<para>Select the output format of the audio (mono left/right,
877 stereo).</para> 827 stereo).</para>
878</entry> 828</entry>
829 </row>
830</tbody></tgroup></informaltable>
831&return-value-dvb;
832
833</section><section id="AUDIO_GET_PTS"
834role="subsection"><title>AUDIO_GET_PTS</title>
835<para>DESCRIPTION
836</para>
837<para>This ioctl is obsolete. Do not use in new drivers. If you need this functionality,
838then please contact the linux-media mailing list (&v4l-ml;).</para>
839<informaltable><tgroup cols="1"><tbody><row><entry
840 align="char">
841<para>This ioctl call asks the Audio Device to return the current PTS timestamp.</para>
842</entry>
879 </row></tbody></tgroup></informaltable> 843 </row></tbody></tgroup></informaltable>
880<para>ERRORS 844<para>SYNOPSIS
845</para>
846<informaltable><tgroup cols="1"><tbody><row><entry
847 align="char">
848<para>int ioctl(int fd, int request =
849 AUDIO_GET_PTS, __u64 *pts);</para>
850</entry>
851 </row></tbody></tgroup></informaltable>
852<para>PARAMETERS
881</para> 853</para>
882<informaltable><tgroup cols="2"><tbody><row><entry 854<informaltable><tgroup cols="2"><tbody><row><entry
883 align="char"> 855 align="char">
884<para>EBADF</para> 856<para>int fd</para>
885</entry><entry 857</entry><entry
886 align="char"> 858 align="char">
887<para>fd is not a valid open file descriptor.</para> 859<para>File descriptor returned by a previous call to open().</para>
888</entry> 860</entry>
889 </row><row><entry 861 </row><row><entry
890 align="char"> 862 align="char">
891<para>EINTERNAL</para> 863<para>int request</para>
892</entry><entry 864</entry><entry
893 align="char"> 865 align="char">
894<para>Internal error.</para> 866<para>Equals AUDIO_GET_PTS for this
867 command.</para>
895</entry> 868</entry>
896 </row><row><entry 869 </row><row><entry
897 align="char"> 870 align="char">
898<para>EINVAL</para> 871<para>__u64 *pts
872</para>
899</entry><entry 873</entry><entry
900 align="char"> 874 align="char">
901<para>Illegal input parameter ch.</para> 875<para>Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
876</para>
877<para>
878The PTS should belong to the currently played
879frame if possible, but may also be a value close to it
880like the PTS of the last decoded frame or the last PTS
881extracted by the PES parser.</para>
902</entry> 882</entry>
903 </row></tbody></tgroup></informaltable> 883 </row></tbody></tgroup></informaltable>
884&return-value-dvb;
904 885
905</section><section 886</section><section id="AUDIO_GET_STATUS"
906role="subsection"><title>AUDIO_GET_STATUS</title> 887role="subsection"><title>AUDIO_GET_STATUS</title>
907<para>DESCRIPTION 888<para>DESCRIPTION
908</para> 889</para>
@@ -945,32 +926,9 @@ role="subsection"><title>AUDIO_GET_STATUS</title>
945<para>Returns the current state of Audio Device.</para> 926<para>Returns the current state of Audio Device.</para>
946</entry> 927</entry>
947 </row></tbody></tgroup></informaltable> 928 </row></tbody></tgroup></informaltable>
948<para>ERRORS 929&return-value-dvb;
949</para>
950<informaltable><tgroup cols="2"><tbody><row><entry
951 align="char">
952<para>EBADF</para>
953</entry><entry
954 align="char">
955<para>fd is not a valid open file descriptor.</para>
956</entry>
957 </row><row><entry
958 align="char">
959<para>EINTERNAL</para>
960</entry><entry
961 align="char">
962<para>Internal error.</para>
963</entry>
964 </row><row><entry
965 align="char">
966<para>EFAULT</para>
967</entry><entry
968 align="char">
969<para>status points to invalid address.</para>
970</entry>
971 </row></tbody></tgroup></informaltable>
972 930
973</section><section 931</section><section id="AUDIO_GET_CAPABILITIES"
974role="subsection"><title>AUDIO_GET_CAPABILITIES</title> 932role="subsection"><title>AUDIO_GET_CAPABILITIES</title>
975<para>DESCRIPTION 933<para>DESCRIPTION
976</para> 934</para>
@@ -1013,32 +971,9 @@ role="subsection"><title>AUDIO_GET_CAPABILITIES</title>
1013<para>Returns a bit array of supported sound formats.</para> 971<para>Returns a bit array of supported sound formats.</para>
1014</entry> 972</entry>
1015 </row></tbody></tgroup></informaltable> 973 </row></tbody></tgroup></informaltable>
1016<para>ERRORS 974&return-value-dvb;
1017</para>
1018<informaltable><tgroup cols="2"><tbody><row><entry
1019 align="char">
1020<para>EBADF</para>
1021</entry><entry
1022 align="char">
1023<para>fd is not a valid open file descriptor.</para>
1024</entry>
1025 </row><row><entry
1026 align="char">
1027<para>EINTERNAL</para>
1028</entry><entry
1029 align="char">
1030<para>Internal error.</para>
1031</entry>
1032 </row><row><entry
1033 align="char">
1034<para>EFAULT</para>
1035</entry><entry
1036 align="char">
1037<para>cap points to an invalid address.</para>
1038</entry>
1039 </row></tbody></tgroup></informaltable>
1040 975
1041</section><section 976</section><section id="AUDIO_CLEAR_BUFFER"
1042role="subsection"><title>AUDIO_CLEAR_BUFFER</title> 977role="subsection"><title>AUDIO_CLEAR_BUFFER</title>
1043<para>DESCRIPTION 978<para>DESCRIPTION
1044</para> 979</para>
@@ -1072,25 +1007,9 @@ role="subsection"><title>AUDIO_CLEAR_BUFFER</title>
1072<para>Equals AUDIO_CLEAR_BUFFER for this command.</para> 1007<para>Equals AUDIO_CLEAR_BUFFER for this command.</para>
1073</entry> 1008</entry>
1074 </row></tbody></tgroup></informaltable> 1009 </row></tbody></tgroup></informaltable>
1075<para>ERRORS 1010&return-value-dvb;
1076</para>
1077<informaltable><tgroup cols="2"><tbody><row><entry
1078 align="char">
1079<para>EBADF</para>
1080</entry><entry
1081 align="char">
1082<para>fd is not a valid open file descriptor.</para>
1083</entry>
1084 </row><row><entry
1085 align="char">
1086<para>EINTERNAL</para>
1087</entry><entry
1088 align="char">
1089<para>Internal error.</para>
1090</entry>
1091 </row></tbody></tgroup></informaltable>
1092 1011
1093</section><section 1012</section><section id="AUDIO_SET_ID"
1094role="subsection"><title>AUDIO_SET_ID</title> 1013role="subsection"><title>AUDIO_SET_ID</title>
1095<para>DESCRIPTION 1014<para>DESCRIPTION
1096</para> 1015</para>
@@ -1136,32 +1055,9 @@ role="subsection"><title>AUDIO_SET_ID</title>
1136<para>audio sub-stream id</para> 1055<para>audio sub-stream id</para>
1137</entry> 1056</entry>
1138 </row></tbody></tgroup></informaltable> 1057 </row></tbody></tgroup></informaltable>
1139<para>ERRORS 1058&return-value-dvb;
1140</para>
1141<informaltable><tgroup cols="2"><tbody><row><entry
1142 align="char">
1143<para>EBADF</para>
1144</entry><entry
1145 align="char">
1146<para>fd is not a valid open file descriptor.</para>
1147</entry>
1148 </row><row><entry
1149 align="char">
1150<para>EINTERNAL</para>
1151</entry><entry
1152 align="char">
1153<para>Internal error.</para>
1154</entry>
1155 </row><row><entry
1156 align="char">
1157<para>EINVAL</para>
1158</entry><entry
1159 align="char">
1160<para>Invalid sub-stream id.</para>
1161</entry>
1162 </row></tbody></tgroup></informaltable>
1163 1059
1164</section><section 1060</section><section id="AUDIO_SET_MIXER"
1165role="subsection"><title>AUDIO_SET_MIXER</title> 1061role="subsection"><title>AUDIO_SET_MIXER</title>
1166<para>DESCRIPTION 1062<para>DESCRIPTION
1167</para> 1063</para>
@@ -1202,32 +1098,9 @@ role="subsection"><title>AUDIO_SET_MIXER</title>
1202<para>mixer settings.</para> 1098<para>mixer settings.</para>
1203</entry> 1099</entry>
1204 </row></tbody></tgroup></informaltable> 1100 </row></tbody></tgroup></informaltable>
1205<para>ERRORS 1101&return-value-dvb;
1206</para>
1207<informaltable><tgroup cols="2"><tbody><row><entry
1208 align="char">
1209<para>EBADF</para>
1210</entry><entry
1211 align="char">
1212<para>fd is not a valid open file descriptor.</para>
1213</entry>
1214 </row><row><entry
1215 align="char">
1216<para>EINTERNAL</para>
1217</entry><entry
1218 align="char">
1219<para>Internal error.</para>
1220</entry>
1221 </row><row><entry
1222 align="char">
1223<para>EFAULT</para>
1224</entry><entry
1225 align="char">
1226<para>mix points to an invalid address.</para>
1227</entry>
1228 </row></tbody></tgroup></informaltable>
1229 1102
1230</section><section 1103</section><section id="AUDIO_SET_STREAMTYPE"
1231role="subsection"><title>AUDIO_SET_STREAMTYPE</title> 1104role="subsection"><title>AUDIO_SET_STREAMTYPE</title>
1232<para>DESCRIPTION 1105<para>DESCRIPTION
1233</para> 1106</para>
@@ -1270,17 +1143,9 @@ role="subsection"><title>AUDIO_SET_STREAMTYPE</title>
1270<para>stream type</para> 1143<para>stream type</para>
1271</entry> 1144</entry>
1272 </row></tbody></tgroup></informaltable> 1145 </row></tbody></tgroup></informaltable>
1273<para>ERRORS 1146&return-value-dvb;
1274</para>
1275<informaltable><tgroup cols="2"><tbody><row><entry 1147<informaltable><tgroup cols="2"><tbody><row><entry
1276 align="char"> 1148 align="char">
1277<para>EBADF</para>
1278</entry><entry
1279 align="char">
1280<para>fd is not a valid open file descriptor</para>
1281</entry>
1282 </row><row><entry
1283 align="char">
1284<para>EINVAL</para> 1149<para>EINVAL</para>
1285</entry><entry 1150</entry><entry
1286 align="char"> 1151 align="char">
@@ -1288,7 +1153,7 @@ role="subsection"><title>AUDIO_SET_STREAMTYPE</title>
1288</entry> 1153</entry>
1289 </row></tbody></tgroup></informaltable> 1154 </row></tbody></tgroup></informaltable>
1290 1155
1291</section><section 1156</section><section id="AUDIO_SET_EXT_ID"
1292role="subsection"><title>AUDIO_SET_EXT_ID</title> 1157role="subsection"><title>AUDIO_SET_EXT_ID</title>
1293<para>DESCRIPTION 1158<para>DESCRIPTION
1294</para> 1159</para>
@@ -1330,17 +1195,9 @@ role="subsection"><title>AUDIO_SET_EXT_ID</title>
1330<para>audio sub_stream_id</para> 1195<para>audio sub_stream_id</para>
1331</entry> 1196</entry>
1332 </row></tbody></tgroup></informaltable> 1197 </row></tbody></tgroup></informaltable>
1333<para>ERRORS 1198&return-value-dvb;
1334</para>
1335<informaltable><tgroup cols="2"><tbody><row><entry 1199<informaltable><tgroup cols="2"><tbody><row><entry
1336 align="char"> 1200 align="char">
1337<para>EBADF</para>
1338</entry><entry
1339 align="char">
1340<para>fd is not a valid open file descriptor</para>
1341</entry>
1342 </row><row><entry
1343 align="char">
1344<para>EINVAL</para> 1201<para>EINVAL</para>
1345</entry><entry 1202</entry><entry
1346 align="char"> 1203 align="char">
@@ -1348,7 +1205,7 @@ role="subsection"><title>AUDIO_SET_EXT_ID</title>
1348</entry> 1205</entry>
1349 </row></tbody></tgroup></informaltable> 1206 </row></tbody></tgroup></informaltable>
1350 1207
1351</section><section 1208</section><section id="AUDIO_SET_ATTRIBUTES"
1352role="subsection"><title>AUDIO_SET_ATTRIBUTES</title> 1209role="subsection"><title>AUDIO_SET_ATTRIBUTES</title>
1353<para>DESCRIPTION 1210<para>DESCRIPTION
1354</para> 1211</para>
@@ -1391,17 +1248,9 @@ role="subsection"><title>AUDIO_SET_ATTRIBUTES</title>
1391<para>audio attributes according to section ??</para> 1248<para>audio attributes according to section ??</para>
1392</entry> 1249</entry>
1393 </row></tbody></tgroup></informaltable> 1250 </row></tbody></tgroup></informaltable>
1394<para>ERRORS 1251&return-value-dvb;
1395</para>
1396<informaltable><tgroup cols="2"><tbody><row><entry 1252<informaltable><tgroup cols="2"><tbody><row><entry
1397 align="char"> 1253 align="char">
1398<para>EBADF</para>
1399</entry><entry
1400 align="char">
1401<para>fd is not a valid open file descriptor</para>
1402</entry>
1403 </row><row><entry
1404 align="char">
1405<para>EINVAL</para> 1254<para>EINVAL</para>
1406</entry><entry 1255</entry><entry
1407 align="char"> 1256 align="char">
@@ -1409,7 +1258,7 @@ role="subsection"><title>AUDIO_SET_ATTRIBUTES</title>
1409</entry> 1258</entry>
1410 </row></tbody></tgroup></informaltable> 1259 </row></tbody></tgroup></informaltable>
1411 1260
1412</section><section 1261</section><section id="AUDIO_SET_KARAOKE"
1413role="subsection"><title>AUDIO_SET_KARAOKE</title> 1262role="subsection"><title>AUDIO_SET_KARAOKE</title>
1414<para>DESCRIPTION 1263<para>DESCRIPTION
1415</para> 1264</para>
@@ -1422,7 +1271,7 @@ role="subsection"><title>AUDIO_SET_KARAOKE</title>
1422</para> 1271</para>
1423<informaltable><tgroup cols="1"><tbody><row><entry 1272<informaltable><tgroup cols="1"><tbody><row><entry
1424 align="char"> 1273 align="char">
1425<para>int ioctl(fd, int request = AUDIO_SET_STREAMTYPE, 1274<para>int ioctl(fd, int request = AUDIO_SET_KARAOKE,
1426 audio_karaoke_t &#x22C6;karaoke);</para> 1275 audio_karaoke_t &#x22C6;karaoke);</para>
1427</entry> 1276</entry>
1428 </row></tbody></tgroup></informaltable> 1277 </row></tbody></tgroup></informaltable>
@@ -1440,7 +1289,7 @@ role="subsection"><title>AUDIO_SET_KARAOKE</title>
1440<para>int request</para> 1289<para>int request</para>
1441</entry><entry 1290</entry><entry
1442 align="char"> 1291 align="char">
1443<para>Equals AUDIO_SET_STREAMTYPE for this 1292<para>Equals AUDIO_SET_KARAOKE for this
1444 command.</para> 1293 command.</para>
1445</entry> 1294</entry>
1446 </row><row><entry 1295 </row><row><entry
@@ -1452,17 +1301,9 @@ role="subsection"><title>AUDIO_SET_KARAOKE</title>
1452<para>karaoke settings according to section ??.</para> 1301<para>karaoke settings according to section ??.</para>
1453</entry> 1302</entry>
1454 </row></tbody></tgroup></informaltable> 1303 </row></tbody></tgroup></informaltable>
1455<para>ERRORS 1304&return-value-dvb;
1456</para>
1457<informaltable><tgroup cols="2"><tbody><row><entry 1305<informaltable><tgroup cols="2"><tbody><row><entry
1458 align="char"> 1306 align="char">
1459<para>EBADF</para>
1460</entry><entry
1461 align="char">
1462<para>fd is not a valid open file descriptor</para>
1463</entry>
1464 </row><row><entry
1465 align="char">
1466<para>EINVAL</para> 1307<para>EINVAL</para>
1467</entry><entry 1308</entry><entry
1468 align="char"> 1309 align="char">
diff --git a/Documentation/DocBook/media/dvb/ca.xml b/Documentation/DocBook/media/dvb/ca.xml
new file mode 100644
index 00000000000..85eaf4fe293
--- /dev/null
+++ b/Documentation/DocBook/media/dvb/ca.xml
@@ -0,0 +1,582 @@
1<title>DVB CA Device</title>
2<para>The DVB CA device controls the conditional access hardware. It can be accessed through
3<emphasis role="tt">/dev/dvb/adapter0/ca0</emphasis>. Data types and and ioctl definitions can be accessed by
4including <emphasis role="tt">linux/dvb/ca.h</emphasis> in your application.
5</para>
6
7<section id="ca_data_types">
8<title>CA Data Types</title>
9
10
11<section id="ca-slot-info">
12<title>ca_slot_info_t</title>
13 <programlisting>
14typedef struct ca_slot_info {
15 int num; /&#x22C6; slot number &#x22C6;/
16
17 int type; /&#x22C6; CA interface this slot supports &#x22C6;/
18#define CA_CI 1 /&#x22C6; CI high level interface &#x22C6;/
19#define CA_CI_LINK 2 /&#x22C6; CI link layer level interface &#x22C6;/
20#define CA_CI_PHYS 4 /&#x22C6; CI physical layer level interface &#x22C6;/
21#define CA_DESCR 8 /&#x22C6; built-in descrambler &#x22C6;/
22#define CA_SC 128 /&#x22C6; simple smart card interface &#x22C6;/
23
24 unsigned int flags;
25#define CA_CI_MODULE_PRESENT 1 /&#x22C6; module (or card) inserted &#x22C6;/
26#define CA_CI_MODULE_READY 2
27} ca_slot_info_t;
28</programlisting>
29
30</section>
31<section id="ca-descr-info">
32<title>ca_descr_info_t</title>
33<programlisting>
34typedef struct ca_descr_info {
35 unsigned int num; /&#x22C6; number of available descramblers (keys) &#x22C6;/
36 unsigned int type; /&#x22C6; type of supported scrambling system &#x22C6;/
37#define CA_ECD 1
38#define CA_NDS 2
39#define CA_DSS 4
40} ca_descr_info_t;
41</programlisting>
42
43</section>
44<section id="ca-caps">
45<title>ca_caps_t</title>
46<programlisting>
47typedef struct ca_caps {
48 unsigned int slot_num; /&#x22C6; total number of CA card and module slots &#x22C6;/
49 unsigned int slot_type; /&#x22C6; OR of all supported types &#x22C6;/
50 unsigned int descr_num; /&#x22C6; total number of descrambler slots (keys) &#x22C6;/
51 unsigned int descr_type;/&#x22C6; OR of all supported types &#x22C6;/
52 } ca_cap_t;
53</programlisting>
54
55</section>
56<section id="ca-msg">
57<title>ca_msg_t</title>
58<programlisting>
59/&#x22C6; a message to/from a CI-CAM &#x22C6;/
60typedef struct ca_msg {
61 unsigned int index;
62 unsigned int type;
63 unsigned int length;
64 unsigned char msg[256];
65} ca_msg_t;
66</programlisting>
67
68</section>
69<section id="ca-descr">
70<title>ca_descr_t</title>
71<programlisting>
72typedef struct ca_descr {
73 unsigned int index;
74 unsigned int parity;
75 unsigned char cw[8];
76} ca_descr_t;
77</programlisting>
78</section>
79
80<section id="ca-pid">
81<title>ca-pid</title>
82<programlisting>
83typedef struct ca_pid {
84 unsigned int pid;
85 int index; /&#x22C6; -1 == disable&#x22C6;/
86} ca_pid_t;
87</programlisting>
88</section></section>
89
90<section id="ca_function_calls">
91<title>CA Function Calls</title>
92
93
94<section id="ca_fopen">
95<title>open()</title>
96<para>DESCRIPTION
97</para>
98<informaltable><tgroup cols="1"><tbody><row><entry
99 align="char">
100<para>This system call opens a named ca device (e.g. /dev/ost/ca) for subsequent use.</para>
101<para>When an open() call has succeeded, the device will be ready for use.
102 The significance of blocking or non-blocking mode is described in the
103 documentation for functions where there is a difference. It does not affect the
104 semantics of the open() call itself. A device opened in blocking mode can later
105 be put into non-blocking mode (and vice versa) using the F_SETFL command
106 of the fcntl system call. This is a standard system call, documented in the Linux
107 manual page for fcntl. Only one user can open the CA Device in O_RDWR
108 mode. All other attempts to open the device in this mode will fail, and an error
109 code will be returned.</para>
110</entry>
111 </row></tbody></tgroup></informaltable>
112<para>SYNOPSIS
113</para>
114<informaltable><tgroup cols="1"><tbody><row><entry
115 align="char">
116<para>int open(const char &#x22C6;deviceName, int flags);</para>
117</entry>
118 </row></tbody></tgroup></informaltable>
119<para>PARAMETERS
120</para>
121<informaltable><tgroup cols="2"><tbody><row><entry
122 align="char">
123<para>const char
124 *deviceName</para>
125</entry><entry
126 align="char">
127<para>Name of specific video device.</para>
128</entry>
129 </row><row><entry
130 align="char">
131<para>int flags</para>
132</entry><entry
133 align="char">
134<para>A bit-wise OR of the following flags:</para>
135</entry>
136 </row><row><entry
137 align="char">
138</entry><entry
139 align="char">
140<para>O_RDONLY read-only access</para>
141</entry>
142 </row><row><entry
143 align="char">
144</entry><entry
145 align="char">
146<para>O_RDWR read/write access</para>
147</entry>
148 </row><row><entry
149 align="char">
150</entry><entry
151 align="char">
152<para>O_NONBLOCK open in non-blocking mode</para>
153</entry>
154 </row><row><entry
155 align="char">
156</entry><entry
157 align="char">
158<para>(blocking mode is the default)</para>
159</entry>
160 </row></tbody></tgroup></informaltable>
161<para>RETURN VALUE</para>
162<informaltable><tgroup cols="2"><tbody><row><entry
163 align="char">
164<para>ENODEV</para>
165</entry><entry
166 align="char">
167<para>Device driver not loaded/available.</para>
168</entry>
169 </row><row><entry
170 align="char">
171<para>EINTERNAL</para>
172</entry><entry
173 align="char">
174<para>Internal error.</para>
175</entry>
176 </row><row><entry
177 align="char">
178<para>EBUSY</para>
179</entry><entry
180 align="char">
181<para>Device or resource busy.</para>
182</entry>
183 </row><row><entry
184 align="char">
185<para>EINVAL</para>
186</entry><entry
187 align="char">
188<para>Invalid argument.</para>
189</entry>
190 </row></tbody></tgroup></informaltable>
191
192</section>
193<section id="ca_fclose">
194<title>close()</title>
195<para>DESCRIPTION
196</para>
197<informaltable><tgroup cols="1"><tbody><row><entry
198 align="char">
199<para>This system call closes a previously opened audio device.</para>
200</entry>
201 </row></tbody></tgroup></informaltable>
202<para>SYNOPSIS
203</para>
204<informaltable><tgroup cols="1"><tbody><row><entry
205 align="char">
206<para>int close(int fd);</para>
207</entry>
208 </row></tbody></tgroup></informaltable>
209<para>PARAMETERS
210</para>
211<informaltable><tgroup cols="2"><tbody><row><entry
212 align="char">
213<para>int fd</para>
214</entry><entry
215 align="char">
216<para>File descriptor returned by a previous call to open().</para>
217</entry>
218 </row></tbody></tgroup></informaltable>
219<para>RETURN VALUE</para>
220<informaltable><tgroup cols="2"><tbody><row><entry
221 align="char">
222<para>EBADF</para>
223</entry><entry
224 align="char">
225<para>fd is not a valid open file descriptor.</para>
226</entry>
227 </row></tbody></tgroup></informaltable>
228 </section>
229
230<section id="CA_RESET"
231role="subsection"><title>CA_RESET</title>
232<para>DESCRIPTION
233</para>
234<informaltable><tgroup cols="1"><tbody><row><entry
235 align="char">
236<para>This ioctl is undocumented. Documentation is welcome.</para>
237</entry>
238 </row></tbody></tgroup></informaltable>
239<para>SYNOPSIS
240</para>
241<informaltable><tgroup cols="1"><tbody><row><entry
242 align="char">
243<para>int ioctl(fd, int request = CA_RESET);
244</para>
245</entry>
246 </row></tbody></tgroup></informaltable>
247<para>PARAMETERS
248</para>
249<informaltable><tgroup cols="2"><tbody><row><entry
250 align="char">
251<para>int fd</para>
252</entry><entry
253 align="char">
254<para>File descriptor returned by a previous call to open().</para>
255</entry>
256 </row><row><entry
257 align="char">
258<para>int request</para>
259</entry><entry
260 align="char">
261<para>Equals CA_RESET for this command.</para>
262</entry>
263 </row></tbody></tgroup></informaltable>
264&return-value-dvb;
265</section>
266
267<section id="CA_GET_CAP"
268role="subsection"><title>CA_GET_CAP</title>
269<para>DESCRIPTION
270</para>
271<informaltable><tgroup cols="1"><tbody><row><entry
272 align="char">
273<para>This ioctl is undocumented. Documentation is welcome.</para>
274</entry>
275 </row></tbody></tgroup></informaltable>
276<para>SYNOPSIS
277</para>
278<informaltable><tgroup cols="1"><tbody><row><entry
279 align="char">
280<para>int ioctl(fd, int request = CA_GET_CAP,
281 ca_caps_t *);</para>
282</entry>
283 </row></tbody></tgroup></informaltable>
284<para>PARAMETERS
285</para>
286<informaltable><tgroup cols="2"><tbody><row><entry
287 align="char">
288<para>int fd</para>
289</entry><entry
290 align="char">
291<para>File descriptor returned by a previous call to open().</para>
292</entry>
293 </row><row><entry
294 align="char">
295<para>int request</para>
296</entry><entry
297 align="char">
298<para>Equals CA_GET_CAP for this command.</para>
299</entry>
300 </row><row><entry
301 align="char">
302<para>ca_caps_t *
303</para>
304</entry><entry
305 align="char">
306<para>Undocumented.</para>
307</entry>
308 </row></tbody></tgroup></informaltable>
309&return-value-dvb;
310</section>
311
312<section id="CA_GET_SLOT_INFO"
313role="subsection"><title>CA_GET_SLOT_INFO</title>
314<para>DESCRIPTION
315</para>
316<informaltable><tgroup cols="1"><tbody><row><entry
317 align="char">
318<para>This ioctl is undocumented. Documentation is welcome.</para>
319</entry>
320 </row></tbody></tgroup></informaltable>
321<para>SYNOPSIS
322</para>
323<informaltable><tgroup cols="1"><tbody><row><entry
324 align="char">
325<para>int ioctl(fd, int request = CA_GET_SLOT_INFO,
326 ca_slot_info_t *);</para>
327</entry>
328 </row></tbody></tgroup></informaltable>
329<para>PARAMETERS
330</para>
331<informaltable><tgroup cols="2"><tbody><row><entry
332 align="char">
333<para>int fd</para>
334</entry><entry
335 align="char">
336<para>File descriptor returned by a previous call to open().</para>
337</entry>
338 </row><row><entry
339 align="char">
340<para>int request</para>
341</entry><entry
342 align="char">
343<para>Equals CA_GET_SLOT_INFO for this command.</para>
344</entry>
345 </row><row><entry
346 align="char">
347<para>ca_slot_info_t *
348</para>
349</entry><entry
350 align="char">
351<para>Undocumented.</para>
352</entry>
353 </row></tbody></tgroup></informaltable>
354&return-value-dvb;
355</section>
356
357<section id="CA_GET_DESCR_INFO"
358role="subsection"><title>CA_GET_DESCR_INFO</title>
359<para>DESCRIPTION
360</para>
361<informaltable><tgroup cols="1"><tbody><row><entry
362 align="char">
363<para>This ioctl is undocumented. Documentation is welcome.</para>
364</entry>
365 </row></tbody></tgroup></informaltable>
366<para>SYNOPSIS
367</para>
368<informaltable><tgroup cols="1"><tbody><row><entry
369 align="char">
370<para>int ioctl(fd, int request = CA_GET_DESCR_INFO,
371 ca_descr_info_t *);</para>
372</entry>
373 </row></tbody></tgroup></informaltable>
374<para>PARAMETERS
375</para>
376<informaltable><tgroup cols="2"><tbody><row><entry
377 align="char">
378<para>int fd</para>
379</entry><entry
380 align="char">
381<para>File descriptor returned by a previous call to open().</para>
382</entry>
383 </row><row><entry
384 align="char">
385<para>int request</para>
386</entry><entry
387 align="char">
388<para>Equals CA_GET_DESCR_INFO for this command.</para>
389</entry>
390 </row><row><entry
391 align="char">
392<para>ca_descr_info_t *
393</para>
394</entry><entry
395 align="char">
396<para>Undocumented.</para>
397</entry>
398 </row></tbody></tgroup></informaltable>
399&return-value-dvb;
400</section>
401
402<section id="CA_GET_MSG"
403role="subsection"><title>CA_GET_MSG</title>
404<para>DESCRIPTION
405</para>
406<informaltable><tgroup cols="1"><tbody><row><entry
407 align="char">
408<para>This ioctl is undocumented. Documentation is welcome.</para>
409</entry>
410 </row></tbody></tgroup></informaltable>
411<para>SYNOPSIS
412</para>
413<informaltable><tgroup cols="1"><tbody><row><entry
414 align="char">
415<para>int ioctl(fd, int request = CA_GET_MSG,
416 ca_msg_t *);</para>
417</entry>
418 </row></tbody></tgroup></informaltable>
419<para>PARAMETERS
420</para>
421<informaltable><tgroup cols="2"><tbody><row><entry
422 align="char">
423<para>int fd</para>
424</entry><entry
425 align="char">
426<para>File descriptor returned by a previous call to open().</para>
427</entry>
428 </row><row><entry
429 align="char">
430<para>int request</para>
431</entry><entry
432 align="char">
433<para>Equals CA_GET_MSG for this command.</para>
434</entry>
435 </row><row><entry
436 align="char">
437<para>ca_msg_t *
438</para>
439</entry><entry
440 align="char">
441<para>Undocumented.</para>
442</entry>
443 </row></tbody></tgroup></informaltable>
444&return-value-dvb;
445</section>
446
447<section id="CA_SEND_MSG"
448role="subsection"><title>CA_SEND_MSG</title>
449<para>DESCRIPTION
450</para>
451<informaltable><tgroup cols="1"><tbody><row><entry
452 align="char">
453<para>This ioctl is undocumented. Documentation is welcome.</para>
454</entry>
455 </row></tbody></tgroup></informaltable>
456<para>SYNOPSIS
457</para>
458<informaltable><tgroup cols="1"><tbody><row><entry
459 align="char">
460<para>int ioctl(fd, int request = CA_SEND_MSG,
461 ca_msg_t *);</para>
462</entry>
463 </row></tbody></tgroup></informaltable>
464<para>PARAMETERS
465</para>
466<informaltable><tgroup cols="2"><tbody><row><entry
467 align="char">
468<para>int fd</para>
469</entry><entry
470 align="char">
471<para>File descriptor returned by a previous call to open().</para>
472</entry>
473 </row><row><entry
474 align="char">
475<para>int request</para>
476</entry><entry
477 align="char">
478<para>Equals CA_SEND_MSG for this command.</para>
479</entry>
480 </row><row><entry
481 align="char">
482<para>ca_msg_t *
483</para>
484</entry><entry
485 align="char">
486<para>Undocumented.</para>
487</entry>
488 </row></tbody></tgroup></informaltable>
489&return-value-dvb;
490</section>
491
492<section id="CA_SET_DESCR"
493role="subsection"><title>CA_SET_DESCR</title>
494<para>DESCRIPTION
495</para>
496<informaltable><tgroup cols="1"><tbody><row><entry
497 align="char">
498<para>This ioctl is undocumented. Documentation is welcome.</para>
499</entry>
500 </row></tbody></tgroup></informaltable>
501<para>SYNOPSIS
502</para>
503<informaltable><tgroup cols="1"><tbody><row><entry
504 align="char">
505<para>int ioctl(fd, int request = CA_SET_DESCR,
506 ca_descr_t *);</para>
507</entry>
508 </row></tbody></tgroup></informaltable>
509<para>PARAMETERS
510</para>
511<informaltable><tgroup cols="2"><tbody><row><entry
512 align="char">
513<para>int fd</para>
514</entry><entry
515 align="char">
516<para>File descriptor returned by a previous call to open().</para>
517</entry>
518 </row><row><entry
519 align="char">
520<para>int request</para>
521</entry><entry
522 align="char">
523<para>Equals CA_SET_DESCR for this command.</para>
524</entry>
525 </row><row><entry
526 align="char">
527<para>ca_descr_t *
528</para>
529</entry><entry
530 align="char">
531<para>Undocumented.</para>
532</entry>
533 </row></tbody></tgroup></informaltable>
534&return-value-dvb;
535</section>
536
537<section id="CA_SET_PID"
538role="subsection"><title>CA_SET_PID</title>
539<para>DESCRIPTION
540</para>
541<informaltable><tgroup cols="1"><tbody><row><entry
542 align="char">
543<para>This ioctl is undocumented. Documentation is welcome.</para>
544</entry>
545 </row></tbody></tgroup></informaltable>
546<para>SYNOPSIS
547</para>
548<informaltable><tgroup cols="1"><tbody><row><entry
549 align="char">
550<para>int ioctl(fd, int request = CA_SET_PID,
551 ca_pid_t *);</para>
552</entry>
553 </row></tbody></tgroup></informaltable>
554<para>PARAMETERS
555</para>
556<informaltable><tgroup cols="2"><tbody><row><entry
557 align="char">
558<para>int fd</para>
559</entry><entry
560 align="char">
561<para>File descriptor returned by a previous call to open().</para>
562</entry>
563 </row><row><entry
564 align="char">
565<para>int request</para>
566</entry><entry
567 align="char">
568<para>Equals CA_SET_PID for this command.</para>
569</entry>
570 </row><row><entry
571 align="char">
572<para>ca_pid_t *
573</para>
574</entry><entry
575 align="char">
576<para>Undocumented.</para>
577</entry>
578 </row></tbody></tgroup></informaltable>
579&return-value-dvb;
580</section>
581
582</section>
diff --git a/Documentation/DocBook/dvb/demux.xml b/Documentation/DocBook/media/dvb/demux.xml
index 1b8c4e9835b..86de89cfbd6 100644
--- a/Documentation/DocBook/dvb/demux.xml
+++ b/Documentation/DocBook/media/dvb/demux.xml
@@ -7,15 +7,19 @@ accessed by including <emphasis role="tt">linux/dvb/dmx.h</emphasis> in your app
7<section id="dmx_types"> 7<section id="dmx_types">
8<title>Demux Data Types</title> 8<title>Demux Data Types</title>
9 9
10<section id="dmx_output_t"> 10<section id="dmx-output-t">
11<title>dmx_output_t</title> 11<title>dmx_output_t</title>
12 <programlisting> 12<programlisting>
13 typedef enum 13typedef enum
14 { 14{
15 DMX_OUT_DECODER, 15 DMX_OUT_DECODER, /&#x22C6; Streaming directly to decoder. &#x22C6;/
16 DMX_OUT_TAP, 16 DMX_OUT_TAP, /&#x22C6; Output going to a memory buffer &#x22C6;/
17 DMX_OUT_TS_TAP 17 /&#x22C6; (to be retrieved via the read command).&#x22C6;/
18 } dmx_output_t; 18 DMX_OUT_TS_TAP, /&#x22C6; Output multiplexed into a new TS &#x22C6;/
19 /&#x22C6; (to be retrieved by reading from the &#x22C6;/
20 /&#x22C6; logical DVR device). &#x22C6;/
21 DMX_OUT_TSDEMUX_TAP /&#x22C6; Like TS_TAP but retrieved from the DMX device &#x22C6;/
22} dmx_output_t;
19</programlisting> 23</programlisting>
20<para><emphasis role="tt">DMX_OUT_TAP</emphasis> delivers the stream output to the demux device on which the ioctl is 24<para><emphasis role="tt">DMX_OUT_TAP</emphasis> delivers the stream output to the demux device on which the ioctl is
21called. 25called.
@@ -26,96 +30,95 @@ specified.
26</para> 30</para>
27</section> 31</section>
28 32
29<section id="dmx_input_t"> 33<section id="dmx-input-t">
30<title>dmx_input_t</title> 34<title>dmx_input_t</title>
31 <programlisting> 35<programlisting>
32 typedef enum 36typedef enum
33 { 37{
34 DMX_IN_FRONTEND, 38 DMX_IN_FRONTEND, /&#x22C6; Input from a front-end device. &#x22C6;/
35 DMX_IN_DVR 39 DMX_IN_DVR /&#x22C6; Input from the logical DVR device. &#x22C6;/
36 } dmx_input_t; 40} dmx_input_t;
37</programlisting> 41</programlisting>
38</section> 42</section>
39 43
40<section id="dmx_pes_type_t"> 44<section id="dmx-pes-type-t">
41<title>dmx_pes_type_t</title> 45<title>dmx_pes_type_t</title>
42 <programlisting> 46<programlisting>
43 typedef enum 47typedef enum
44 { 48{
45 DMX_PES_AUDIO, 49 DMX_PES_AUDIO0,
46 DMX_PES_VIDEO, 50 DMX_PES_VIDEO0,
47 DMX_PES_TELETEXT, 51 DMX_PES_TELETEXT0,
48 DMX_PES_SUBTITLE, 52 DMX_PES_SUBTITLE0,
49 DMX_PES_PCR, 53 DMX_PES_PCR0,
50 DMX_PES_OTHER
51 } dmx_pes_type_t;
52</programlisting>
53</section>
54 54
55<section id="dmx_event_t"> 55 DMX_PES_AUDIO1,
56<title>dmx_event_t</title> 56 DMX_PES_VIDEO1,
57 <programlisting> 57 DMX_PES_TELETEXT1,
58 typedef enum 58 DMX_PES_SUBTITLE1,
59 { 59 DMX_PES_PCR1,
60 DMX_SCRAMBLING_EV,
61 DMX_FRONTEND_EV
62 } dmx_event_t;
63</programlisting>
64</section>
65 60
66<section id="dmx_scrambling_status_t"> 61 DMX_PES_AUDIO2,
67<title>dmx_scrambling_status_t</title> 62 DMX_PES_VIDEO2,
68 <programlisting> 63 DMX_PES_TELETEXT2,
69 typedef enum 64 DMX_PES_SUBTITLE2,
70 { 65 DMX_PES_PCR2,
71 DMX_SCRAMBLING_OFF, 66
72 DMX_SCRAMBLING_ON 67 DMX_PES_AUDIO3,
73 } dmx_scrambling_status_t; 68 DMX_PES_VIDEO3,
69 DMX_PES_TELETEXT3,
70 DMX_PES_SUBTITLE3,
71 DMX_PES_PCR3,
72
73 DMX_PES_OTHER
74} dmx_pes_type_t;
74</programlisting> 75</programlisting>
75</section> 76</section>
76 77
77<section id="dmx_filter"> 78<section id="dmx-filter">
78<title>struct dmx_filter</title> 79<title>struct dmx_filter</title>
79 <programlisting> 80 <programlisting>
80 typedef struct dmx_filter 81 typedef struct dmx_filter
81 { 82{
82 uint8_t filter[DMX_FILTER_SIZE]; 83 __u8 filter[DMX_FILTER_SIZE];
83 uint8_t mask[DMX_FILTER_SIZE]; 84 __u8 mask[DMX_FILTER_SIZE];
84 } dmx_filter_t; 85 __u8 mode[DMX_FILTER_SIZE];
86} dmx_filter_t;
85</programlisting> 87</programlisting>
86</section> 88</section>
87 89
88<section id="dmx_sct_filter_params"> 90<section id="dmx-sct-filter-params">
89<title>struct dmx_sct_filter_params</title> 91<title>struct dmx_sct_filter_params</title>
90 <programlisting> 92<programlisting>
91 struct dmx_sct_filter_params 93struct dmx_sct_filter_params
92 { 94{
93 uint16_t pid; 95 __u16 pid;
94 dmx_filter_t filter; 96 dmx_filter_t filter;
95 uint32_t timeout; 97 __u32 timeout;
96 uint32_t flags; 98 __u32 flags;
97 #define DMX_CHECK_CRC 1 99#define DMX_CHECK_CRC 1
98 #define DMX_ONESHOT 2 100#define DMX_ONESHOT 2
99 #define DMX_IMMEDIATE_START 4 101#define DMX_IMMEDIATE_START 4
100 }; 102#define DMX_KERNEL_CLIENT 0x8000
103};
101</programlisting> 104</programlisting>
102</section> 105</section>
103 106
104<section id="dmx_pes_filter_params"> 107<section id="dmx-pes-filter-params">
105<title>struct dmx_pes_filter_params</title> 108<title>struct dmx_pes_filter_params</title>
106 <programlisting> 109<programlisting>
107 struct dmx_pes_filter_params 110struct dmx_pes_filter_params
108 { 111{
109 uint16_t pid; 112 __u16 pid;
110 dmx_input_t input; 113 dmx_input_t input;
111 dmx_output_t output; 114 dmx_output_t output;
112 dmx_pes_type_t pes_type; 115 dmx_pes_type_t pes_type;
113 uint32_t flags; 116 __u32 flags;
114 }; 117};
115</programlisting> 118</programlisting>
116</section> 119</section>
117 120
118<section id="dmx_event"> 121<section id="dmx-event">
119<title>struct dmx_event</title> 122<title>struct dmx_event</title>
120 <programlisting> 123 <programlisting>
121 struct dmx_event 124 struct dmx_event
@@ -130,19 +133,44 @@ specified.
130</programlisting> 133</programlisting>
131</section> 134</section>
132 135
133<section id="dmx_stc"> 136<section id="dmx-stc">
134<title>struct dmx_stc</title> 137<title>struct dmx_stc</title>
135 <programlisting> 138<programlisting>
136 struct dmx_stc { 139struct dmx_stc {
137 unsigned int num; /&#x22C6; input : which STC? 0..N &#x22C6;/ 140 unsigned int num; /&#x22C6; input : which STC? 0..N &#x22C6;/
138 unsigned int base; /&#x22C6; output: divisor for stc to get 90 kHz clock &#x22C6;/ 141 unsigned int base; /&#x22C6; output: divisor for stc to get 90 kHz clock &#x22C6;/
139 uint64_t stc; /&#x22C6; output: stc in 'base'&#x22C6;90 kHz units &#x22C6;/ 142 __u64 stc; /&#x22C6; output: stc in 'base'&#x22C6;90 kHz units &#x22C6;/
140 }; 143};
141</programlisting> 144</programlisting>
142 </section> 145</section>
143 146
147<section id="dmx-caps">
148<title>struct dmx_caps</title>
149<programlisting>
150 typedef struct dmx_caps {
151 __u32 caps;
152 int num_decoders;
153} dmx_caps_t;
154</programlisting>
144</section> 155</section>
145 156
157<section id="dmx-source-t">
158<title>enum dmx_source_t</title>
159<programlisting>
160typedef enum {
161 DMX_SOURCE_FRONT0 = 0,
162 DMX_SOURCE_FRONT1,
163 DMX_SOURCE_FRONT2,
164 DMX_SOURCE_FRONT3,
165 DMX_SOURCE_DVR0 = 16,
166 DMX_SOURCE_DVR1,
167 DMX_SOURCE_DVR2,
168 DMX_SOURCE_DVR3
169} dmx_source_t;
170</programlisting>
171</section>
172
173</section>
146<section id="dmx_fcalls"> 174<section id="dmx_fcalls">
147<title>Demux Function Calls</title> 175<title>Demux Function Calls</title>
148 176
@@ -211,8 +239,7 @@ specified.
211<para>(blocking mode is the default)</para> 239<para>(blocking mode is the default)</para>
212</entry> 240</entry>
213 </row></tbody></tgroup></informaltable> 241 </row></tbody></tgroup></informaltable>
214<para>ERRORS 242<para>RETURN VALUE</para>
215</para>
216<informaltable><tgroup cols="2"><tbody><row><entry 243<informaltable><tgroup cols="2"><tbody><row><entry
217 align="char"> 244 align="char">
218<para>ENODEV</para> 245<para>ENODEV</para>
@@ -271,8 +298,7 @@ specified.
271<para>File descriptor returned by a previous call to open().</para> 298<para>File descriptor returned by a previous call to open().</para>
272</entry> 299</entry>
273 </row></tbody></tgroup></informaltable> 300 </row></tbody></tgroup></informaltable>
274<para>ERRORS 301<para>RETURN VALUE</para>
275</para>
276<informaltable><tgroup cols="2"><tbody><row><entry 302<informaltable><tgroup cols="2"><tbody><row><entry
277 align="char"> 303 align="char">
278<para>EBADF</para> 304<para>EBADF</para>
@@ -353,8 +379,7 @@ specified.
353<para>Size of buf.</para> 379<para>Size of buf.</para>
354</entry> 380</entry>
355 </row></tbody></tgroup></informaltable> 381 </row></tbody></tgroup></informaltable>
356<para>ERRORS 382<para>RETURN VALUE</para>
357</para>
358<informaltable><tgroup cols="2"><tbody><row><entry 383<informaltable><tgroup cols="2"><tbody><row><entry
359 align="char"> 384 align="char">
360<para>EWOULDBLOCK</para> 385<para>EWOULDBLOCK</para>
@@ -457,8 +482,7 @@ specified.
457<para>Size of buf.</para> 482<para>Size of buf.</para>
458</entry> 483</entry>
459 </row></tbody></tgroup></informaltable> 484 </row></tbody></tgroup></informaltable>
460<para>ERRORS 485<para>RETURN VALUE</para>
461</para>
462<informaltable><tgroup cols="2"><tbody><row><entry 486<informaltable><tgroup cols="2"><tbody><row><entry
463 align="char"> 487 align="char">
464<para>EWOULDBLOCK</para> 488<para>EWOULDBLOCK</para>
@@ -491,7 +515,7 @@ specified.
491 </row></tbody></tgroup></informaltable> 515 </row></tbody></tgroup></informaltable>
492</section> 516</section>
493 517
494<section id="dmx_start"> 518<section id="DMX_START">
495<title>DMX_START</title> 519<title>DMX_START</title>
496<para>DESCRIPTION 520<para>DESCRIPTION
497</para> 521</para>
@@ -525,17 +549,9 @@ specified.
525<para>Equals DMX_START for this command.</para> 549<para>Equals DMX_START for this command.</para>
526</entry> 550</entry>
527 </row></tbody></tgroup></informaltable> 551 </row></tbody></tgroup></informaltable>
528<para>ERRORS 552&return-value-dvb;
529</para>
530<informaltable><tgroup cols="2"><tbody><row><entry 553<informaltable><tgroup cols="2"><tbody><row><entry
531 align="char"> 554 align="char">
532<para>EBADF</para>
533</entry><entry
534 align="char">
535<para>fd is not a valid file descriptor.</para>
536</entry>
537 </row><row><entry
538 align="char">
539<para>EINVAL</para> 555<para>EINVAL</para>
540</entry><entry 556</entry><entry
541 align="char"> 557 align="char">
@@ -556,7 +572,7 @@ specified.
556 </row></tbody></tgroup></informaltable> 572 </row></tbody></tgroup></informaltable>
557</section> 573</section>
558 574
559<section id="dmx_stop"> 575<section id="DMX_STOP">
560<title>DMX_STOP</title> 576<title>DMX_STOP</title>
561<para>DESCRIPTION 577<para>DESCRIPTION
562</para> 578</para>
@@ -591,19 +607,10 @@ specified.
591<para>Equals DMX_STOP for this command.</para> 607<para>Equals DMX_STOP for this command.</para>
592</entry> 608</entry>
593 </row></tbody></tgroup></informaltable> 609 </row></tbody></tgroup></informaltable>
594<para>ERRORS 610&return-value-dvb;
595</para>
596<informaltable><tgroup cols="2"><tbody><row><entry
597 align="char">
598<para>EBADF</para>
599</entry><entry
600 align="char">
601<para>fd is not a valid file descriptor.</para>
602</entry>
603 </row></tbody></tgroup></informaltable>
604</section> 611</section>
605 612
606<section id="dmx_set_filter"> 613<section id="DMX_SET_FILTER">
607<title>DMX_SET_FILTER</title> 614<title>DMX_SET_FILTER</title>
608<para>DESCRIPTION 615<para>DESCRIPTION
609</para> 616</para>
@@ -654,26 +661,10 @@ specified.
654<para>Pointer to structure containing filter parameters.</para> 661<para>Pointer to structure containing filter parameters.</para>
655</entry> 662</entry>
656 </row></tbody></tgroup></informaltable> 663 </row></tbody></tgroup></informaltable>
657<para>ERRORS 664&return-value-dvb;
658</para>
659<informaltable><tgroup cols="2"><tbody><row><entry
660 align="char">
661<para>EBADF</para>
662</entry><entry
663 align="char">
664<para>fd is not a valid file descriptor.</para>
665</entry>
666 </row><row><entry
667 align="char">
668<para>EINVAL</para>
669</entry><entry
670 align="char">
671<para>Invalid argument.</para>
672</entry>
673 </row></tbody></tgroup></informaltable>
674</section> 665</section>
675 666
676<section id="dmx_set_pes_filter"> 667<section id="DMX_SET_PES_FILTER">
677<title>DMX_SET_PES_FILTER</title> 668<title>DMX_SET_PES_FILTER</title>
678<para>DESCRIPTION 669<para>DESCRIPTION
679</para> 670</para>
@@ -727,24 +718,9 @@ specified.
727<para>Pointer to structure containing filter parameters.</para> 718<para>Pointer to structure containing filter parameters.</para>
728</entry> 719</entry>
729 </row></tbody></tgroup></informaltable> 720 </row></tbody></tgroup></informaltable>
730<para>ERRORS 721&return-value-dvb;
731</para>
732<informaltable><tgroup cols="2"><tbody><row><entry 722<informaltable><tgroup cols="2"><tbody><row><entry
733 align="char"> 723 align="char">
734<para>EBADF</para>
735</entry><entry
736 align="char">
737<para>fd is not a valid file descriptor.</para>
738</entry>
739 </row><row><entry
740 align="char">
741<para>EINVAL</para>
742</entry><entry
743 align="char">
744<para>Invalid argument.</para>
745</entry>
746 </row><row><entry
747 align="char">
748<para>EBUSY</para> 724<para>EBUSY</para>
749</entry><entry 725</entry><entry
750 align="char"> 726 align="char">
@@ -756,7 +732,7 @@ specified.
756 </row></tbody></tgroup></informaltable> 732 </row></tbody></tgroup></informaltable>
757</section> 733</section>
758 734
759<section id="dms_set_buffer_size"> 735<section id="DMX_SET_BUFFER_SIZE">
760<title>DMX_SET_BUFFER_SIZE</title> 736<title>DMX_SET_BUFFER_SIZE</title>
761<para>DESCRIPTION 737<para>DESCRIPTION
762</para> 738</para>
@@ -799,27 +775,10 @@ specified.
799<para>Size of circular buffer.</para> 775<para>Size of circular buffer.</para>
800</entry> 776</entry>
801 </row></tbody></tgroup></informaltable> 777 </row></tbody></tgroup></informaltable>
802<para>ERRORS 778&return-value-dvb;
803</para>
804<informaltable><tgroup cols="2"><tbody><row><entry
805 align="char">
806<para>EBADF</para>
807</entry><entry
808 align="char">
809<para>fd is not a valid file descriptor.</para>
810</entry>
811 </row><row><entry
812 align="char">
813<para>ENOMEM</para>
814</entry><entry
815 align="char">
816<para>The driver was not able to allocate a buffer of the
817 requested size.</para>
818</entry>
819 </row></tbody></tgroup></informaltable>
820</section> 779</section>
821 780
822<section id="dmx_get_event"> 781<section id="DMX_GET_EVENT">
823<title>DMX_GET_EVENT</title> 782<title>DMX_GET_EVENT</title>
824<para>DESCRIPTION 783<para>DESCRIPTION
825</para> 784</para>
@@ -872,24 +831,9 @@ specified.
872<para>Pointer to the location where the event is to be stored.</para> 831<para>Pointer to the location where the event is to be stored.</para>
873</entry> 832</entry>
874 </row></tbody></tgroup></informaltable> 833 </row></tbody></tgroup></informaltable>
875<para>ERRORS 834&return-value-dvb;
876</para>
877<informaltable><tgroup cols="2"><tbody><row><entry 835<informaltable><tgroup cols="2"><tbody><row><entry
878 align="char"> 836 align="char">
879<para>EBADF</para>
880</entry><entry
881 align="char">
882<para>fd is not a valid file descriptor.</para>
883</entry>
884 </row><row><entry
885 align="char">
886<para>EFAULT</para>
887</entry><entry
888 align="char">
889<para>ev points to an invalid address.</para>
890</entry>
891 </row><row><entry
892 align="char">
893<para>EWOULDBLOCK</para> 837<para>EWOULDBLOCK</para>
894</entry><entry 838</entry><entry
895 align="char"> 839 align="char">
@@ -899,7 +843,7 @@ specified.
899 </row></tbody></tgroup></informaltable> 843 </row></tbody></tgroup></informaltable>
900</section> 844</section>
901 845
902<section id="dmx_get_stc"> 846<section id="DMX_GET_STC">
903<title>DMX_GET_STC</title> 847<title>DMX_GET_STC</title>
904<para>DESCRIPTION 848<para>DESCRIPTION
905</para> 849</para>
@@ -946,28 +890,241 @@ specified.
946<para>Pointer to the location where the stc is to be stored.</para> 890<para>Pointer to the location where the stc is to be stored.</para>
947</entry> 891</entry>
948 </row></tbody></tgroup></informaltable> 892 </row></tbody></tgroup></informaltable>
949<para>ERRORS 893&return-value-dvb;
894<informaltable><tgroup cols="2"><tbody><row><entry
895 align="char">
896<para>EINVAL</para>
897</entry><entry
898 align="char">
899<para>Invalid stc number.</para>
900</entry>
901 </row></tbody></tgroup></informaltable>
902 </section>
903
904<section id="DMX_GET_PES_PIDS"
905role="subsection"><title>DMX_GET_PES_PIDS</title>
906<para>DESCRIPTION
907</para>
908<informaltable><tgroup cols="1"><tbody><row><entry
909 align="char">
910<para>This ioctl is undocumented. Documentation is welcome.</para>
911</entry>
912 </row></tbody></tgroup></informaltable>
913<para>SYNOPSIS
914</para>
915<informaltable><tgroup cols="1"><tbody><row><entry
916 align="char">
917<para>int ioctl(fd, int request = DMX_GET_PES_PIDS,
918 __u16[5]);</para>
919</entry>
920 </row></tbody></tgroup></informaltable>
921<para>PARAMETERS
950</para> 922</para>
951<informaltable><tgroup cols="2"><tbody><row><entry 923<informaltable><tgroup cols="2"><tbody><row><entry
952 align="char"> 924 align="char">
953<para>EBADF</para> 925<para>int fd</para>
954</entry><entry 926</entry><entry
955 align="char"> 927 align="char">
956<para>fd is not a valid file descriptor.</para> 928<para>File descriptor returned by a previous call to open().</para>
957</entry> 929</entry>
958 </row><row><entry 930 </row><row><entry
959 align="char"> 931 align="char">
960<para>EFAULT</para> 932<para>int request</para>
961</entry><entry 933</entry><entry
962 align="char"> 934 align="char">
963<para>stc points to an invalid address.</para> 935<para>Equals DMX_GET_PES_PIDS for this command.</para>
964</entry> 936</entry>
965 </row><row><entry 937 </row><row><entry
966 align="char"> 938 align="char">
967<para>EINVAL</para> 939<para>__u16[5]
940</para>
968</entry><entry 941</entry><entry
969 align="char"> 942 align="char">
970<para>Invalid stc number.</para> 943<para>Undocumented.</para>
944</entry>
945 </row></tbody></tgroup></informaltable>
946&return-value-dvb;
947</section>
948
949<section id="DMX_GET_CAPS"
950role="subsection"><title>DMX_GET_CAPS</title>
951<para>DESCRIPTION
952</para>
953<informaltable><tgroup cols="1"><tbody><row><entry
954 align="char">
955<para>This ioctl is undocumented. Documentation is welcome.</para>
956</entry>
957 </row></tbody></tgroup></informaltable>
958<para>SYNOPSIS
959</para>
960<informaltable><tgroup cols="1"><tbody><row><entry
961 align="char">
962<para>int ioctl(fd, int request = DMX_GET_CAPS,
963 dmx_caps_t *);</para>
964</entry>
965 </row></tbody></tgroup></informaltable>
966<para>PARAMETERS
967</para>
968<informaltable><tgroup cols="2"><tbody><row><entry
969 align="char">
970<para>int fd</para>
971</entry><entry
972 align="char">
973<para>File descriptor returned by a previous call to open().</para>
974</entry>
975 </row><row><entry
976 align="char">
977<para>int request</para>
978</entry><entry
979 align="char">
980<para>Equals DMX_GET_CAPS for this command.</para>
981</entry>
982 </row><row><entry
983 align="char">
984<para>dmx_caps_t *
985</para>
986</entry><entry
987 align="char">
988<para>Undocumented.</para>
989</entry>
990 </row></tbody></tgroup></informaltable>
991&return-value-dvb;
992</section>
993
994<section id="DMX_SET_SOURCE"
995role="subsection"><title>DMX_SET_SOURCE</title>
996<para>DESCRIPTION
997</para>
998<informaltable><tgroup cols="1"><tbody><row><entry
999 align="char">
1000<para>This ioctl is undocumented. Documentation is welcome.</para>
1001</entry>
1002 </row></tbody></tgroup></informaltable>
1003<para>SYNOPSIS
1004</para>
1005<informaltable><tgroup cols="1"><tbody><row><entry
1006 align="char">
1007<para>int ioctl(fd, int request = DMX_SET_SOURCE,
1008 dmx_source_t *);</para>
1009</entry>
1010 </row></tbody></tgroup></informaltable>
1011<para>PARAMETERS
1012</para>
1013<informaltable><tgroup cols="2"><tbody><row><entry
1014 align="char">
1015<para>int fd</para>
1016</entry><entry
1017 align="char">
1018<para>File descriptor returned by a previous call to open().</para>
1019</entry>
1020 </row><row><entry
1021 align="char">
1022<para>int request</para>
1023</entry><entry
1024 align="char">
1025<para>Equals DMX_SET_SOURCE for this command.</para>
1026</entry>
1027 </row><row><entry
1028 align="char">
1029<para>dmx_source_t *
1030</para>
1031</entry><entry
1032 align="char">
1033<para>Undocumented.</para>
971</entry> 1034</entry>
972 </row></tbody></tgroup></informaltable> 1035 </row></tbody></tgroup></informaltable>
973 </section></section> 1036&return-value-dvb;
1037</section>
1038
1039<section id="DMX_ADD_PID"
1040role="subsection"><title>DMX_ADD_PID</title>
1041<para>DESCRIPTION
1042</para>
1043<informaltable><tgroup cols="1"><tbody><row><entry
1044 align="char">
1045<para>This ioctl is undocumented. Documentation is welcome.</para>
1046</entry>
1047 </row></tbody></tgroup></informaltable>
1048<para>SYNOPSIS
1049</para>
1050<informaltable><tgroup cols="1"><tbody><row><entry
1051 align="char">
1052<para>int ioctl(fd, int request = DMX_ADD_PID,
1053 __u16 *);</para>
1054</entry>
1055 </row></tbody></tgroup></informaltable>
1056<para>PARAMETERS
1057</para>
1058<informaltable><tgroup cols="2"><tbody><row><entry
1059 align="char">
1060<para>int fd</para>
1061</entry><entry
1062 align="char">
1063<para>File descriptor returned by a previous call to open().</para>
1064</entry>
1065 </row><row><entry
1066 align="char">
1067<para>int request</para>
1068</entry><entry
1069 align="char">
1070<para>Equals DMX_ADD_PID for this command.</para>
1071</entry>
1072 </row><row><entry
1073 align="char">
1074<para>__u16 *
1075</para>
1076</entry><entry
1077 align="char">
1078<para>Undocumented.</para>
1079</entry>
1080 </row></tbody></tgroup></informaltable>
1081&return-value-dvb;
1082</section>
1083
1084<section id="DMX_REMOVE_PID"
1085role="subsection"><title>DMX_REMOVE_PID</title>
1086<para>DESCRIPTION
1087</para>
1088<informaltable><tgroup cols="1"><tbody><row><entry
1089 align="char">
1090<para>This ioctl is undocumented. Documentation is welcome.</para>
1091</entry>
1092 </row></tbody></tgroup></informaltable>
1093<para>SYNOPSIS
1094</para>
1095<informaltable><tgroup cols="1"><tbody><row><entry
1096 align="char">
1097<para>int ioctl(fd, int request = DMX_REMOVE_PID,
1098 __u16 *);</para>
1099</entry>
1100 </row></tbody></tgroup></informaltable>
1101<para>PARAMETERS
1102</para>
1103<informaltable><tgroup cols="2"><tbody><row><entry
1104 align="char">
1105<para>int fd</para>
1106</entry><entry
1107 align="char">
1108<para>File descriptor returned by a previous call to open().</para>
1109</entry>
1110 </row><row><entry
1111 align="char">
1112<para>int request</para>
1113</entry><entry
1114 align="char">
1115<para>Equals DMX_REMOVE_PID for this command.</para>
1116</entry>
1117 </row><row><entry
1118 align="char">
1119<para>__u16 *
1120</para>
1121</entry><entry
1122 align="char">
1123<para>Undocumented.</para>
1124</entry>
1125 </row></tbody></tgroup></informaltable>
1126&return-value-dvb;
1127</section>
1128
1129
1130</section>
diff --git a/Documentation/DocBook/dvb/dvbapi.xml b/Documentation/DocBook/media/dvb/dvbapi.xml
index 9fad86ce7f5..757488b24f4 100644
--- a/Documentation/DocBook/dvb/dvbapi.xml
+++ b/Documentation/DocBook/media/dvb/dvbapi.xml
@@ -28,7 +28,7 @@
28 <holder>Convergence GmbH</holder> 28 <holder>Convergence GmbH</holder>
29</copyright> 29</copyright>
30<copyright> 30<copyright>
31 <year>2009-2011</year> 31 <year>2009-2012</year>
32 <holder>Mauro Carvalho Chehab</holder> 32 <holder>Mauro Carvalho Chehab</holder>
33</copyright> 33</copyright>
34 34
@@ -84,7 +84,7 @@ Added ISDB-T test originally written by Patrick Boettcher
84 84
85 85
86<title>LINUX DVB API</title> 86<title>LINUX DVB API</title>
87<subtitle>Version 5.2</subtitle> 87<subtitle>Version 5.8</subtitle>
88<!-- ADD THE CHAPTERS HERE --> 88<!-- ADD THE CHAPTERS HERE -->
89 <chapter id="dvb_introdution"> 89 <chapter id="dvb_introdution">
90 &sub-intro; 90 &sub-intro;
@@ -114,8 +114,28 @@ Added ISDB-T test originally written by Patrick Boettcher
114 &sub-examples; 114 &sub-examples;
115 </chapter> 115 </chapter>
116<!-- END OF CHAPTERS --> 116<!-- END OF CHAPTERS -->
117 <appendix id="audio_h">
118 <title>DVB Audio Header File</title>
119 &sub-audio-h;
120 </appendix>
121 <appendix id="ca_h">
122 <title>DVB Conditional Access Header File</title>
123 &sub-ca-h;
124 </appendix>
125 <appendix id="dmx_h">
126 <title>DVB Demux Header File</title>
127 &sub-dmx-h;
128 </appendix>
117 <appendix id="frontend_h"> 129 <appendix id="frontend_h">
118 <title>DVB Frontend Header File</title> 130 <title>DVB Frontend Header File</title>
119 &sub-frontend-h; 131 &sub-frontend-h;
120 </appendix> 132 </appendix>
133 <appendix id="net_h">
134 <title>DVB Network Header File</title>
135 &sub-net-h;
136 </appendix>
137 <appendix id="video_h">
138 <title>DVB Video Header File</title>
139 &sub-video-h;
140 </appendix>
121 141
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml
new file mode 100644
index 00000000000..957e3acaae8
--- /dev/null
+++ b/Documentation/DocBook/media/dvb/dvbproperty.xml
@@ -0,0 +1,1105 @@
1<section id="FE_GET_SET_PROPERTY">
2<title><constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></title>
3<para>This section describes the DVB version 5 extention of the DVB-API, also
4called "S2API", as this API were added to provide support for DVB-S2. It was
5designed to be able to replace the old frontend API. Yet, the DISEQC and
6the capability ioctls weren't implemented yet via the new way.</para>
7<para>The typical usage for the <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant>
8API is to replace the ioctl's were the <link linkend="dvb-frontend-parameters">
9struct <constant>dvb_frontend_parameters</constant></link> were used.</para>
10<section id="dtv-property">
11<title>DTV property type</title>
12<programlisting>
13/* Reserved fields should be set to 0 */
14struct dtv_property {
15 __u32 cmd;
16 union {
17 __u32 data;
18 struct {
19 __u8 data[32];
20 __u32 len;
21 __u32 reserved1[3];
22 void *reserved2;
23 } buffer;
24 } u;
25 int result;
26} __attribute__ ((packed));
27
28/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
29#define DTV_IOCTL_MAX_MSGS 64
30</programlisting>
31</section>
32<section id="dtv-properties">
33<title>DTV properties type</title>
34<programlisting>
35struct dtv_properties {
36 __u32 num;
37 struct dtv_property *props;
38};
39</programlisting>
40</section>
41
42<section id="FE_GET_PROPERTY">
43<title>FE_GET_PROPERTY</title>
44<para>DESCRIPTION
45</para>
46<informaltable><tgroup cols="1"><tbody><row><entry
47 align="char">
48<para>This ioctl call returns one or more frontend properties. This call only
49 requires read-only access to the device.</para>
50</entry>
51 </row></tbody></tgroup></informaltable>
52<para>SYNOPSIS
53</para>
54<informaltable><tgroup cols="1"><tbody><row><entry
55 align="char">
56<para>int ioctl(int fd, int request = <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>,
57 dtv_properties &#x22C6;props);</para>
58</entry>
59 </row></tbody></tgroup></informaltable>
60<para>PARAMETERS
61</para>
62<informaltable><tgroup cols="2"><tbody><row><entry align="char">
63<para>int fd</para>
64</entry><entry
65 align="char">
66<para>File descriptor returned by a previous call to open().</para>
67</entry>
68 </row><row><entry
69 align="char">
70<para>int num</para>
71</entry><entry
72 align="char">
73<para>Equals <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link> for this command.</para>
74</entry>
75 </row><row><entry
76 align="char">
77<para>struct dtv_property *props</para>
78</entry><entry
79 align="char">
80<para>Points to the location where the front-end property commands are stored.</para>
81</entry>
82 </row></tbody></tgroup></informaltable>
83&return-value-dvb;
84<informaltable><tgroup cols="2"><tbody><row>
85 <entry align="char"><para>EOPNOTSUPP</para></entry>
86 <entry align="char"><para>Property type not supported.</para></entry>
87 </row></tbody></tgroup></informaltable>
88</section>
89
90<section id="FE_SET_PROPERTY">
91<title>FE_SET_PROPERTY</title>
92<para>DESCRIPTION
93</para>
94<informaltable><tgroup cols="1"><tbody><row><entry
95 align="char">
96<para>This ioctl call sets one or more frontend properties. This call only
97 requires read-only access to the device.</para>
98</entry>
99 </row></tbody></tgroup></informaltable>
100<para>SYNOPSIS
101</para>
102<informaltable><tgroup cols="1"><tbody><row><entry
103 align="char">
104<para>int ioctl(int fd, int request = <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
105 dtv_properties &#x22C6;props);</para>
106</entry>
107 </row></tbody></tgroup></informaltable>
108<para>PARAMETERS
109</para>
110<informaltable><tgroup cols="2"><tbody><row><entry align="char">
111<para>int fd</para>
112</entry><entry
113 align="char">
114<para>File descriptor returned by a previous call to open().</para>
115</entry>
116 </row><row><entry
117 align="char">
118<para>int num</para>
119</entry><entry
120 align="char">
121<para>Equals <link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link> for this command.</para>
122</entry>
123 </row><row><entry
124 align="char">
125<para>struct dtv_property *props</para>
126</entry><entry
127 align="char">
128<para>Points to the location where the front-end property commands are stored.</para>
129</entry>
130 </row></tbody></tgroup></informaltable>
131&return-value-dvb;
132<informaltable><tgroup cols="2"><tbody><row>
133 <entry align="char"><para>EOPNOTSUPP</para></entry>
134 <entry align="char"><para>Property type not supported.</para></entry>
135 </row></tbody></tgroup></informaltable>
136</section>
137
138<section>
139 <title>Property types</title>
140<para>
141On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY</link>/<link linkend="FE_SET_PROPERTY">FE_SET_PROPERTY</link>,
142the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
143get/set up to 64 properties. The actual meaning of each property is described on the next sections.
144</para>
145
146<para>The available frontend property types are shown on the next section.</para>
147</section>
148
149<section id="fe_property_parameters">
150 <title>Digital TV property parameters</title>
151 <section id="DTV-UNDEFINED">
152 <title><constant>DTV_UNDEFINED</constant></title>
153 <para>Used internally. A GET/SET operation for it won't change or return anything.</para>
154 </section>
155 <section id="DTV-TUNE">
156 <title><constant>DTV_TUNE</constant></title>
157 <para>Interpret the cache of data, build either a traditional frontend tunerequest so we can pass validation in the <constant>FE_SET_FRONTEND</constant> ioctl.</para>
158 </section>
159 <section id="DTV-CLEAR">
160 <title><constant>DTV_CLEAR</constant></title>
161 <para>Reset a cache of data specific to the frontend here. This does not effect hardware.</para>
162 </section>
163 <section id="DTV-FREQUENCY">
164 <title><constant>DTV_FREQUENCY</constant></title>
165
166 <para>Central frequency of the channel.</para>
167
168 <para>Notes:</para>
169 <para>1)For satellital delivery systems, it is measured in kHz.
170 For the other ones, it is measured in Hz.</para>
171 <para>2)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
172 E.g. a valid frequncy could be 474143 kHz. The stepping is bound to the bandwidth of
173 the channel which is 6MHz.</para>
174
175 <para>3)As in ISDB-Tsb the channel consists of only one or three segments the
176 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
177 central frequency of the channel is expected.</para>
178 </section>
179 <section id="DTV-MODULATION">
180 <title><constant>DTV_MODULATION</constant></title>
181<para>Specifies the frontend modulation type for cable and satellite types. The modulation can be one of the types bellow:</para>
182<programlisting>
183 typedef enum fe_modulation {
184 QPSK,
185 QAM_16,
186 QAM_32,
187 QAM_64,
188 QAM_128,
189 QAM_256,
190 QAM_AUTO,
191 VSB_8,
192 VSB_16,
193 PSK_8,
194 APSK_16,
195 APSK_32,
196 DQPSK,
197 QAM_4_NR,
198 } fe_modulation_t;
199</programlisting>
200 </section>
201 <section id="DTV-BANDWIDTH-HZ">
202 <title><constant>DTV_BANDWIDTH_HZ</constant></title>
203
204 <para>Bandwidth for the channel, in HZ.</para>
205
206 <para>Possible values:
207 <constant>1712000</constant>,
208 <constant>5000000</constant>,
209 <constant>6000000</constant>,
210 <constant>7000000</constant>,
211 <constant>8000000</constant>,
212 <constant>10000000</constant>.
213 </para>
214
215 <para>Notes:</para>
216
217 <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para>
218 <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para>
219 <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth
220 for DVB-C depends on the symbol rate</para>
221 <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from
222 other parameters (DTV_ISDBT_SB_SEGMENT_IDX,
223 DTV_ISDBT_SB_SEGMENT_COUNT).</para>
224 <para>5) DVB-T supports 6, 7 and 8MHz.</para>
225 <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para>
226 </section>
227 <section id="DTV-INVERSION">
228 <title><constant>DTV_INVERSION</constant></title>
229 <para>The Inversion field can take one of these values:
230 </para>
231 <programlisting>
232 typedef enum fe_spectral_inversion {
233 INVERSION_OFF,
234 INVERSION_ON,
235 INVERSION_AUTO
236 } fe_spectral_inversion_t;
237 </programlisting>
238 <para>It indicates if spectral inversion should be presumed or not. In the automatic setting
239 (<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by
240 itself.
241 </para>
242 </section>
243 <section id="DTV-DISEQC-MASTER">
244 <title><constant>DTV_DISEQC_MASTER</constant></title>
245 <para>Currently not implemented.</para>
246 </section>
247 <section id="DTV-SYMBOL-RATE">
248 <title><constant>DTV_SYMBOL_RATE</constant></title>
249 <para>Digital TV symbol rate, in bauds (symbols/second). Used on cable standards.</para>
250 </section>
251 <section id="DTV-INNER-FEC">
252 <title><constant>DTV_INNER_FEC</constant></title>
253 <para>Used cable/satellite transmissions. The acceptable values are:
254 </para>
255 <programlisting>
256typedef enum fe_code_rate {
257 FEC_NONE = 0,
258 FEC_1_2,
259 FEC_2_3,
260 FEC_3_4,
261 FEC_4_5,
262 FEC_5_6,
263 FEC_6_7,
264 FEC_7_8,
265 FEC_8_9,
266 FEC_AUTO,
267 FEC_3_5,
268 FEC_9_10,
269 FEC_2_5,
270} fe_code_rate_t;
271 </programlisting>
272 <para>which correspond to error correction rates of 1/2, 2/3, etc.,
273 no error correction or auto detection.</para>
274 </section>
275 <section id="DTV-VOLTAGE">
276 <title><constant>DTV_VOLTAGE</constant></title>
277 <para>The voltage is usually used with non-DiSEqC capable LNBs to switch
278 the polarzation (horizontal/vertical). When using DiSEqC epuipment this
279 voltage has to be switched consistently to the DiSEqC commands as
280 described in the DiSEqC spec.</para>
281 <programlisting>
282 typedef enum fe_sec_voltage {
283 SEC_VOLTAGE_13,
284 SEC_VOLTAGE_18
285 } fe_sec_voltage_t;
286 </programlisting>
287 </section>
288 <section id="DTV-TONE">
289 <title><constant>DTV_TONE</constant></title>
290 <para>Currently not used.</para>
291 </section>
292 <section id="DTV-PILOT">
293 <title><constant>DTV_PILOT</constant></title>
294 <para>Sets DVB-S2 pilot</para>
295 <section id="fe-pilot-t">
296 <title>fe_pilot type</title>
297 <programlisting>
298typedef enum fe_pilot {
299 PILOT_ON,
300 PILOT_OFF,
301 PILOT_AUTO,
302} fe_pilot_t;
303 </programlisting>
304 </section>
305 </section>
306 <section id="DTV-ROLLOFF">
307 <title><constant>DTV_ROLLOFF</constant></title>
308 <para>Sets DVB-S2 rolloff</para>
309
310 <section id="fe-rolloff-t">
311 <title>fe_rolloff type</title>
312 <programlisting>
313typedef enum fe_rolloff {
314 ROLLOFF_35, /* Implied value in DVB-S, default for DVB-S2 */
315 ROLLOFF_20,
316 ROLLOFF_25,
317 ROLLOFF_AUTO,
318} fe_rolloff_t;
319 </programlisting>
320 </section>
321 </section>
322 <section id="DTV-DISEQC-SLAVE-REPLY">
323 <title><constant>DTV_DISEQC_SLAVE_REPLY</constant></title>
324 <para>Currently not implemented.</para>
325 </section>
326 <section id="DTV-FE-CAPABILITY-COUNT">
327 <title><constant>DTV_FE_CAPABILITY_COUNT</constant></title>
328 <para>Currently not implemented.</para>
329 </section>
330 <section id="DTV-FE-CAPABILITY">
331 <title><constant>DTV_FE_CAPABILITY</constant></title>
332 <para>Currently not implemented.</para>
333 </section>
334 <section id="DTV-DELIVERY-SYSTEM">
335 <title><constant>DTV_DELIVERY_SYSTEM</constant></title>
336 <para>Specifies the type of Delivery system</para>
337 <section id="fe-delivery-system-t">
338 <title>fe_delivery_system type</title>
339 <para>Possible values: </para>
340<programlisting>
341
342typedef enum fe_delivery_system {
343 SYS_UNDEFINED,
344 SYS_DVBC_ANNEX_A,
345 SYS_DVBC_ANNEX_B,
346 SYS_DVBT,
347 SYS_DSS,
348 SYS_DVBS,
349 SYS_DVBS2,
350 SYS_DVBH,
351 SYS_ISDBT,
352 SYS_ISDBS,
353 SYS_ISDBC,
354 SYS_ATSC,
355 SYS_ATSCMH,
356 SYS_DTMB,
357 SYS_CMMB,
358 SYS_DAB,
359 SYS_DVBT2,
360 SYS_TURBO,
361 SYS_DVBC_ANNEX_C,
362} fe_delivery_system_t;
363</programlisting>
364 </section>
365 </section>
366 <section id="DTV-ISDBT-PARTIAL-RECEPTION">
367 <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title>
368
369 <para>If <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether
370 the channel is in partial reception mode or not.</para>
371
372 <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and
373 <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para>
374
375 <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'
376 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel
377 is consisting of one segment and layer or three segments and two layers.</para>
378
379 <para>Possible values: 0, 1, -1 (AUTO)</para>
380 </section>
381 <section id="DTV-ISDBT-SOUND-BROADCASTING">
382 <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title>
383
384 <para>This field represents whether the other DTV_ISDBT_*-parameters are
385 referring to an ISDB-T and an ISDB-Tsb channel. (See also
386 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para>
387
388 <para>Possible values: 0, 1, -1 (AUTO)</para>
389 </section>
390 <section id="DTV-ISDBT-SB-SUBCHANNEL-ID">
391 <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title>
392
393 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
394
395 <para>(Note of the author: This might not be the correct description of the
396 <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical
397 background needed to program a device)</para>
398
399 <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a
400 set of connected ISDB-Tsb channels. In this set of channels every
401 channel can be received independently. The number of connected
402 ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum
403 bandwidth available.</para>
404
405 <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The
406 broadcaster has several possibilities to put those channels in the
407 air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8
408 segments from position 1-8 to 5-13 or anything in between.</para>
409
410 <para>The underlying layer of segments are subchannels: each segment is
411 consisting of several subchannels with a predefined IDs. A sub-channel
412 is used to help the demodulator to synchronize on the channel.</para>
413
414 <para>An ISDB-T channel is always centered over all sub-channels. As for
415 the example above, in ISDB-Tsb it is no longer as simple as that.</para>
416
417 <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the
418 sub-channel ID of the segment to be demodulated.</para>
419
420 <para>Possible values: 0 .. 41, -1 (AUTO)</para>
421 </section>
422 <section id="DTV-ISDBT-SB-SEGMENT-IDX">
423 <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title>
424 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
425 <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be
426 demodulated for an ISDB-Tsb channel where several of them are
427 transmitted in the connected manner.</para>
428 <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para>
429 <para>Note: This value cannot be determined by an automatic channel search.</para>
430 </section>
431 <section id="DTV-ISDBT-SB-SEGMENT-COUNT">
432 <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title>
433 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
434 <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb
435 channels.</para>
436 <para>Possible values: 1 .. 13</para>
437 <para>Note: This value cannot be determined by an automatic channel search.</para>
438 </section>
439 <section id="isdb-hierq-layers">
440 <title><constant>DTV-ISDBT-LAYER*</constant> parameters</title>
441 <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
442 ISDB-T hierarchical layers can be decoded simultaneously. For that
443 reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.</para>
444 <para>ISDB-T has 3 hierarchical layers which each can use a part of the
445 available segments. The total number of segments over all layers has
446 to 13 in ISDB-T.</para>
447 <para>There are 3 parameter sets, for Layers A, B and C.</para>
448 <section id="DTV-ISDBT-LAYER-ENABLED">
449 <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title>
450 <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling
451 layers in the decoding process. Setting all bits of
452 <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be
453 demodulated. This is the default.</para>
454 <para>If the channel is in the partial reception mode
455 (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded
456 independently of the other 12 segments. In that mode layer A has to
457 have a <constant>SEGMENT_COUNT</constant> of 1.</para>
458 <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb
459 according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled
460 accordingly.</para>
461 <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para>
462 <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para>
463 <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para>
464 <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para>
465 <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para>
466 </section>
467 <section id="DTV-ISDBT-LAYER-FEC">
468 <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title>
469 <para>Possible values: <constant>FEC_AUTO</constant>, <constant>FEC_1_2</constant>, <constant>FEC_2_3</constant>, <constant>FEC_3_4</constant>, <constant>FEC_5_6</constant>, <constant>FEC_7_8</constant></para>
470 </section>
471 <section id="DTV-ISDBT-LAYER-MODULATION">
472 <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title>
473 <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para>
474 <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant>
475 and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para>
476 </section>
477 <section id="DTV-ISDBT-LAYER-SEGMENT-COUNT">
478 <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title>
479 <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para>
480 <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and
481 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para>
482 <informaltable id="isdbt-layer_seg-cnt-table">
483 <tgroup cols="6">
484 <tbody>
485 <row>
486 <entry>PR</entry>
487 <entry>SB</entry>
488 <entry>Layer A width</entry>
489 <entry>Layer B width</entry>
490 <entry>Layer C width</entry>
491 <entry>total width</entry>
492 </row>
493 <row>
494 <entry>0</entry>
495 <entry>0</entry>
496 <entry>1 .. 13</entry>
497 <entry>1 .. 13</entry>
498 <entry>1 .. 13</entry>
499 <entry>13</entry>
500 </row>
501 <row>
502 <entry>1</entry>
503 <entry>0</entry>
504 <entry>1</entry>
505 <entry>1 .. 13</entry>
506 <entry>1 .. 13</entry>
507 <entry>13</entry>
508 </row>
509 <row>
510 <entry>0</entry>
511 <entry>1</entry>
512 <entry>1</entry>
513 <entry>0</entry>
514 <entry>0</entry>
515 <entry>1</entry>
516 </row>
517 <row>
518 <entry>1</entry>
519 <entry>1</entry>
520 <entry>1</entry>
521 <entry>2</entry>
522 <entry>0</entry>
523 <entry>13</entry>
524 </row>
525 </tbody>
526 </tgroup>
527 </informaltable>
528 </section>
529 <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING">
530 <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title>
531 <para>Possible values: 0, 1, 2, 3, -1 (AUTO)</para>
532 <para>Note: The real inter-leaver depth-names depend on the mode (fft-size); the values
533 here are referring to what can be found in the TMCC-structure -
534 independent of the mode.</para>
535 </section>
536 <section id="DTV-ATSCMH-FIC-VER">
537 <title><constant>DTV_ATSCMH_FIC_VER</constant></title>
538 <para>Version number of the FIC (Fast Information Channel) signaling data.</para>
539 <para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para>
540 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
541 </section>
542 <section id="DTV-ATSCMH-PARADE-ID">
543 <title><constant>DTV_ATSCMH_PARADE_ID</constant></title>
544 <para>Parade identification number</para>
545 <para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para>
546 <para>Possible values: 0, 1, 2, 3, ..., 126, 127</para>
547 </section>
548 <section id="DTV-ATSCMH-NOG">
549 <title><constant>DTV_ATSCMH_NOG</constant></title>
550 <para>Number of MH groups per MH subframe for a designated parade.</para>
551 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
552 </section>
553 <section id="DTV-ATSCMH-TNOG">
554 <title><constant>DTV_ATSCMH_TNOG</constant></title>
555 <para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para>
556 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
557 </section>
558 <section id="DTV-ATSCMH-SGN">
559 <title><constant>DTV_ATSCMH_SGN</constant></title>
560 <para>Start group number.</para>
561 <para>Possible values: 0, 1, 2, 3, ..., 14, 15</para>
562 </section>
563 <section id="DTV-ATSCMH-PRC">
564 <title><constant>DTV_ATSCMH_PRC</constant></title>
565 <para>Parade repetition cycle.</para>
566 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
567 </section>
568 <section id="DTV-ATSCMH-RS-FRAME-MODE">
569 <title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title>
570 <para>RS frame mode.</para>
571 <para>Possible values are:</para>
572 <para id="atscmh-rs-frame-mode">
573<programlisting>
574typedef enum atscmh_rs_frame_mode {
575 ATSCMH_RSFRAME_PRI_ONLY = 0,
576 ATSCMH_RSFRAME_PRI_SEC = 1,
577} atscmh_rs_frame_mode_t;
578</programlisting>
579 </para>
580 </section>
581 <section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE">
582 <title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title>
583 <para>RS frame ensemble.</para>
584 <para>Possible values are:</para>
585 <para id="atscmh-rs-frame-ensemble">
586<programlisting>
587typedef enum atscmh_rs_frame_ensemble {
588 ATSCMH_RSFRAME_ENS_PRI = 0,
589 ATSCMH_RSFRAME_ENS_SEC = 1,
590} atscmh_rs_frame_ensemble_t;
591</programlisting>
592 </para>
593 </section>
594 <section id="DTV-ATSCMH-RS-CODE-MODE-PRI">
595 <title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title>
596 <para>RS code mode (primary).</para>
597 <para>Possible values are:</para>
598 <para id="atscmh-rs-code-mode">
599<programlisting>
600typedef enum atscmh_rs_code_mode {
601 ATSCMH_RSCODE_211_187 = 0,
602 ATSCMH_RSCODE_223_187 = 1,
603 ATSCMH_RSCODE_235_187 = 2,
604} atscmh_rs_code_mode_t;
605</programlisting>
606 </para>
607 </section>
608 <section id="DTV-ATSCMH-RS-CODE-MODE-SEC">
609 <title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title>
610 <para>RS code mode (secondary).</para>
611 <para>Possible values are:</para>
612<programlisting>
613typedef enum atscmh_rs_code_mode {
614 ATSCMH_RSCODE_211_187 = 0,
615 ATSCMH_RSCODE_223_187 = 1,
616 ATSCMH_RSCODE_235_187 = 2,
617} atscmh_rs_code_mode_t;
618</programlisting>
619 </section>
620 <section id="DTV-ATSCMH-SCCC-BLOCK-MODE">
621 <title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title>
622 <para>Series Concatenated Convolutional Code Block Mode.</para>
623 <para>Possible values are:</para>
624 <para id="atscmh-sccc-block-mode">
625<programlisting>
626typedef enum atscmh_sccc_block_mode {
627 ATSCMH_SCCC_BLK_SEP = 0,
628 ATSCMH_SCCC_BLK_COMB = 1,
629} atscmh_sccc_block_mode_t;
630</programlisting>
631 </para>
632 </section>
633 <section id="DTV-ATSCMH-SCCC-CODE-MODE-A">
634 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title>
635 <para>Series Concatenated Convolutional Code Rate.</para>
636 <para>Possible values are:</para>
637 <para id="atscmh-sccc-code-mode">
638<programlisting>
639typedef enum atscmh_sccc_code_mode {
640 ATSCMH_SCCC_CODE_HLF = 0,
641 ATSCMH_SCCC_CODE_QTR = 1,
642} atscmh_sccc_code_mode_t;
643</programlisting>
644 </para>
645 </section>
646 <section id="DTV-ATSCMH-SCCC-CODE-MODE-B">
647 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title>
648 <para>Series Concatenated Convolutional Code Rate.</para>
649 <para>Possible values are:</para>
650<programlisting>
651typedef enum atscmh_sccc_code_mode {
652 ATSCMH_SCCC_CODE_HLF = 0,
653 ATSCMH_SCCC_CODE_QTR = 1,
654} atscmh_sccc_code_mode_t;
655</programlisting>
656 </section>
657 <section id="DTV-ATSCMH-SCCC-CODE-MODE-C">
658 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title>
659 <para>Series Concatenated Convolutional Code Rate.</para>
660 <para>Possible values are:</para>
661<programlisting>
662typedef enum atscmh_sccc_code_mode {
663 ATSCMH_SCCC_CODE_HLF = 0,
664 ATSCMH_SCCC_CODE_QTR = 1,
665} atscmh_sccc_code_mode_t;
666</programlisting>
667 </section>
668 <section id="DTV-ATSCMH-SCCC-CODE-MODE-D">
669 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title>
670 <para>Series Concatenated Convolutional Code Rate.</para>
671 <para>Possible values are:</para>
672<programlisting>
673typedef enum atscmh_sccc_code_mode {
674 ATSCMH_SCCC_CODE_HLF = 0,
675 ATSCMH_SCCC_CODE_QTR = 1,
676} atscmh_sccc_code_mode_t;
677</programlisting>
678 </section>
679 </section>
680 <section id="DTV-API-VERSION">
681 <title><constant>DTV_API_VERSION</constant></title>
682 <para>Returns the major/minor version of the DVB API</para>
683 </section>
684 <section id="DTV-CODE-RATE-HP">
685 <title><constant>DTV_CODE_RATE_HP</constant></title>
686 <para>Used on terrestrial transmissions. The acceptable values are:
687 </para>
688 <programlisting>
689typedef enum fe_code_rate {
690 FEC_NONE = 0,
691 FEC_1_2,
692 FEC_2_3,
693 FEC_3_4,
694 FEC_4_5,
695 FEC_5_6,
696 FEC_6_7,
697 FEC_7_8,
698 FEC_8_9,
699 FEC_AUTO,
700 FEC_3_5,
701 FEC_9_10,
702} fe_code_rate_t;
703 </programlisting>
704 </section>
705 <section id="DTV-CODE-RATE-LP">
706 <title><constant>DTV_CODE_RATE_LP</constant></title>
707 <para>Used on terrestrial transmissions. The acceptable values are:
708 </para>
709 <programlisting>
710typedef enum fe_code_rate {
711 FEC_NONE = 0,
712 FEC_1_2,
713 FEC_2_3,
714 FEC_3_4,
715 FEC_4_5,
716 FEC_5_6,
717 FEC_6_7,
718 FEC_7_8,
719 FEC_8_9,
720 FEC_AUTO,
721 FEC_3_5,
722 FEC_9_10,
723} fe_code_rate_t;
724 </programlisting>
725 </section>
726 <section id="DTV-GUARD-INTERVAL">
727 <title><constant>DTV_GUARD_INTERVAL</constant></title>
728
729 <para>Possible values are:</para>
730<programlisting>
731typedef enum fe_guard_interval {
732 GUARD_INTERVAL_1_32,
733 GUARD_INTERVAL_1_16,
734 GUARD_INTERVAL_1_8,
735 GUARD_INTERVAL_1_4,
736 GUARD_INTERVAL_AUTO,
737 GUARD_INTERVAL_1_128,
738 GUARD_INTERVAL_19_128,
739 GUARD_INTERVAL_19_256,
740 GUARD_INTERVAL_PN420,
741 GUARD_INTERVAL_PN595,
742 GUARD_INTERVAL_PN945,
743} fe_guard_interval_t;
744</programlisting>
745
746 <para>Notes:</para>
747 <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will
748 try to find the correct guard interval (if capable) and will use TMCC to fill
749 in the missing parameters.</para>
750 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para>
751 <para>3) DTMB specifies PN420, PN595 and PN945.</para>
752 </section>
753 <section id="DTV-TRANSMISSION-MODE">
754 <title><constant>DTV_TRANSMISSION_MODE</constant></title>
755
756 <para>Specifies the number of carriers used by the standard</para>
757
758 <para>Possible values are:</para>
759<programlisting>
760typedef enum fe_transmit_mode {
761 TRANSMISSION_MODE_2K,
762 TRANSMISSION_MODE_8K,
763 TRANSMISSION_MODE_AUTO,
764 TRANSMISSION_MODE_4K,
765 TRANSMISSION_MODE_1K,
766 TRANSMISSION_MODE_16K,
767 TRANSMISSION_MODE_32K,
768 TRANSMISSION_MODE_C1,
769 TRANSMISSION_MODE_C3780,
770} fe_transmit_mode_t;
771</programlisting>
772 <para>Notes:</para>
773 <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called
774 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para>
775
776 <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the
777 hardware will try to find the correct FFT-size (if capable) and will
778 use TMCC to fill in the missing parameters.</para>
779 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para>
780 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para>
781 <para>5) DTMB specifies C1 and C3780.</para>
782 </section>
783 <section id="DTV-HIERARCHY">
784 <title><constant>DTV_HIERARCHY</constant></title>
785 <para>Frontend hierarchy</para>
786 <programlisting>
787typedef enum fe_hierarchy {
788 HIERARCHY_NONE,
789 HIERARCHY_1,
790 HIERARCHY_2,
791 HIERARCHY_4,
792 HIERARCHY_AUTO
793 } fe_hierarchy_t;
794 </programlisting>
795 </section>
796 <section id="DTV-STREAM-ID">
797 <title><constant>DTV_STREAM_ID</constant></title>
798 <para>DVB-S2, DVB-T2 and ISDB-S support the transmission of several
799 streams on a single transport stream.
800 This property enables the DVB driver to handle substream filtering,
801 when supported by the hardware.
802 By default, substream filtering is disabled.
803 </para><para>
804 For DVB-S2 and DVB-T2, the valid substream id range is from 0 to 255.
805 </para><para>
806 For ISDB, the valid substream id range is from 1 to 65535.
807 </para><para>
808 To disable it, you should use the special macro NO_STREAM_ID_FILTER.
809 </para><para>
810 Note: any value outside the id range also disables filtering.
811 </para>
812 </section>
813 <section id="DTV-DVBT2-PLP-ID-LEGACY">
814 <title><constant>DTV_DVBT2_PLP_ID_LEGACY</constant></title>
815 <para>Obsolete, replaced with DTV_STREAM_ID.</para>
816 </section>
817 <section id="DTV-ENUM-DELSYS">
818 <title><constant>DTV_ENUM_DELSYS</constant></title>
819 <para>A Multi standard frontend needs to advertise the delivery systems provided.
820 Applications need to enumerate the provided delivery systems, before using
821 any other operation with the frontend. Prior to it's introduction,
822 FE_GET_INFO was used to determine a frontend type. A frontend which
823 provides more than a single delivery system, FE_GET_INFO doesn't help much.
824 Applications which intends to use a multistandard frontend must enumerate
825 the delivery systems associated with it, rather than trying to use
826 FE_GET_INFO. In the case of a legacy frontend, the result is just the same
827 as with FE_GET_INFO, but in a more structured format </para>
828 </section>
829 <section id="DTV-INTERLEAVING">
830 <title><constant>DTV_INTERLEAVING</constant></title>
831 <para id="fe-interleaving">Interleaving mode</para>
832 <programlisting>
833enum fe_interleaving {
834 INTERLEAVING_NONE,
835 INTERLEAVING_AUTO,
836 INTERLEAVING_240,
837 INTERLEAVING_720,
838};
839 </programlisting>
840 </section>
841 <section id="DTV-LNA">
842 <title><constant>DTV_LNA</constant></title>
843 <para>Low-noise amplifier.</para>
844 <para>Hardware might offer controllable LNA which can be set manually
845 using that parameter. Usually LNA could be found only from
846 terrestrial devices if at all.</para>
847 <para>Possible values: 0, 1, LNA_AUTO</para>
848 <para>0, LNA off</para>
849 <para>1, LNA on</para>
850 <para>use the special macro LNA_AUTO to set LNA auto</para>
851 </section>
852</section>
853 <section id="frontend-property-terrestrial-systems">
854 <title>Properties used on terrestrial delivery systems</title>
855 <section id="dvbt-params">
856 <title>DVB-T delivery system</title>
857 <para>The following parameters are valid for DVB-T:</para>
858 <itemizedlist mark='opencircle'>
859 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
860 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
861 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
862 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
863 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
864 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
865 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
866 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
867 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
868 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
869 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
870 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
871 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
872 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
873 </itemizedlist>
874 </section>
875 <section id="dvbt2-params">
876 <title>DVB-T2 delivery system</title>
877 <para>DVB-T2 support is currently in the early stages
878 of development, so expect that this section maygrow and become
879 more detailed with time.</para>
880 <para>The following parameters are valid for DVB-T2:</para>
881 <itemizedlist mark='opencircle'>
882 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
883 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
884 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
885 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
886 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
887 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
888 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
889 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
890 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
891 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
892 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
893 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
894 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
895 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
896 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
897 </itemizedlist>
898 </section>
899 <section id="isdbt">
900 <title>ISDB-T delivery system</title>
901 <para>This ISDB-T/ISDB-Tsb API extension should reflect all information
902 needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible
903 that some very sophisticated devices won't need certain parameters to
904 tune.</para>
905 <para>The information given here should help application writers to know how
906 to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para>
907 <para>The details given here about ISDB-T and ISDB-Tsb are just enough to
908 basically show the dependencies between the needed parameter values,
909 but surely some information is left out. For more detailed information
910 see the following documents:</para>
911 <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial
912 Television Broadcasting" and</para>
913 <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial
914 Television Broadcasting".</para>
915 <para>In order to understand the ISDB specific parameters,
916 one has to have some knowledge the channel structure in
917 ISDB-T and ISDB-Tsb. I.e. it has to be known to
918 the reader that an ISDB-T channel consists of 13 segments,
919 that it can have up to 3 layer sharing those segments,
920 and things like that.</para>
921 <para>The following parameters are valid for ISDB-T:</para>
922 <itemizedlist mark='opencircle'>
923 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
924 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
925 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
926 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
927 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
928 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
929 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
930 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
931 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
932 <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
933 <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
934 <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
935 <listitem><para><link linkend="DTV-ISDBT-SB-SUBCHANNEL-ID"><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></link></para></listitem>
936 <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-IDX"><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></link></para></listitem>
937 <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-COUNT"><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></link></para></listitem>
938 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERA_FEC</constant></link></para></listitem>
939 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERA_MODULATION</constant></link></para></listitem>
940 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant></link></para></listitem>
941 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERA_TIME_INTERLEAVING</constant></link></para></listitem>
942 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERB_FEC</constant></link></para></listitem>
943 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERB_MODULATION</constant></link></para></listitem>
944 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERB_SEGMENT_COUNT</constant></link></para></listitem>
945 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERB_TIME_INTERLEAVING</constant></link></para></listitem>
946 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERC_FEC</constant></link></para></listitem>
947 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERC_MODULATION</constant></link></para></listitem>
948 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERC_SEGMENT_COUNT</constant></link></para></listitem>
949 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERC_TIME_INTERLEAVING</constant></link></para></listitem>
950 </itemizedlist>
951 </section>
952 <section id="atsc-params">
953 <title>ATSC delivery system</title>
954 <para>The following parameters are valid for ATSC:</para>
955 <itemizedlist mark='opencircle'>
956 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
957 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
958 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
959 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
960 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
961 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
962 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
963 </itemizedlist>
964 </section>
965 <section id="atscmh-params">
966 <title>ATSC-MH delivery system</title>
967 <para>The following parameters are valid for ATSC-MH:</para>
968 <itemizedlist mark='opencircle'>
969 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
970 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
971 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
972 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
973 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
974 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
975 <listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem>
976 <listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem>
977 <listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem>
978 <listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem>
979 <listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem>
980 <listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem>
981 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem>
982 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem>
983 <listitem><para><link linkend="DTV-ATSCMH-RS-CODE-MODE-PRI"><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></link></para></listitem>
984 <listitem><para><link linkend="DTV-ATSCMH-RS-CODE-MODE-SEC"><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></link></para></listitem>
985 <listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem>
986 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem>
987 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem>
988 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
989 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
990 </itemizedlist>
991 </section>
992 <section id="dtmb-params">
993 <title>DTMB delivery system</title>
994 <para>The following parameters are valid for DTMB:</para>
995 <itemizedlist mark='opencircle'>
996 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
997 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
998 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
999 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1000 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1001 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1002 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1003 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1004 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1005 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1006 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1007 <listitem><para><link linkend="DTV-INTERLEAVING"><constant>DTV_INTERLEAVING</constant></link></para></listitem>
1008 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1009 </itemizedlist>
1010 </section>
1011 </section>
1012 <section id="frontend-property-cable-systems">
1013 <title>Properties used on cable delivery systems</title>
1014 <section id="dvbc-params">
1015 <title>DVB-C delivery system</title>
1016 <para>The DVB-C Annex-A is the widely used cable standard. Transmission uses QAM modulation.</para>
1017 <para>The DVB-C Annex-C is optimized for 6MHz, and is used in Japan. It supports a subset of the Annex A modulation types, and a roll-off of 0.13, instead of 0.15</para>
1018 <para>The following parameters are valid for DVB-C Annex A/C:</para>
1019 <itemizedlist mark='opencircle'>
1020 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1021 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1022 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1023 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1024 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1025 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1026 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1027 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1028 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1029 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1030 </itemizedlist>
1031 </section>
1032 <section id="dvbc-annex-b-params">
1033 <title>DVB-C Annex B delivery system</title>
1034 <para>The DVB-C Annex-B is only used on a few Countries like the United States.</para>
1035 <para>The following parameters are valid for DVB-C Annex B:</para>
1036 <itemizedlist mark='opencircle'>
1037 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1038 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1039 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1040 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1041 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1042 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1043 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1044 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1045 </itemizedlist>
1046 </section>
1047 </section>
1048 <section id="frontend-property-satellital-systems">
1049 <title>Properties used on satellital delivery systems</title>
1050 <section id="dvbs-params">
1051 <title>DVB-S delivery system</title>
1052 <para>The following parameters are valid for DVB-S:</para>
1053 <itemizedlist mark='opencircle'>
1054 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1055 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1056 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1057 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1058 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1059 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1060 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1061 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1062 <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
1063 <listitem><para><link linkend="DTV-TONE"><constant>DTV_TONE</constant></link></para></listitem>
1064 </itemizedlist>
1065 <para>Future implementations might add those two missing parameters:</para>
1066 <itemizedlist mark='opencircle'>
1067 <listitem><para><link linkend="DTV-DISEQC-MASTER"><constant>DTV_DISEQC_MASTER</constant></link></para></listitem>
1068 <listitem><para><link linkend="DTV-DISEQC-SLAVE-REPLY"><constant>DTV_DISEQC_SLAVE_REPLY</constant></link></para></listitem>
1069 </itemizedlist>
1070 </section>
1071 <section id="dvbs2-params">
1072 <title>DVB-S2 delivery system</title>
1073 <para>In addition to all parameters valid for DVB-S, DVB-S2 supports the following parameters:</para>
1074 <itemizedlist mark='opencircle'>
1075 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1076 <listitem><para><link linkend="DTV-PILOT"><constant>DTV_PILOT</constant></link></para></listitem>
1077 <listitem><para><link linkend="DTV-ROLLOFF"><constant>DTV_ROLLOFF</constant></link></para></listitem>
1078 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1079 </itemizedlist>
1080 </section>
1081 <section id="turbo-params">
1082 <title>Turbo code delivery system</title>
1083 <para>In addition to all parameters valid for DVB-S, turbo code supports the following parameters:</para>
1084 <itemizedlist mark='opencircle'>
1085 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1086 </itemizedlist>
1087 </section>
1088 <section id="isdbs-params">
1089 <title>ISDB-S delivery system</title>
1090 <para>The following parameters are valid for ISDB-S:</para>
1091 <itemizedlist mark='opencircle'>
1092 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1093 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1094 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1095 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1096 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1097 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1098 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1099 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1100 <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
1101 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1102 </itemizedlist>
1103 </section>
1104 </section>
1105</section>
diff --git a/Documentation/DocBook/dvb/dvbstb.pdf b/Documentation/DocBook/media/dvb/dvbstb.pdf
index 0fa75d90c3e..0fa75d90c3e 100644
--- a/Documentation/DocBook/dvb/dvbstb.pdf
+++ b/Documentation/DocBook/media/dvb/dvbstb.pdf
Binary files differ
diff --git a/Documentation/DocBook/dvb/examples.xml b/Documentation/DocBook/media/dvb/examples.xml
index f037e568eb6..f037e568eb6 100644
--- a/Documentation/DocBook/dvb/examples.xml
+++ b/Documentation/DocBook/media/dvb/examples.xml
diff --git a/Documentation/DocBook/dvb/frontend.xml b/Documentation/DocBook/media/dvb/frontend.xml
index 60c6976fb31..426c2526a45 100644
--- a/Documentation/DocBook/dvb/frontend.xml
+++ b/Documentation/DocBook/media/dvb/frontend.xml
@@ -20,22 +20,56 @@ cards, in which case there exists no frontend device.</para>
20<section id="frontend_types"> 20<section id="frontend_types">
21<title>Frontend Data Types</title> 21<title>Frontend Data Types</title>
22 22
23<section id="frontend_type"> 23<section id="fe-type-t">
24<title>frontend type</title> 24<title>Frontend type</title>
25 25
26<para>For historical reasons frontend types are named after the type of modulation used in 26<para>For historical reasons, frontend types are named by the type of modulation used in
27transmission.</para> 27transmission. The fontend types are given by fe_type_t type, defined as:</para>
28<programlisting> 28
29 typedef enum fe_type { 29<table pgwide="1" frame="none" id="fe-type">
30 FE_QPSK, /&#x22C6; DVB-S &#x22C6;/ 30<title>Frontend types</title>
31 FE_QAM, /&#x22C6; DVB-C &#x22C6;/ 31<tgroup cols="3">
32 FE_OFDM /&#x22C6; DVB-T &#x22C6;/ 32 &cs-def;
33 } fe_type_t; 33 <thead>
34</programlisting> 34 <row>
35 35 <entry>fe_type</entry>
36 <entry>Description</entry>
37 <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry>
38 </row>
39 </thead>
40 <tbody valign="top">
41 <row>
42 <entry id="FE_QPSK"><constant>FE_QPSK</constant></entry>
43 <entry>For DVB-S standard</entry>
44 <entry><constant>SYS_DVBS</constant></entry>
45 </row>
46 <row>
47 <entry id="FE_QAM"><constant>FE_QAM</constant></entry>
48 <entry>For DVB-C annex A standard</entry>
49 <entry><constant>SYS_DVBC_ANNEX_A</constant></entry>
50 </row>
51 <row>
52 <entry id="FE_OFDM"><constant>FE_OFDM</constant></entry>
53 <entry>For DVB-T standard</entry>
54 <entry><constant>SYS_DVBT</constant></entry>
55 </row>
56 <row>
57 <entry id="FE_ATSC"><constant>FE_ATSC</constant></entry>
58 <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry>
59 <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry>
60 </row>
61</tbody></tgroup></table>
62
63<para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're
64supported via the new <link linkend="FE_GET_SET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter.
65</para>
66
67<para>The usage of this field is deprecated, as it doesn't report all supported standards, and
68will provide an incomplete information for frontends that support multiple delivery systems.
69Please use <link linkend="DTV-ENUM-DELSYS">DTV_ENUM_DELSYS</link> instead.</para>
36</section> 70</section>
37 71
38<section id="frontend_caps"> 72<section id="fe-caps-t">
39<title>frontend capabilities</title> 73<title>frontend capabilities</title>
40 74
41<para>Capabilities describe what a frontend can do. Some capabilities can only be supported for 75<para>Capabilities describe what a frontend can do. Some capabilities can only be supported for
@@ -67,6 +101,7 @@ a specific frontend type.</para>
67 FE_CAN_8VSB = 0x200000, 101 FE_CAN_8VSB = 0x200000,
68 FE_CAN_16VSB = 0x400000, 102 FE_CAN_16VSB = 0x400000,
69 FE_HAS_EXTENDED_CAPS = 0x800000, 103 FE_HAS_EXTENDED_CAPS = 0x800000,
104 FE_CAN_MULTISTREAM = 0x4000000,
70 FE_CAN_TURBO_FEC = 0x8000000, 105 FE_CAN_TURBO_FEC = 0x8000000,
71 FE_CAN_2G_MODULATION = 0x10000000, 106 FE_CAN_2G_MODULATION = 0x10000000,
72 FE_NEEDS_BENDING = 0x20000000, 107 FE_NEEDS_BENDING = 0x20000000,
@@ -76,7 +111,7 @@ a specific frontend type.</para>
76</programlisting> 111</programlisting>
77</section> 112</section>
78 113
79<section id="frontend_info"> 114<section id="dvb-frontend-info">
80<title>frontend information</title> 115<title>frontend information</title>
81 116
82<para>Information about the frontend ca be queried with 117<para>Information about the frontend ca be queried with
@@ -99,7 +134,7 @@ a specific frontend type.</para>
99</programlisting> 134</programlisting>
100</section> 135</section>
101 136
102<section id="frontend_diseqc"> 137<section id="dvb-diseqc-master-cmd">
103<title>diseqc master command</title> 138<title>diseqc master command</title>
104 139
105<para>A message sent from the frontend to DiSEqC capable equipment.</para> 140<para>A message sent from the frontend to DiSEqC capable equipment.</para>
@@ -110,7 +145,7 @@ a specific frontend type.</para>
110 }; 145 };
111</programlisting> 146</programlisting>
112</section> 147</section>
113<section role="subsection"> 148<section role="subsection" id="dvb-diseqc-slave-reply">
114<title>diseqc slave reply</title> 149<title>diseqc slave reply</title>
115 150
116<para>A reply to the frontend from DiSEqC 2.0 capable equipment.</para> 151<para>A reply to the frontend from DiSEqC 2.0 capable equipment.</para>
@@ -123,7 +158,7 @@ a specific frontend type.</para>
123</programlisting> 158</programlisting>
124</section> 159</section>
125 160
126<section id="frontend_diseqc_slave_reply"> 161<section id="fe-sec-voltage-t">
127<title>diseqc slave reply</title> 162<title>diseqc slave reply</title>
128<para>The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation 163<para>The voltage is usually used with non-DiSEqC capable LNBs to switch the polarzation
129(horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched 164(horizontal/vertical). When using DiSEqC epuipment this voltage has to be switched
@@ -136,7 +171,7 @@ consistently to the DiSEqC commands as described in the DiSEqC spec.</para>
136</programlisting> 171</programlisting>
137</section> 172</section>
138 173
139<section id="frontend_sec_tone"> 174<section id="fe-sec-tone-mode-t">
140<title>SEC continuous tone</title> 175<title>SEC continuous tone</title>
141 176
142<para>The continuous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the 177<para>The continuous 22KHz tone is usually used with non-DiSEqC capable LNBs to switch the
@@ -151,7 +186,7 @@ spec.</para>
151</programlisting> 186</programlisting>
152</section> 187</section>
153 188
154<section id="frontend_sec_burst"> 189<section id="fe-sec-mini-cmd-t">
155<title>SEC tone burst</title> 190<title>SEC tone burst</title>
156 191
157<para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select 192<para>The 22KHz tone burst is usually used with non-DiSEqC capable switches to select
@@ -168,51 +203,101 @@ spec.</para>
168<para></para> 203<para></para>
169</section> 204</section>
170 205
171<section id="frontend_status"> 206<section id="fe-status-t">
172<title>frontend status</title> 207<title>frontend status</title>
173<para>Several functions of the frontend device use the fe_status data type defined 208<para>Several functions of the frontend device use the fe_status data type defined
174by</para> 209by</para>
175<programlisting> 210<programlisting>
176 typedef enum fe_status { 211typedef enum fe_status {
177 FE_HAS_SIGNAL = 0x01, /&#x22C6; found something above the noise level &#x22C6;/ 212 FE_HAS_SIGNAL = 0x01,
178 FE_HAS_CARRIER = 0x02, /&#x22C6; found a DVB signal &#x22C6;/ 213 FE_HAS_CARRIER = 0x02,
179 FE_HAS_VITERBI = 0x04, /&#x22C6; FEC is stable &#x22C6;/ 214 FE_HAS_VITERBI = 0x04,
180 FE_HAS_SYNC = 0x08, /&#x22C6; found sync bytes &#x22C6;/ 215 FE_HAS_SYNC = 0x08,
181 FE_HAS_LOCK = 0x10, /&#x22C6; everything's working... &#x22C6;/ 216 FE_HAS_LOCK = 0x10,
182 FE_TIMEDOUT = 0x20, /&#x22C6; no lock within the last ~2 seconds &#x22C6;/ 217 FE_TIMEDOUT = 0x20,
183 FE_REINIT = 0x40 /&#x22C6; frontend was reinitialized, &#x22C6;/ 218 FE_REINIT = 0x40,
184 } fe_status_t; /&#x22C6; application is recommned to reset &#x22C6;/ 219} fe_status_t;
185</programlisting> 220</programlisting>
186<para>to indicate the current state and/or state changes of the frontend hardware. 221<para>to indicate the current state and/or state changes of the frontend hardware:
187</para> 222</para>
223
224<informaltable><tgroup cols="2"><tbody>
225<row>
226<entry align="char">FE_HAS_SIGNAL</entry>
227<entry align="char">The frontend has found something above the noise level</entry>
228</row><row>
229<entry align="char">FE_HAS_CARRIER</entry>
230<entry align="char">The frontend has found a DVB signal</entry>
231</row><row>
232<entry align="char">FE_HAS_VITERBI</entry>
233<entry align="char">The frontend FEC code is stable</entry>
234</row><row>
235<entry align="char">FE_HAS_SYNC</entry>
236<entry align="char">Syncronization bytes was found</entry>
237</row><row>
238<entry align="char">FE_HAS_LOCK</entry>
239<entry align="char">The DVB were locked and everything is working</entry>
240</row><row>
241<entry align="char">FE_TIMEDOUT</entry>
242<entry align="char">no lock within the last about 2 seconds</entry>
243</row><row>
244<entry align="char">FE_REINIT</entry>
245<entry align="char">The frontend was reinitialized, application is
246recommended to reset DiSEqC, tone and parameters</entry>
247</row>
248</tbody></tgroup></informaltable>
188 249
189</section> 250</section>
190 251
191<section id="frontend_params"> 252<section id="dvb-frontend-parameters">
192<title>frontend parameters</title> 253<title>frontend parameters</title>
193<para>The kind of parameters passed to the frontend device for tuning depend on 254<para>The kind of parameters passed to the frontend device for tuning depend on
194the kind of hardware you are using. All kinds of parameters are combined as an 255the kind of hardware you are using.</para>
195union in the FrontendParameters structure:</para> 256<para>The struct <constant>dvb_frontend_parameters</constant> uses an
257union with specific per-system parameters. However, as newer delivery systems
258required more data, the structure size weren't enough to fit, and just
259extending its size would break the existing applications. So, those parameters
260were replaced by the usage of <link linkend="FE_GET_SET_PROPERTY">
261<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The
262new API is flexible enough to add new parameters to existing delivery systems,
263and to add newer delivery systems.</para>
264<para>So, newer applications should use <link linkend="FE_GET_SET_PROPERTY">
265<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in
266order to be able to support the newer System Delivery like DVB-S2, DVB-T2,
267DVB-C2, ISDB, etc.</para>
268<para>All kinds of parameters are combined as an union in the FrontendParameters structure:
196<programlisting> 269<programlisting>
197 struct dvb_frontend_parameters { 270struct dvb_frontend_parameters {
198 uint32_t frequency; /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/ 271 uint32_t frequency; /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/
199 /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/ 272 /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/
200 fe_spectral_inversion_t inversion; 273 fe_spectral_inversion_t inversion;
201 union { 274 union {
202 struct dvb_qpsk_parameters qpsk; 275 struct dvb_qpsk_parameters qpsk;
203 struct dvb_qam_parameters qam; 276 struct dvb_qam_parameters qam;
204 struct dvb_ofdm_parameters ofdm; 277 struct dvb_ofdm_parameters ofdm;
205 } u; 278 struct dvb_vsb_parameters vsb;
206 }; 279 } u;
207</programlisting> 280};
208<para>For satellite QPSK frontends you have to use the <constant>QPSKParameters</constant> member defined by</para> 281</programlisting></para>
282<para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate
283frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of
284the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and
285OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz.
286</para>
287
288<section id="dvb-qpsk-parameters">
289<title>QPSK parameters</title>
290<para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para>
209<programlisting> 291<programlisting>
210 struct dvb_qpsk_parameters { 292 struct dvb_qpsk_parameters {
211 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/ 293 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
212 fe_code_rate_t fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/ 294 fe_code_rate_t fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
213 }; 295 };
214</programlisting> 296</programlisting>
215<para>for cable QAM frontend you use the <constant>QAMParameters</constant> structure</para> 297</section>
298<section id="dvb-qam-parameters">
299<title>QAM parameters</title>
300<para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para>
216<programlisting> 301<programlisting>
217 struct dvb_qam_parameters { 302 struct dvb_qam_parameters {
218 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/ 303 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
@@ -220,8 +305,19 @@ union in the FrontendParameters structure:</para>
220 fe_modulation_t modulation; /&#x22C6; modulation type (see above) &#x22C6;/ 305 fe_modulation_t modulation; /&#x22C6; modulation type (see above) &#x22C6;/
221 }; 306 };
222</programlisting> 307</programlisting>
223<para>DVB-T frontends are supported by the <constant>OFDMParamters</constant> structure 308</section>
224</para> 309<section id="dvb-vsb-parameters">
310<title>VSB parameters</title>
311<para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para>
312<programlisting>
313struct dvb_vsb_parameters {
314 fe_modulation_t modulation; /&#x22C6; modulation type (see above) &#x22C6;/
315};
316</programlisting>
317</section>
318<section id="dvb-ofdm-parameters">
319<title>OFDM parameters</title>
320<para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para>
225<programlisting> 321<programlisting>
226 struct dvb_ofdm_parameters { 322 struct dvb_ofdm_parameters {
227 fe_bandwidth_t bandwidth; 323 fe_bandwidth_t bandwidth;
@@ -233,86 +329,124 @@ union in the FrontendParameters structure:</para>
233 fe_hierarchy_t hierarchy_information; 329 fe_hierarchy_t hierarchy_information;
234 }; 330 };
235</programlisting> 331</programlisting>
236<para>In the case of QPSK frontends the <constant>Frequency</constant> field specifies the intermediate 332</section>
237frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of 333<section id="fe-spectral-inversion-t">
238the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and 334<title>frontend spectral inversion</title>
239OFDM frontends the Frequency specifies the absolute frequency and is given in
240Hz.
241</para>
242<para>The Inversion field can take one of these values: 335<para>The Inversion field can take one of these values:
243</para> 336</para>
244<programlisting> 337<programlisting>
245 typedef enum fe_spectral_inversion { 338typedef enum fe_spectral_inversion {
246 INVERSION_OFF, 339 INVERSION_OFF,
247 INVERSION_ON, 340 INVERSION_ON,
248 INVERSION_AUTO 341 INVERSION_AUTO
249 } fe_spectral_inversion_t; 342} fe_spectral_inversion_t;
250</programlisting> 343</programlisting>
251<para>It indicates if spectral inversion should be presumed or not. In the automatic setting 344<para>It indicates if spectral inversion should be presumed or not. In the automatic setting
252(<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by 345(<constant>INVERSION_AUTO</constant>) the hardware will try to figure out the correct setting by
253itself. 346itself.
254</para> 347</para>
255<para>The possible values for the <constant>FEC_inner</constant> field are 348</section>
349<section id="fe-code-rate-t">
350<title>frontend code rate</title>
351<para>The possible values for the <constant>fec_inner</constant> field used on
352<link linkend="dvb-qpsk-parameters"><constant>struct dvb_qpsk_parameters</constant></link> and
353<link linkend="dvb-qam-parameters"><constant>struct dvb_qam_parameters</constant></link> are:
256</para> 354</para>
257<programlisting> 355<programlisting>
258 typedef enum fe_code_rate { 356typedef enum fe_code_rate {
259 FEC_NONE = 0, 357 FEC_NONE = 0,
260 FEC_1_2, 358 FEC_1_2,
261 FEC_2_3, 359 FEC_2_3,
262 FEC_3_4, 360 FEC_3_4,
263 FEC_4_5, 361 FEC_4_5,
264 FEC_5_6, 362 FEC_5_6,
265 FEC_6_7, 363 FEC_6_7,
266 FEC_7_8, 364 FEC_7_8,
267 FEC_8_9, 365 FEC_8_9,
268 FEC_AUTO 366 FEC_AUTO,
269 } fe_code_rate_t; 367 FEC_3_5,
368 FEC_9_10,
369} fe_code_rate_t;
270</programlisting> 370</programlisting>
271<para>which correspond to error correction rates of 1/2, 2/3, etc., no error correction or auto 371<para>which correspond to error correction rates of 1/2, 2/3, etc., no error correction or auto
272detection. 372detection.
273</para> 373</para>
274<para>For cable and terrestrial frontends (QAM and OFDM) one also has to specify the quadrature 374</section>
275modulation mode which can be one of the following: 375<section id="fe-modulation-t">
376<title>frontend modulation type for QAM, OFDM and VSB</title>
377<para>For cable and terrestrial frontends, e. g. for
378<link linkend="dvb-qam-parameters"><constant>struct dvb_qpsk_parameters</constant></link>,
379<link linkend="dvb-ofdm-parameters"><constant>struct dvb_qam_parameters</constant></link> and
380<link linkend="dvb-vsb-parameters"><constant>struct dvb_qam_parameters</constant></link>,
381it needs to specify the quadrature modulation mode which can be one of the following:
276</para> 382</para>
277<programlisting> 383<programlisting>
278 typedef enum fe_modulation { 384 typedef enum fe_modulation {
279 QPSK, 385 QPSK,
280 QAM_16, 386 QAM_16,
281 QAM_32, 387 QAM_32,
282 QAM_64, 388 QAM_64,
283 QAM_128, 389 QAM_128,
284 QAM_256, 390 QAM_256,
285 QAM_AUTO 391 QAM_AUTO,
392 VSB_8,
393 VSB_16,
394 PSK_8,
395 APSK_16,
396 APSK_32,
397 DQPSK,
286 } fe_modulation_t; 398 } fe_modulation_t;
287</programlisting> 399</programlisting>
288<para>Finally, there are several more parameters for OFDM: 400</section>
289</para> 401<section>
402<title>More OFDM parameters</title>
403<section id="fe-transmit-mode-t">
404<title>Number of carriers per channel</title>
290<programlisting> 405<programlisting>
291 typedef enum fe_transmit_mode { 406typedef enum fe_transmit_mode {
292 TRANSMISSION_MODE_2K, 407 TRANSMISSION_MODE_2K,
293 TRANSMISSION_MODE_8K, 408 TRANSMISSION_MODE_8K,
294 TRANSMISSION_MODE_AUTO 409 TRANSMISSION_MODE_AUTO,
410 TRANSMISSION_MODE_4K,
411 TRANSMISSION_MODE_1K,
412 TRANSMISSION_MODE_16K,
413 TRANSMISSION_MODE_32K,
295 } fe_transmit_mode_t; 414 } fe_transmit_mode_t;
296</programlisting> 415</programlisting>
297 <programlisting> 416</section>
298 typedef enum fe_bandwidth { 417<section id="fe-bandwidth-t">
299 BANDWIDTH_8_MHZ, 418<title>frontend bandwidth</title>
300 BANDWIDTH_7_MHZ, 419<programlisting>
301 BANDWIDTH_6_MHZ, 420typedef enum fe_bandwidth {
302 BANDWIDTH_AUTO 421 BANDWIDTH_8_MHZ,
303 } fe_bandwidth_t; 422 BANDWIDTH_7_MHZ,
423 BANDWIDTH_6_MHZ,
424 BANDWIDTH_AUTO,
425 BANDWIDTH_5_MHZ,
426 BANDWIDTH_10_MHZ,
427 BANDWIDTH_1_712_MHZ,
428} fe_bandwidth_t;
304</programlisting> 429</programlisting>
305 <programlisting> 430</section>
306 typedef enum fe_guard_interval { 431<section id="fe-guard-interval-t">
307 GUARD_INTERVAL_1_32, 432<title>frontend guard inverval</title>
308 GUARD_INTERVAL_1_16, 433<programlisting>
309 GUARD_INTERVAL_1_8, 434typedef enum fe_guard_interval {
310 GUARD_INTERVAL_1_4, 435 GUARD_INTERVAL_1_32,
311 GUARD_INTERVAL_AUTO 436 GUARD_INTERVAL_1_16,
312 } fe_guard_interval_t; 437 GUARD_INTERVAL_1_8,
438 GUARD_INTERVAL_1_4,
439 GUARD_INTERVAL_AUTO,
440 GUARD_INTERVAL_1_128,
441 GUARD_INTERVAL_19_128,
442 GUARD_INTERVAL_19_256,
443} fe_guard_interval_t;
313</programlisting> 444</programlisting>
314 <programlisting> 445</section>
315 typedef enum fe_hierarchy { 446<section id="fe-hierarchy-t">
447<title>frontend hierarchy</title>
448<programlisting>
449typedef enum fe_hierarchy {
316 HIERARCHY_NONE, 450 HIERARCHY_NONE,
317 HIERARCHY_1, 451 HIERARCHY_1,
318 HIERARCHY_2, 452 HIERARCHY_2,
@@ -320,10 +454,12 @@ modulation mode which can be one of the following:
320 HIERARCHY_AUTO 454 HIERARCHY_AUTO
321 } fe_hierarchy_t; 455 } fe_hierarchy_t;
322</programlisting> 456</programlisting>
457</section>
458</section>
323 459
324</section> 460</section>
325 461
326<section id="frontend_events"> 462<section id="dvb-frontend-event">
327<title>frontend events</title> 463<title>frontend events</title>
328 <programlisting> 464 <programlisting>
329 struct dvb_frontend_event { 465 struct dvb_frontend_event {
@@ -412,8 +548,7 @@ modulation mode which can be one of the following:
412<para>(blocking mode is the default)</para> 548<para>(blocking mode is the default)</para>
413</entry> 549</entry>
414 </row></tbody></tgroup></informaltable> 550 </row></tbody></tgroup></informaltable>
415<para>ERRORS 551<para>RETURN VALUE</para>
416</para>
417<informaltable><tgroup cols="2"><tbody><row><entry 552<informaltable><tgroup cols="2"><tbody><row><entry
418 align="char"> 553 align="char">
419<para>ENODEV</para> 554<para>ENODEV</para>
@@ -473,8 +608,7 @@ modulation mode which can be one of the following:
473<para>File descriptor returned by a previous call to open().</para> 608<para>File descriptor returned by a previous call to open().</para>
474</entry> 609</entry>
475 </row></tbody></tgroup></informaltable> 610 </row></tbody></tgroup></informaltable>
476<para>ERRORS 611<para>RETURN VALUE</para>
477</para>
478<informaltable><tgroup cols="2"><tbody><row><entry 612<informaltable><tgroup cols="2"><tbody><row><entry
479 align="char"> 613 align="char">
480<para>EBADF</para> 614<para>EBADF</para>
@@ -530,8 +664,7 @@ modulation mode which can be one of the following:
530 to be stored.</para> 664 to be stored.</para>
531</entry> 665</entry>
532 </row></tbody></tgroup></informaltable> 666 </row></tbody></tgroup></informaltable>
533<para>ERRORS 667<para>RETURN VALUE</para>
534</para>
535<informaltable><tgroup cols="2"><tbody><row><entry 668<informaltable><tgroup cols="2"><tbody><row><entry
536 align="char"> 669 align="char">
537<para>EBADF</para> 670<para>EBADF</para>
@@ -592,38 +725,8 @@ modulation mode which can be one of the following:
592<para>The bit error rate is stored into *ber.</para> 725<para>The bit error rate is stored into *ber.</para>
593</entry> 726</entry>
594 </row></tbody></tgroup></informaltable> 727 </row></tbody></tgroup></informaltable>
595<para>ERRORS 728
596</para> 729&return-value-dvb;
597<informaltable><tgroup cols="2"><tbody><row><entry
598 align="char">
599<para>EBADF</para>
600</entry><entry
601 align="char">
602<para>fd is not a valid open file descriptor.</para>
603</entry>
604 </row><row><entry
605 align="char">
606<para>EFAULT</para>
607</entry><entry
608 align="char">
609<para>ber points to invalid address.</para>
610</entry>
611 </row><row><entry
612 align="char">
613<para>ENOSIGNAL</para>
614</entry><entry
615 align="char">
616<para>There is no signal, thus no meaningful bit error rate. Also
617 returned if the front-end is not turned on.</para>
618</entry>
619 </row><row><entry
620 align="char">
621<para>ENOSYS</para>
622</entry><entry
623 align="char">
624<para>Function not available for this device.</para>
625</entry>
626 </row></tbody></tgroup></informaltable>
627</section> 730</section>
628 731
629<section id="FE_READ_SNR"> 732<section id="FE_READ_SNR">
@@ -670,38 +773,7 @@ modulation mode which can be one of the following:
670</entry> 773</entry>
671 </row></tbody></tgroup></informaltable> 774 </row></tbody></tgroup></informaltable>
672 775
673<para>ERRORS 776&return-value-dvb;
674</para>
675<informaltable><tgroup cols="2"><tbody><row><entry
676 align="char">
677<para>EBADF</para>
678</entry><entry
679 align="char">
680<para>fd is not a valid open file descriptor.</para>
681</entry>
682 </row><row><entry
683 align="char">
684<para>EFAULT</para>
685</entry><entry
686 align="char">
687<para>snr points to invalid address.</para>
688</entry>
689 </row><row><entry
690 align="char">
691<para>ENOSIGNAL</para>
692</entry><entry
693 align="char">
694<para>There is no signal, thus no meaningful signal strength
695 value. Also returned if front-end is not turned on.</para>
696</entry>
697 </row><row><entry
698 align="char">
699<para>ENOSYS</para>
700</entry><entry
701 align="char">
702<para>Function not available for this device.</para>
703</entry>
704 </row></tbody></tgroup></informaltable>
705</section> 777</section>
706 778
707<section id="FE_READ_SIGNAL_STRENGTH"> 779<section id="FE_READ_SIGNAL_STRENGTH">
@@ -748,38 +820,8 @@ modulation mode which can be one of the following:
748<para>The signal strength value is stored into *strength.</para> 820<para>The signal strength value is stored into *strength.</para>
749</entry> 821</entry>
750 </row></tbody></tgroup></informaltable> 822 </row></tbody></tgroup></informaltable>
751<para>ERRORS 823
752</para> 824&return-value-dvb;
753<informaltable><tgroup cols="2"><tbody><row><entry
754 align="char">
755<para>EBADF</para>
756</entry><entry
757 align="char">
758<para>fd is not a valid open file descriptor.</para>
759</entry>
760 </row><row><entry
761 align="char">
762<para>EFAULT</para>
763</entry><entry
764 align="char">
765<para>status points to invalid address.</para>
766</entry>
767 </row><row><entry
768 align="char">
769<para>ENOSIGNAL</para>
770</entry><entry
771 align="char">
772<para>There is no signal, thus no meaningful signal strength
773 value. Also returned if front-end is not turned on.</para>
774</entry>
775 </row><row><entry
776 align="char">
777<para>ENOSYS</para>
778</entry><entry
779 align="char">
780<para>Function not available for this device.</para>
781</entry>
782 </row></tbody></tgroup></informaltable>
783</section> 825</section>
784 826
785<section id="FE_READ_UNCORRECTED_BLOCKS"> 827<section id="FE_READ_UNCORRECTED_BLOCKS">
@@ -833,30 +875,8 @@ modulation mode which can be one of the following:
833 so far.</para> 875 so far.</para>
834</entry> 876</entry>
835 </row></tbody></tgroup></informaltable> 877 </row></tbody></tgroup></informaltable>
836<para>ERRORS 878
837</para> 879&return-value-dvb;
838<informaltable><tgroup cols="2"><tbody><row><entry
839 align="char">
840<para>EBADF</para>
841</entry><entry
842 align="char">
843<para>fd is not a valid open file descriptor.</para>
844</entry>
845 </row><row><entry
846 align="char">
847<para>EFAULT</para>
848</entry><entry
849 align="char">
850<para>ublocks points to invalid address.</para>
851</entry>
852 </row><row><entry
853 align="char">
854<para>ENOSYS</para>
855</entry><entry
856 align="char">
857<para>Function not available for this device.</para>
858</entry>
859 </row></tbody></tgroup></informaltable>
860</section> 880</section>
861 881
862<section id="FE_SET_FRONTEND"> 882<section id="FE_SET_FRONTEND">
@@ -909,24 +929,10 @@ modulation mode which can be one of the following:
909<para>Points to parameters for tuning operation.</para> 929<para>Points to parameters for tuning operation.</para>
910</entry> 930</entry>
911 </row></tbody></tgroup></informaltable> 931 </row></tbody></tgroup></informaltable>
912<para>ERRORS 932
913</para> 933&return-value-dvb;
914<informaltable><tgroup cols="2"><tbody><row><entry 934<informaltable><tgroup cols="2"><tbody><row><entry
915 align="char"> 935 align="char">
916<para>EBADF</para>
917</entry><entry
918 align="char">
919<para>fd is not a valid open file descriptor.</para>
920</entry>
921 </row><row><entry
922 align="char">
923<para>EFAULT</para>
924</entry><entry
925 align="char">
926<para>p points to invalid address.</para>
927</entry>
928 </row><row><entry
929 align="char">
930<para>EINVAL</para> 936<para>EINVAL</para>
931</entry><entry 937</entry><entry
932 align="char"> 938 align="char">
@@ -982,25 +988,9 @@ modulation mode which can be one of the following:
982</entry> 988</entry>
983 </row></tbody></tgroup></informaltable> 989 </row></tbody></tgroup></informaltable>
984 990
985<para>ERRORS 991&return-value-dvb;
986</para>
987
988<informaltable><tgroup cols="2"><tbody><row><entry 992<informaltable><tgroup cols="2"><tbody><row><entry
989 align="char"> 993 align="char">
990<para>EBADF</para>
991</entry><entry
992 align="char">
993<para>fd is not a valid open file descriptor.</para>
994</entry>
995 </row><row><entry
996 align="char">
997<para>EFAULT</para>
998</entry><entry
999 align="char">
1000<para>p points to invalid address.</para>
1001</entry>
1002 </row><row><entry
1003 align="char">
1004<para>EINVAL</para> 994<para>EINVAL</para>
1005</entry><entry 995</entry><entry
1006 align="char"> 996 align="char">
@@ -1084,24 +1074,9 @@ modulation mode which can be one of the following:
1084</entry> 1074</entry>
1085 </row></tbody></tgroup></informaltable> 1075 </row></tbody></tgroup></informaltable>
1086 1076
1087<para>ERRORS 1077&return-value-dvb;
1088</para>
1089<informaltable><tgroup cols="2"><tbody><row><entry 1078<informaltable><tgroup cols="2"><tbody><row><entry
1090 align="char"> 1079 align="char">
1091<para>EBADF</para>
1092</entry><entry
1093 align="char">
1094<para>fd is not a valid open file descriptor.</para>
1095</entry>
1096 </row><row><entry
1097 align="char">
1098<para>EFAULT</para>
1099</entry><entry
1100 align="char">
1101<para>ev points to invalid address.</para>
1102</entry>
1103 </row><row><entry
1104 align="char">
1105<para>EWOULDBLOCK</para> 1080<para>EWOULDBLOCK</para>
1106</entry><entry 1081</entry><entry
1107 align="char"> 1082 align="char">
@@ -1113,11 +1088,6 @@ modulation mode which can be one of the following:
1113<para>EOVERFLOW</para> 1088<para>EOVERFLOW</para>
1114</entry><entry 1089</entry><entry
1115 align="char"> 1090 align="char">
1116</entry>
1117 </row><row><entry
1118 align="char">
1119</entry><entry
1120 align="char">
1121<para>Overflow in event queue - one or more events were lost.</para> 1091<para>Overflow in event queue - one or more events were lost.</para>
1122</entry> 1092</entry>
1123</row></tbody></tgroup></informaltable> 1093</row></tbody></tgroup></informaltable>
@@ -1170,23 +1140,7 @@ modulation mode which can be one of the following:
1170 to be stored.</para> 1140 to be stored.</para>
1171</entry> 1141</entry>
1172 </row></tbody></tgroup></informaltable> 1142 </row></tbody></tgroup></informaltable>
1173<para>ERRORS 1143&return-value-dvb;
1174</para>
1175<informaltable><tgroup cols="2"><tbody><row><entry
1176 align="char">
1177<para>EBADF</para>
1178</entry><entry
1179 align="char">
1180<para>fd is not a valid open file descriptor.</para>
1181</entry>
1182 </row><row><entry
1183 align="char">
1184<para>EFAULT</para>
1185</entry><entry
1186 align="char">
1187<para>info points to invalid address.</para>
1188</entry>
1189</row></tbody></tgroup></informaltable>
1190</section> 1144</section>
1191 1145
1192<section id="FE_DISEQC_RESET_OVERLOAD"> 1146<section id="FE_DISEQC_RESET_OVERLOAD">
@@ -1229,30 +1183,7 @@ modulation mode which can be one of the following:
1229</entry> 1183</entry>
1230 </row></tbody></tgroup></informaltable> 1184 </row></tbody></tgroup></informaltable>
1231 1185
1232<para>ERRORS 1186&return-value-dvb;
1233</para>
1234<informaltable><tgroup cols="2"><tbody><row><entry
1235 align="char">
1236<para>EBADF</para>
1237</entry><entry
1238 align="char">
1239<para>fd is not a valid file descriptor.</para>
1240</entry>
1241 </row><row><entry
1242 align="char">
1243<para>EPERM</para>
1244</entry><entry
1245 align="char">
1246<para>Permission denied (needs read/write access).</para>
1247</entry>
1248 </row><row><entry
1249 align="char">
1250<para>EINTERNAL</para>
1251</entry><entry
1252 align="char">
1253<para>Internal error in the device driver.</para>
1254</entry>
1255</row></tbody></tgroup></informaltable>
1256</section> 1187</section>
1257 1188
1258<section id="FE_DISEQC_SEND_MASTER_CMD"> 1189<section id="FE_DISEQC_SEND_MASTER_CMD">
@@ -1302,45 +1233,7 @@ modulation mode which can be one of the following:
1302</entry> 1233</entry>
1303 </row></tbody></tgroup></informaltable> 1234 </row></tbody></tgroup></informaltable>
1304 1235
1305<para>ERRORS 1236&return-value-dvb;
1306</para>
1307<informaltable><tgroup cols="2"><tbody><row><entry
1308 align="char">
1309<para>EBADF</para>
1310</entry><entry
1311 align="char">
1312<para>fd is not a valid file descriptor.</para>
1313</entry>
1314 </row><row><entry
1315 align="char">
1316<para>EFAULT</para>
1317</entry><entry
1318 align="char">
1319<para>Seq points to an invalid address.</para>
1320</entry>
1321 </row><row><entry
1322 align="char">
1323<para>EINVAL</para>
1324</entry><entry
1325 align="char">
1326<para>The data structure referred to by seq is invalid in some
1327 way.</para>
1328</entry>
1329 </row><row><entry
1330 align="char">
1331<para>EPERM</para>
1332</entry><entry
1333 align="char">
1334<para>Permission denied (needs read/write access).</para>
1335</entry>
1336 </row><row><entry
1337 align="char">
1338<para>EINTERNAL</para>
1339</entry><entry
1340 align="char">
1341<para>Internal error in the device driver.</para>
1342</entry>
1343</row></tbody></tgroup></informaltable>
1344</section> 1237</section>
1345 1238
1346<section id="FE_DISEQC_RECV_SLAVE_REPLY"> 1239<section id="FE_DISEQC_RECV_SLAVE_REPLY">
@@ -1390,45 +1283,7 @@ modulation mode which can be one of the following:
1390<para>Pointer to the command to be received.</para> 1283<para>Pointer to the command to be received.</para>
1391</entry> 1284</entry>
1392 </row></tbody></tgroup></informaltable> 1285 </row></tbody></tgroup></informaltable>
1393<para>ERRORS 1286&return-value-dvb;
1394</para>
1395<informaltable><tgroup cols="2"><tbody><row><entry
1396 align="char">
1397<para>EBADF</para>
1398</entry><entry
1399 align="char">
1400<para>fd is not a valid file descriptor.</para>
1401</entry>
1402 </row><row><entry
1403 align="char">
1404<para>EFAULT</para>
1405</entry><entry
1406 align="char">
1407<para>Seq points to an invalid address.</para>
1408</entry>
1409 </row><row><entry
1410 align="char">
1411<para>EINVAL</para>
1412</entry><entry
1413 align="char">
1414<para>The data structure referred to by seq is invalid in some
1415 way.</para>
1416</entry>
1417 </row><row><entry
1418 align="char">
1419<para>EPERM</para>
1420</entry><entry
1421 align="char">
1422<para>Permission denied (needs read/write access).</para>
1423</entry>
1424 </row><row><entry
1425 align="char">
1426<para>EINTERNAL</para>
1427</entry><entry
1428 align="char">
1429<para>Internal error in the device driver.</para>
1430</entry>
1431 </row></tbody></tgroup></informaltable>
1432</section> 1287</section>
1433 1288
1434<section id="FE_DISEQC_SEND_BURST"> 1289<section id="FE_DISEQC_SEND_BURST">
@@ -1476,45 +1331,7 @@ modulation mode which can be one of the following:
1476</entry> 1331</entry>
1477 </row></tbody></tgroup></informaltable> 1332 </row></tbody></tgroup></informaltable>
1478 1333
1479<para>ERRORS 1334&return-value-dvb;
1480</para>
1481<informaltable><tgroup cols="2"><tbody><row><entry
1482 align="char">
1483<para>EBADF</para>
1484</entry><entry
1485 align="char">
1486<para>fd is not a valid file descriptor.</para>
1487</entry>
1488 </row><row><entry
1489 align="char">
1490<para>EFAULT</para>
1491</entry><entry
1492 align="char">
1493<para>Seq points to an invalid address.</para>
1494</entry>
1495 </row><row><entry
1496 align="char">
1497<para>EINVAL</para>
1498</entry><entry
1499 align="char">
1500<para>The data structure referred to by seq is invalid in some
1501 way.</para>
1502</entry>
1503 </row><row><entry
1504 align="char">
1505<para>EPERM</para>
1506</entry><entry
1507 align="char">
1508<para>Permission denied (needs read/write access).</para>
1509</entry>
1510 </row><row><entry
1511 align="char">
1512<para>EINTERNAL</para>
1513</entry><entry
1514 align="char">
1515<para>Internal error in the device driver.</para>
1516</entry>
1517</row></tbody></tgroup></informaltable>
1518</section> 1335</section>
1519 1336
1520<section id="FE_SET_TONE"> 1337<section id="FE_SET_TONE">
@@ -1560,44 +1377,7 @@ modulation mode which can be one of the following:
1560<para>The requested tone generation mode (on/off).</para> 1377<para>The requested tone generation mode (on/off).</para>
1561</entry> 1378</entry>
1562 </row></tbody></tgroup></informaltable> 1379 </row></tbody></tgroup></informaltable>
1563<para>ERRORS 1380&return-value-dvb;
1564</para>
1565<informaltable><tgroup cols="2"><tbody><row><entry
1566 align="char">
1567<para>ENODEV</para>
1568</entry><entry
1569 align="char">
1570<para>Device driver not loaded/available.</para>
1571</entry>
1572 </row><row><entry
1573 align="char">
1574<para>EBUSY</para>
1575</entry><entry
1576 align="char">
1577<para>Device or resource busy.</para>
1578</entry>
1579 </row><row><entry
1580 align="char">
1581<para>EINVAL</para>
1582</entry><entry
1583 align="char">
1584<para>Invalid argument.</para>
1585</entry>
1586 </row><row><entry
1587 align="char">
1588<para>EPERM</para>
1589</entry><entry
1590 align="char">
1591<para>File not opened with read permissions.</para>
1592</entry>
1593 </row><row><entry
1594 align="char">
1595<para>EINTERNAL</para>
1596</entry><entry
1597 align="char">
1598<para>Internal error in the device driver.</para>
1599</entry>
1600</row></tbody></tgroup></informaltable>
1601</section> 1381</section>
1602 1382
1603<section id="FE_SET_VOLTAGE"> 1383<section id="FE_SET_VOLTAGE">
@@ -1645,44 +1425,7 @@ modulation mode which can be one of the following:
1645</entry> 1425</entry>
1646 </row></tbody></tgroup></informaltable> 1426 </row></tbody></tgroup></informaltable>
1647 1427
1648<para>ERRORS 1428&return-value-dvb;
1649</para>
1650<informaltable><tgroup cols="2"><tbody><row><entry
1651 align="char">
1652<para>ENODEV</para>
1653</entry><entry
1654 align="char">
1655<para>Device driver not loaded/available.</para>
1656</entry>
1657 </row><row><entry
1658 align="char">
1659<para>EBUSY</para>
1660</entry><entry
1661 align="char">
1662<para>Device or resource busy.</para>
1663</entry>
1664 </row><row><entry
1665 align="char">
1666<para>EINVAL</para>
1667</entry><entry
1668 align="char">
1669<para>Invalid argument.</para>
1670</entry>
1671 </row><row><entry
1672 align="char">
1673<para>EPERM</para>
1674</entry><entry
1675 align="char">
1676<para>File not opened with read permissions.</para>
1677</entry>
1678 </row><row><entry
1679 align="char">
1680<para>EINTERNAL</para>
1681</entry><entry
1682 align="char">
1683<para>Internal error in the device driver.</para>
1684</entry>
1685 </row></tbody></tgroup></informaltable>
1686</section> 1429</section>
1687 1430
1688<section id="FE_ENABLE_HIGH_LNB_VOLTAGE"> 1431<section id="FE_ENABLE_HIGH_LNB_VOLTAGE">
@@ -1731,44 +1474,7 @@ modulation mode which can be one of the following:
1731</entry> 1474</entry>
1732 </row></tbody></tgroup></informaltable> 1475 </row></tbody></tgroup></informaltable>
1733 1476
1734<para>ERRORS 1477&return-value-dvb;
1735</para>
1736<informaltable><tgroup cols="2"><tbody><row><entry
1737 align="char">
1738<para>ENODEV</para>
1739</entry><entry
1740 align="char">
1741<para>Device driver not loaded/available.</para>
1742</entry>
1743 </row><row><entry
1744 align="char">
1745<para>EBUSY</para>
1746</entry><entry
1747 align="char">
1748<para>Device or resource busy.</para>
1749</entry>
1750 </row><row><entry
1751 align="char">
1752<para>EINVAL</para>
1753</entry><entry
1754 align="char">
1755<para>Invalid argument.</para>
1756</entry>
1757 </row><row><entry
1758 align="char">
1759<para>EPERM</para>
1760</entry><entry
1761 align="char">
1762<para>File not opened with read permissions.</para>
1763</entry>
1764 </row><row><entry
1765 align="char">
1766<para>EINTERNAL</para>
1767</entry><entry
1768 align="char">
1769<para>Internal error in the device driver.</para>
1770</entry>
1771 </row></tbody></tgroup></informaltable>
1772</section> 1478</section>
1773 1479
1774<section id="FE_SET_FRONTEND_TUNE_MODE"> 1480<section id="FE_SET_FRONTEND_TUNE_MODE">
@@ -1800,11 +1506,7 @@ FE_TUNE_MODE_ONESHOT When set, this flag will disable any zigzagging or other "n
1800</entry> 1506</entry>
1801 </row></tbody></tgroup></informaltable> 1507 </row></tbody></tgroup></informaltable>
1802 1508
1803<para>ERRORS</para> 1509&return-value-dvb;
1804<informaltable><tgroup cols="2"><tbody><row>
1805<entry align="char"><para>EINVAL</para></entry>
1806<entry align="char"><para>Invalid argument.</para></entry>
1807 </row></tbody></tgroup></informaltable>
1808</section> 1510</section>
1809 1511
1810<section id="FE_DISHNETWORK_SEND_LEGACY_CMD"> 1512<section id="FE_DISHNETWORK_SEND_LEGACY_CMD">
@@ -1838,12 +1540,7 @@ sends the specified raw cmd to the dish via DISEqC.
1838</entry> 1540</entry>
1839 </row></tbody></tgroup></informaltable> 1541 </row></tbody></tgroup></informaltable>
1840 1542
1841<para>ERRORS</para> 1543&return-value-dvb;
1842<informaltable><tgroup cols="1"><tbody><row>
1843<entry align="char">
1844 <para>There are no errors in use for this call</para>
1845</entry>
1846</row></tbody></tgroup></informaltable>
1847</section> 1544</section>
1848 1545
1849</section> 1546</section>
diff --git a/Documentation/DocBook/dvb/intro.xml b/Documentation/DocBook/media/dvb/intro.xml
index 0dc83f672ea..2048b53d19b 100644
--- a/Documentation/DocBook/dvb/intro.xml
+++ b/Documentation/DocBook/media/dvb/intro.xml
@@ -154,6 +154,10 @@ are called:</para>
154</listitem> 154</listitem>
155 <listitem> 155 <listitem>
156 156
157<para><emphasis role="tt">/dev/dvb/adapterN/dvrM</emphasis>,</para>
158</listitem>
159 <listitem>
160
157<para><emphasis role="tt">/dev/dvb/adapterN/caM</emphasis>,</para></listitem></itemizedlist> 161<para><emphasis role="tt">/dev/dvb/adapterN/caM</emphasis>,</para></listitem></itemizedlist>
158 162
159<para>where N enumerates the DVB PCI cards in a system starting 163<para>where N enumerates the DVB PCI cards in a system starting
@@ -175,16 +179,33 @@ the devices are described in the following chapters.</para>
175The DVB API include files should be included in application sources with 179The DVB API include files should be included in application sources with
176a partial path like:</para> 180a partial path like:</para>
177 181
178 182<programlisting>
183 #include &#x003C;linux/dvb/audio.h&#x003E;
184</programlisting>
185<programlisting>
186 #include &#x003C;linux/dvb/ca.h&#x003E;
187</programlisting>
188<programlisting>
189 #include &#x003C;linux/dvb/dmx.h&#x003E;
190</programlisting>
179<programlisting> 191<programlisting>
180 #include &#x003C;linux/dvb/frontend.h&#x003E; 192 #include &#x003C;linux/dvb/frontend.h&#x003E;
181</programlisting> 193</programlisting>
194<programlisting>
195 #include &#x003C;linux/dvb/net.h&#x003E;
196</programlisting>
197<programlisting>
198 #include &#x003C;linux/dvb/osd.h&#x003E;
199</programlisting>
200<programlisting>
201 #include &#x003C;linux/dvb/video.h&#x003E;
202</programlisting>
182 203
183<para>To enable applications to support different API version, an 204<para>To enable applications to support different API version, an
184additional include file <emphasis 205additional include file <emphasis
185role="tt">linux/dvb/version.h</emphasis> exists, which defines the 206role="tt">linux/dvb/version.h</emphasis> exists, which defines the
186constant <emphasis role="tt">DVB_API_VERSION</emphasis>. This document 207constant <emphasis role="tt">DVB_API_VERSION</emphasis>. This document
187describes <emphasis role="tt">DVB_API_VERSION&#x00A0;3</emphasis>. 208describes <emphasis role="tt">DVB_API_VERSION 5.8</emphasis>.
188</para> 209</para>
189 210
190</section> 211</section>
diff --git a/Documentation/DocBook/dvb/kdapi.xml b/Documentation/DocBook/media/dvb/kdapi.xml
index 6c67481eaa4..6c11ec52cbe 100644
--- a/Documentation/DocBook/dvb/kdapi.xml
+++ b/Documentation/DocBook/media/dvb/kdapi.xml
@@ -2,7 +2,7 @@
2<para>The kernel demux API defines a driver-internal interface for registering low-level, 2<para>The kernel demux API defines a driver-internal interface for registering low-level,
3hardware specific driver to a hardware independent demux layer. It is only of interest for 3hardware specific driver to a hardware independent demux layer. It is only of interest for
4DVB device driver writers. The header file for this API is named <emphasis role="tt">demux.h</emphasis> and located in 4DVB device driver writers. The header file for this API is named <emphasis role="tt">demux.h</emphasis> and located in
5<emphasis role="tt">drivers/media/dvb/dvb-core</emphasis>. 5<emphasis role="tt">drivers/media/dvb-core</emphasis>.
6</para> 6</para>
7<para>Maintainer note: This section must be reviewed. It is probably out of date. 7<para>Maintainer note: This section must be reviewed. It is probably out of date.
8</para> 8</para>
diff --git a/Documentation/DocBook/media/dvb/net.xml b/Documentation/DocBook/media/dvb/net.xml
new file mode 100644
index 00000000000..a193e86941b
--- /dev/null
+++ b/Documentation/DocBook/media/dvb/net.xml
@@ -0,0 +1,156 @@
1<title>DVB Network API</title>
2<para>The DVB net device enables feeding of MPE (multi protocol encapsulation) packets
3received via DVB into the Linux network protocol stack, e.g. for internet via satellite
4applications. It can be accessed through <emphasis role="tt">/dev/dvb/adapter0/net0</emphasis>. Data types and
5and ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/net.h</emphasis> in your
6application.
7</para>
8<section id="dvb_net_types">
9<title>DVB Net Data Types</title>
10
11<section id="dvb-net-if">
12<title>struct dvb_net_if</title>
13<programlisting>
14struct dvb_net_if {
15 __u16 pid;
16 __u16 if_num;
17 __u8 feedtype;
18#define DVB_NET_FEEDTYPE_MPE 0 /&#x22C6; multi protocol encapsulation &#x22C6;/
19#define DVB_NET_FEEDTYPE_ULE 1 /&#x22C6; ultra lightweight encapsulation &#x22C6;/
20};
21</programlisting>
22</section>
23
24</section>
25<section id="net_fcalls">
26<title>DVB net Function Calls</title>
27<para>To be written&#x2026;
28</para>
29
30<section id="NET_ADD_IF"
31role="subsection"><title>NET_ADD_IF</title>
32<para>DESCRIPTION
33</para>
34<informaltable><tgroup cols="1"><tbody><row><entry
35 align="char">
36<para>This ioctl is undocumented. Documentation is welcome.</para>
37</entry>
38 </row></tbody></tgroup></informaltable>
39<para>SYNOPSIS
40</para>
41<informaltable><tgroup cols="1"><tbody><row><entry
42 align="char">
43<para>int ioctl(fd, int request = NET_ADD_IF,
44 struct dvb_net_if *if);</para>
45</entry>
46 </row></tbody></tgroup></informaltable>
47<para>PARAMETERS
48</para>
49<informaltable><tgroup cols="2"><tbody><row><entry
50 align="char">
51<para>int fd</para>
52</entry><entry
53 align="char">
54<para>File descriptor returned by a previous call to open().</para>
55</entry>
56 </row><row><entry
57 align="char">
58<para>int request</para>
59</entry><entry
60 align="char">
61<para>Equals NET_ADD_IF for this command.</para>
62</entry>
63 </row><row><entry
64 align="char">
65<para>struct dvb_net_if *if
66</para>
67</entry><entry
68 align="char">
69<para>Undocumented.</para>
70</entry>
71 </row></tbody></tgroup></informaltable>
72&return-value-dvb;
73</section>
74
75<section id="NET_REMOVE_IF"
76role="subsection"><title>NET_REMOVE_IF</title>
77<para>DESCRIPTION
78</para>
79<informaltable><tgroup cols="1"><tbody><row><entry
80 align="char">
81<para>This ioctl is undocumented. Documentation is welcome.</para>
82</entry>
83 </row></tbody></tgroup></informaltable>
84<para>SYNOPSIS
85</para>
86<informaltable><tgroup cols="1"><tbody><row><entry
87 align="char">
88<para>int ioctl(fd, int request = NET_REMOVE_IF);
89</para>
90</entry>
91 </row></tbody></tgroup></informaltable>
92<para>PARAMETERS
93</para>
94<informaltable><tgroup cols="2"><tbody><row><entry
95 align="char">
96<para>int fd</para>
97</entry><entry
98 align="char">
99<para>File descriptor returned by a previous call to open().</para>
100</entry>
101 </row><row><entry
102 align="char">
103<para>int request</para>
104</entry><entry
105 align="char">
106<para>Equals NET_REMOVE_IF for this command.</para>
107</entry>
108 </row></tbody></tgroup></informaltable>
109&return-value-dvb;
110</section>
111
112<section id="NET_GET_IF"
113role="subsection"><title>NET_GET_IF</title>
114<para>DESCRIPTION
115</para>
116<informaltable><tgroup cols="1"><tbody><row><entry
117 align="char">
118<para>This ioctl is undocumented. Documentation is welcome.</para>
119</entry>
120 </row></tbody></tgroup></informaltable>
121<para>SYNOPSIS
122</para>
123<informaltable><tgroup cols="1"><tbody><row><entry
124 align="char">
125<para>int ioctl(fd, int request = NET_GET_IF,
126 struct dvb_net_if *if);</para>
127</entry>
128 </row></tbody></tgroup></informaltable>
129<para>PARAMETERS
130</para>
131<informaltable><tgroup cols="2"><tbody><row><entry
132 align="char">
133<para>int fd</para>
134</entry><entry
135 align="char">
136<para>File descriptor returned by a previous call to open().</para>
137</entry>
138 </row><row><entry
139 align="char">
140<para>int request</para>
141</entry><entry
142 align="char">
143<para>Equals NET_GET_IF for this command.</para>
144</entry>
145 </row><row><entry
146 align="char">
147<para>struct dvb_net_if *if
148</para>
149</entry><entry
150 align="char">
151<para>Undocumented.</para>
152</entry>
153 </row></tbody></tgroup></informaltable>
154&return-value-dvb;
155</section>
156</section>
diff --git a/Documentation/DocBook/dvb/video.xml b/Documentation/DocBook/media/dvb/video.xml
index 7bb287e67c8..3ea1ca7e785 100644
--- a/Documentation/DocBook/dvb/video.xml
+++ b/Documentation/DocBook/media/dvb/video.xml
@@ -15,18 +15,23 @@ the audio and video device as well as the video4linux device.
15<para>The ioctls that deal with SPUs (sub picture units) and navigation packets are only 15<para>The ioctls that deal with SPUs (sub picture units) and navigation packets are only
16supported on some MPEG decoders made for DVD playback. 16supported on some MPEG decoders made for DVD playback.
17</para> 17</para>
18<para>
19These ioctls were also used by V4L2 to control MPEG decoders implemented in V4L2. The use
20of these ioctls for that purpose has been made obsolete and proper V4L2 ioctls or controls
21have been created to replace that functionality.</para>
18<section id="video_types"> 22<section id="video_types">
19<title>Video Data Types</title> 23<title>Video Data Types</title>
20 24
21<section id="video_format_t"> 25<section id="video-format-t">
22<title>video_format_t</title> 26<title>video_format_t</title>
23<para>The <emphasis role="tt">video_format_t</emphasis> data type defined by 27<para>The <emphasis role="tt">video_format_t</emphasis> data type defined by
24</para> 28</para>
25<programlisting> 29<programlisting>
26 typedef enum { 30typedef enum {
27 VIDEO_FORMAT_4_3, 31 VIDEO_FORMAT_4_3, /&#x22C6; Select 4:3 format &#x22C6;/
28 VIDEO_FORMAT_16_9 32 VIDEO_FORMAT_16_9, /&#x22C6; Select 16:9 format. &#x22C6;/
29 } video_format_t; 33 VIDEO_FORMAT_221_1 /&#x22C6; 2.21:1 &#x22C6;/
34} video_format_t;
30</programlisting> 35</programlisting>
31<para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio 36<para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio
32the output hardware (e.g. TV) has. It is also used in the data structures video_status 37the output hardware (e.g. TV) has. It is also used in the data structures video_status
@@ -36,34 +41,36 @@ stream.
36</para> 41</para>
37</section> 42</section>
38 43
39<section id="video_display_format_t"> 44<section id="video-displayformat-t">
40<title>video_display_format_t</title> 45<title>video_displayformat_t</title>
41<para>In case the display format of the video stream and of the display hardware differ the 46<para>In case the display format of the video stream and of the display hardware differ the
42application has to specify how to handle the cropping of the picture. This can be done using 47application has to specify how to handle the cropping of the picture. This can be done using
43the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts 48the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts
44</para> 49</para>
45<programlisting> 50<programlisting>
46 typedef enum { 51typedef enum {
47 VIDEO_PAN_SCAN, 52 VIDEO_PAN_SCAN, /&#x22C6; use pan and scan format &#x22C6;/
48 VIDEO_LETTER_BOX, 53 VIDEO_LETTER_BOX, /&#x22C6; use letterbox format &#x22C6;/
49 VIDEO_CENTER_CUT_OUT 54 VIDEO_CENTER_CUT_OUT /&#x22C6; use center cut out format &#x22C6;/
50 } video_display_format_t; 55} video_displayformat_t;
51</programlisting> 56</programlisting>
52<para>as argument. 57<para>as argument.
53</para> 58</para>
54</section> 59</section>
55 60
56<section id="video_stream_source"> 61<section id="video-stream-source-t">
57<title>video stream source</title> 62<title>video_stream_source_t</title>
58<para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take 63<para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take
59the following values, depending on whether we are replaying from an internal (demuxer) or 64the following values, depending on whether we are replaying from an internal (demuxer) or
60external (user write) source. 65external (user write) source.
61</para> 66</para>
62<programlisting> 67<programlisting>
63 typedef enum { 68typedef enum {
64 VIDEO_SOURCE_DEMUX, 69 VIDEO_SOURCE_DEMUX, /&#x22C6; Select the demux as the main source &#x22C6;/
65 VIDEO_SOURCE_MEMORY 70 VIDEO_SOURCE_MEMORY /&#x22C6; If this source is selected, the stream
66 } video_stream_source_t; 71 comes from the user through the write
72 system call &#x22C6;/
73} video_stream_source_t;
67</programlisting> 74</programlisting>
68<para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the 75<para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
69DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY 76DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY
@@ -72,49 +79,98 @@ call.
72</para> 79</para>
73</section> 80</section>
74 81
75<section id="video_play_state"> 82<section id="video-play-state-t">
76<title>video play state</title> 83<title>video_play_state_t</title>
77<para>The following values can be returned by the VIDEO_GET_STATUS call representing the 84<para>The following values can be returned by the VIDEO_GET_STATUS call representing the
78state of video playback. 85state of video playback.
79</para> 86</para>
80<programlisting> 87<programlisting>
81 typedef enum { 88typedef enum {
82 VIDEO_STOPPED, 89 VIDEO_STOPPED, /&#x22C6; Video is stopped &#x22C6;/
83 VIDEO_PLAYING, 90 VIDEO_PLAYING, /&#x22C6; Video is currently playing &#x22C6;/
84 VIDEO_FREEZED 91 VIDEO_FREEZED /&#x22C6; Video is freezed &#x22C6;/
85 } video_play_state_t; 92} video_play_state_t;
86</programlisting> 93</programlisting>
87</section> 94</section>
88 95
89<section id="video_event"> 96<section id="video-command">
97<title>struct video_command</title>
98<para>The structure must be zeroed before use by the application
99This ensures it can be extended safely in the future.</para>
100<programlisting>
101struct video_command {
102 __u32 cmd;
103 __u32 flags;
104 union {
105 struct {
106 __u64 pts;
107 } stop;
108
109 struct {
110 /&#x22C6; 0 or 1000 specifies normal speed,
111 1 specifies forward single stepping,
112 -1 specifies backward single stepping,
113 &gt;>1: playback at speed/1000 of the normal speed,
114 &lt;-1: reverse playback at (-speed/1000) of the normal speed. &#x22C6;/
115 __s32 speed;
116 __u32 format;
117 } play;
118
119 struct {
120 __u32 data[16];
121 } raw;
122 };
123};
124</programlisting>
125</section>
126
127<section id="video-size-t">
128<title>video_size_t</title>
129<programlisting>
130typedef struct {
131 int w;
132 int h;
133 video_format_t aspect_ratio;
134} video_size_t;
135</programlisting>
136</section>
137
138
139<section id="video-event">
90<title>struct video_event</title> 140<title>struct video_event</title>
91<para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT 141<para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT
92call. 142call.
93</para> 143</para>
94<programlisting> 144<programlisting>
95 struct video_event { 145struct video_event {
96 int32_t type; 146 __s32 type;
97 time_t timestamp; 147#define VIDEO_EVENT_SIZE_CHANGED 1
98 union { 148#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
99 video_format_t video_format; 149#define VIDEO_EVENT_DECODER_STOPPED 3
100 } u; 150#define VIDEO_EVENT_VSYNC 4
101 }; 151 __kernel_time_t timestamp;
152 union {
153 video_size_t size;
154 unsigned int frame_rate; /&#x22C6; in frames per 1000sec &#x22C6;/
155 unsigned char vsync_field; /&#x22C6; unknown/odd/even/progressive &#x22C6;/
156 } u;
157};
102</programlisting> 158</programlisting>
103</section> 159</section>
104 160
105<section id="video_status"> 161<section id="video-status">
106<title>struct video_status</title> 162<title>struct video_status</title>
107<para>The VIDEO_GET_STATUS call returns the following structure informing about various 163<para>The VIDEO_GET_STATUS call returns the following structure informing about various
108states of the playback operation. 164states of the playback operation.
109</para> 165</para>
110<programlisting> 166<programlisting>
111 struct video_status { 167struct video_status {
112 boolean video_blank; 168 int video_blank; /&#x22C6; blank video on freeze? &#x22C6;/
113 video_play_state_t play_state; 169 video_play_state_t play_state; /&#x22C6; current state of playback &#x22C6;/
114 video_stream_source_t stream_source; 170 video_stream_source_t stream_source; /&#x22C6; current source (demux/memory) &#x22C6;/
115 video_format_t video_format; 171 video_format_t video_format; /&#x22C6; current aspect ratio of stream &#x22C6;/
116 video_displayformat_t display_format; 172 video_displayformat_t display_format;/&#x22C6; selected cropping mode &#x22C6;/
117 }; 173};
118</programlisting> 174</programlisting>
119<para>If video_blank is set video will be blanked out if the channel is changed or if playback is 175<para>If video_blank is set video will be blanked out if the channel is changed or if playback is
120stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is 176stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is
@@ -127,17 +183,17 @@ device.
127</para> 183</para>
128</section> 184</section>
129 185
130<section id="video_still_picture"> 186<section id="video-still-picture">
131<title>struct video_still_picture</title> 187<title>struct video_still_picture</title>
132<para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the 188<para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the
133following structure. 189following structure.
134</para> 190</para>
135<programlisting> 191<programlisting>
136 /&#x22C6; pointer to and size of a single iframe in memory &#x22C6;/ 192/&#x22C6; pointer to and size of a single iframe in memory &#x22C6;/
137 struct video_still_picture { 193struct video_still_picture {
138 char &#x22C6;iFrame; 194 char &#x22C6;iFrame; /&#x22C6; pointer to a single iframe in memory &#x22C6;/
139 int32_t size; 195 int32_t size;
140 }; 196};
141</programlisting> 197</programlisting>
142</section> 198</section>
143 199
@@ -164,26 +220,26 @@ bits set according to the hardwares capabilities.
164</programlisting> 220</programlisting>
165</section> 221</section>
166 222
167<section id="video_system"> 223<section id="video-system">
168<title>video system</title> 224<title>video_system_t</title>
169<para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The 225<para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The
170following system types can be set: 226following system types can be set:
171</para> 227</para>
172<programlisting> 228<programlisting>
173 typedef enum { 229typedef enum {
174 VIDEO_SYSTEM_PAL, 230 VIDEO_SYSTEM_PAL,
175 VIDEO_SYSTEM_NTSC, 231 VIDEO_SYSTEM_NTSC,
176 VIDEO_SYSTEM_PALN, 232 VIDEO_SYSTEM_PALN,
177 VIDEO_SYSTEM_PALNc, 233 VIDEO_SYSTEM_PALNc,
178 VIDEO_SYSTEM_PALM, 234 VIDEO_SYSTEM_PALM,
179 VIDEO_SYSTEM_NTSC60, 235 VIDEO_SYSTEM_NTSC60,
180 VIDEO_SYSTEM_PAL60, 236 VIDEO_SYSTEM_PAL60,
181 VIDEO_SYSTEM_PALM60 237 VIDEO_SYSTEM_PALM60
182 } video_system_t; 238} video_system_t;
183</programlisting> 239</programlisting>
184</section> 240</section>
185 241
186<section id="video_highlight"> 242<section id="video-highlight">
187<title>struct video_highlight</title> 243<title>struct video_highlight</title>
188<para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The 244<para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The
189call expects the following format for that information: 245call expects the following format for that information:
@@ -210,8 +266,8 @@ call expects the following format for that information:
210</programlisting> 266</programlisting>
211 267
212</section> 268</section>
213<section id="video_spu"> 269<section id="video-spu">
214<title>video SPU</title> 270<title>struct video_spu</title>
215<para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the 271<para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the
216following format: 272following format:
217</para> 273</para>
@@ -224,27 +280,27 @@ following format:
224</programlisting> 280</programlisting>
225 281
226</section> 282</section>
227<section id="video_spu_palette"> 283<section id="video-spu-palette">
228<title>video SPU palette</title> 284<title>struct video_spu_palette</title>
229<para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE: 285<para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE:
230</para> 286</para>
231<programlisting> 287<programlisting>
232 typedef 288 typedef
233 struct video_spu_palette{ 289 struct video_spu_palette {
234 int length; 290 int length;
235 uint8_t &#x22C6;palette; 291 uint8_t &#x22C6;palette;
236 } video_spu_palette_t; 292 } video_spu_palette_t;
237</programlisting> 293</programlisting>
238 294
239</section> 295</section>
240<section id="video_navi_pack"> 296<section id="video-navi-pack">
241<title>video NAVI pack</title> 297<title>struct video_navi_pack</title>
242<para>In order to get the navigational data the following structure has to be passed to the ioctl 298<para>In order to get the navigational data the following structure has to be passed to the ioctl
243VIDEO_GET_NAVI: 299VIDEO_GET_NAVI:
244</para> 300</para>
245<programlisting> 301<programlisting>
246 typedef 302 typedef
247 struct video_navi_pack{ 303 struct video_navi_pack {
248 int length; /&#x22C6; 0 ... 1024 &#x22C6;/ 304 int length; /&#x22C6; 0 ... 1024 &#x22C6;/
249 uint8_t data[1024]; 305 uint8_t data[1024];
250 } video_navi_pack_t; 306 } video_navi_pack_t;
@@ -252,8 +308,8 @@ VIDEO_GET_NAVI:
252</section> 308</section>
253 309
254 310
255<section id="video_attributes"> 311<section id="video-attributes-t">
256<title>video attributes</title> 312<title>video_attributes_t</title>
257<para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES: 313<para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES:
258</para> 314</para>
259<programlisting> 315<programlisting>
@@ -347,8 +403,7 @@ VIDEO_GET_NAVI:
347<para>(blocking mode is the default)</para> 403<para>(blocking mode is the default)</para>
348</entry> 404</entry>
349 </row></tbody></tgroup></informaltable> 405 </row></tbody></tgroup></informaltable>
350<para>ERRORS 406<para>RETURN VALUE</para>
351</para>
352<informaltable><tgroup cols="2"><tbody><row><entry 407<informaltable><tgroup cols="2"><tbody><row><entry
353 align="char"> 408 align="char">
354<para>ENODEV</para> 409<para>ENODEV</para>
@@ -406,8 +461,7 @@ VIDEO_GET_NAVI:
406<para>File descriptor returned by a previous call to open().</para> 461<para>File descriptor returned by a previous call to open().</para>
407</entry> 462</entry>
408 </row></tbody></tgroup></informaltable> 463 </row></tbody></tgroup></informaltable>
409<para>ERRORS 464<para>RETURN VALUE</para>
410</para>
411<informaltable><tgroup cols="2"><tbody><row><entry 465<informaltable><tgroup cols="2"><tbody><row><entry
412 align="char"> 466 align="char">
413<para>EBADF</para> 467<para>EBADF</para>
@@ -462,8 +516,7 @@ VIDEO_GET_NAVI:
462<para>Size of buf.</para> 516<para>Size of buf.</para>
463</entry> 517</entry>
464 </row></tbody></tgroup></informaltable> 518 </row></tbody></tgroup></informaltable>
465<para>ERRORS 519<para>RETURN VALUE</para>
466</para>
467<informaltable><tgroup cols="2"><tbody><row><entry 520<informaltable><tgroup cols="2"><tbody><row><entry
468 align="char"> 521 align="char">
469<para>EPERM</para> 522<para>EPERM</para>
@@ -488,10 +541,12 @@ VIDEO_GET_NAVI:
488</entry> 541</entry>
489 </row></tbody></tgroup></informaltable> 542 </row></tbody></tgroup></informaltable>
490 543
491</section><section 544</section><section id="VIDEO_STOP"
492role="subsection"><title>VIDEO_STOP</title> 545role="subsection"><title>VIDEO_STOP</title>
493<para>DESCRIPTION 546<para>DESCRIPTION
494</para> 547</para>
548<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
549&VIDIOC-DECODER-CMD; instead.</para>
495<informaltable><tgroup cols="1"><tbody><row><entry 550<informaltable><tgroup cols="1"><tbody><row><entry
496 align="char"> 551 align="char">
497<para>This ioctl call asks the Video Device to stop playing the current stream. 552<para>This ioctl call asks the Video Device to stop playing the current stream.
@@ -543,29 +598,14 @@ role="subsection"><title>VIDEO_STOP</title>
543<para>FALSE: Show last decoded frame.</para> 598<para>FALSE: Show last decoded frame.</para>
544</entry> 599</entry>
545 </row></tbody></tgroup></informaltable> 600 </row></tbody></tgroup></informaltable>
546<para>ERRORS 601&return-value-dvb;
547</para>
548<informaltable><tgroup cols="2"><tbody><row><entry
549 align="char">
550<para>EBADF</para>
551</entry><entry
552 align="char">
553<para>fd is not a valid open file descriptor</para>
554</entry>
555 </row><row><entry
556 align="char">
557<para>EINTERNAL</para>
558</entry><entry
559 align="char">
560<para>Internal error, possibly in the communication with the
561 DVB subsystem.</para>
562</entry>
563 </row></tbody></tgroup></informaltable>
564 602
565</section><section 603</section><section id="VIDEO_PLAY"
566role="subsection"><title>VIDEO_PLAY</title> 604role="subsection"><title>VIDEO_PLAY</title>
567<para>DESCRIPTION 605<para>DESCRIPTION
568</para> 606</para>
607<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
608&VIDIOC-DECODER-CMD; instead.</para>
569<informaltable><tgroup cols="1"><tbody><row><entry 609<informaltable><tgroup cols="1"><tbody><row><entry
570 align="char"> 610 align="char">
571<para>This ioctl call asks the Video Device to start playing a video stream from the 611<para>This ioctl call asks the Video Device to start playing a video stream from the
@@ -596,29 +636,14 @@ role="subsection"><title>VIDEO_PLAY</title>
596<para>Equals VIDEO_PLAY for this command.</para> 636<para>Equals VIDEO_PLAY for this command.</para>
597</entry> 637</entry>
598 </row></tbody></tgroup></informaltable> 638 </row></tbody></tgroup></informaltable>
599<para>ERRORS 639&return-value-dvb;
600</para>
601<informaltable><tgroup cols="2"><tbody><row><entry
602 align="char">
603<para>EBADF</para>
604</entry><entry
605 align="char">
606<para>fd is not a valid open file descriptor</para>
607</entry>
608 </row><row><entry
609 align="char">
610<para>EINTERNAL</para>
611</entry><entry
612 align="char">
613<para>Internal error, possibly in the communication with the
614 DVB subsystem.</para>
615</entry>
616 </row></tbody></tgroup></informaltable>
617 640
618</section><section 641</section><section id="VIDEO_FREEZE"
619role="subsection"><title>VIDEO_FREEZE</title> 642role="subsection"><title>VIDEO_FREEZE</title>
620<para>DESCRIPTION 643<para>DESCRIPTION
621</para> 644</para>
645<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
646&VIDIOC-DECODER-CMD; instead.</para>
622<informaltable><tgroup cols="1"><tbody><row><entry 647<informaltable><tgroup cols="1"><tbody><row><entry
623 align="char"> 648 align="char">
624<para>This ioctl call suspends the live video stream being played. Decoding 649<para>This ioctl call suspends the live video stream being played. Decoding
@@ -653,29 +678,14 @@ role="subsection"><title>VIDEO_FREEZE</title>
653<para>Equals VIDEO_FREEZE for this command.</para> 678<para>Equals VIDEO_FREEZE for this command.</para>
654</entry> 679</entry>
655 </row></tbody></tgroup></informaltable> 680 </row></tbody></tgroup></informaltable>
656<para>ERRORS 681&return-value-dvb;
657</para>
658<informaltable><tgroup cols="2"><tbody><row><entry
659 align="char">
660<para>EBADF</para>
661</entry><entry
662 align="char">
663<para>fd is not a valid open file descriptor</para>
664</entry>
665 </row><row><entry
666 align="char">
667<para>EINTERNAL</para>
668</entry><entry
669 align="char">
670<para>Internal error, possibly in the communication with the
671 DVB subsystem.</para>
672</entry>
673 </row></tbody></tgroup></informaltable>
674 682
675</section><section 683</section><section id="VIDEO_CONTINUE"
676role="subsection"><title>VIDEO_CONTINUE</title> 684role="subsection"><title>VIDEO_CONTINUE</title>
677<para>DESCRIPTION 685<para>DESCRIPTION
678</para> 686</para>
687<para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
688&VIDIOC-DECODER-CMD; instead.</para>
679<informaltable><tgroup cols="1"><tbody><row><entry 689<informaltable><tgroup cols="1"><tbody><row><entry
680 align="char"> 690 align="char">
681<para>This ioctl call restarts decoding and playing processes of the video stream 691<para>This ioctl call restarts decoding and playing processes of the video stream
@@ -706,29 +716,15 @@ role="subsection"><title>VIDEO_CONTINUE</title>
706<para>Equals VIDEO_CONTINUE for this command.</para> 716<para>Equals VIDEO_CONTINUE for this command.</para>
707</entry> 717</entry>
708 </row></tbody></tgroup></informaltable> 718 </row></tbody></tgroup></informaltable>
709<para>ERRORS 719&return-value-dvb;
710</para>
711<informaltable><tgroup cols="2"><tbody><row><entry
712 align="char">
713<para>EBADF</para>
714</entry><entry
715 align="char">
716<para>fd is not a valid open file descriptor</para>
717</entry>
718 </row><row><entry
719 align="char">
720<para>EINTERNAL</para>
721</entry><entry
722 align="char">
723<para>Internal error, possibly in the communication with the
724 DVB subsystem.</para>
725</entry>
726 </row></tbody></tgroup></informaltable>
727 720
728</section><section 721</section><section id="VIDEO_SELECT_SOURCE"
729role="subsection"><title>VIDEO_SELECT_SOURCE</title> 722role="subsection"><title>VIDEO_SELECT_SOURCE</title>
730<para>DESCRIPTION 723<para>DESCRIPTION
731</para> 724</para>
725<para>This ioctl is for DVB devices only. This ioctl was also supported by the
726V4L2 ivtv driver, but that has been replaced by the ivtv-specific
727<constant>IVTV_IOC_PASSTHROUGH_MODE</constant> ioctl.</para>
732<informaltable><tgroup cols="1"><tbody><row><entry 728<informaltable><tgroup cols="1"><tbody><row><entry
733 align="char"> 729 align="char">
734<para>This ioctl call informs the video device which source shall be used for the input 730<para>This ioctl call informs the video device which source shall be used for the input
@@ -769,40 +765,72 @@ role="subsection"><title>VIDEO_SELECT_SOURCE</title>
769<para>Indicates which source shall be used for the Video stream.</para> 765<para>Indicates which source shall be used for the Video stream.</para>
770</entry> 766</entry>
771 </row></tbody></tgroup></informaltable> 767 </row></tbody></tgroup></informaltable>
772<para>ERRORS 768&return-value-dvb;
769
770</section><section id="VIDEO_SET_BLANK"
771role="subsection"><title>VIDEO_SET_BLANK</title>
772<para>DESCRIPTION
773</para>
774<informaltable><tgroup cols="1"><tbody><row><entry
775 align="char">
776<para>This ioctl call asks the Video Device to blank out the picture.</para>
777</entry>
778 </row></tbody></tgroup></informaltable>
779<para>SYNOPSIS
780</para>
781<informaltable><tgroup cols="1"><tbody><row><entry
782 align="char">
783<para>int ioctl(fd, int request = VIDEO_SET_BLANK, boolean
784 mode);</para>
785</entry>
786 </row></tbody></tgroup></informaltable>
787<para>PARAMETERS
773</para> 788</para>
774<informaltable><tgroup cols="2"><tbody><row><entry 789<informaltable><tgroup cols="2"><tbody><row><entry
775 align="char"> 790 align="char">
776<para>EBADF</para> 791<para>int fd</para>
777</entry><entry 792</entry><entry
778 align="char"> 793 align="char">
779<para>fd is not a valid open file descriptor</para> 794<para>File descriptor returned by a previous call to open().</para>
780</entry> 795</entry>
781 </row><row><entry 796 </row><row><entry
782 align="char"> 797 align="char">
783<para>EINTERNAL</para> 798<para>int request</para>
799</entry><entry
800 align="char">
801<para>Equals VIDEO_SET_BLANK for this command.</para>
802</entry>
803 </row><row><entry
804 align="char">
805<para>boolean mode</para>
784</entry><entry 806</entry><entry
785 align="char"> 807 align="char">
786<para>Internal error, possibly in the communication with the 808<para>TRUE: Blank screen when stop.</para>
787 DVB subsystem.</para> 809</entry>
810 </row><row><entry
811 align="char">
812</entry><entry
813 align="char">
814<para>FALSE: Show last decoded frame.</para>
788</entry> 815</entry>
789 </row></tbody></tgroup></informaltable> 816 </row></tbody></tgroup></informaltable>
817&return-value-dvb;
790 818
791</section><section 819</section><section id="VIDEO_GET_STATUS"
792role="subsection"><title>VIDEO_SET_BLANK</title> 820role="subsection"><title>VIDEO_GET_STATUS</title>
793<para>DESCRIPTION 821<para>DESCRIPTION
794</para> 822</para>
795<informaltable><tgroup cols="1"><tbody><row><entry 823<informaltable><tgroup cols="1"><tbody><row><entry
796 align="char"> 824 align="char">
797<para>This ioctl call asks the Video Device to blank out the picture.</para> 825<para>This ioctl call asks the Video Device to return the current status of the device.</para>
798</entry> 826</entry>
799 </row></tbody></tgroup></informaltable> 827 </row></tbody></tgroup></informaltable>
800<para>SYNOPSIS 828<para>SYNOPSIS
801</para> 829</para>
802<informaltable><tgroup cols="1"><tbody><row><entry 830<informaltable><tgroup cols="1"><tbody><row><entry
803 align="char"> 831 align="char">
804<para>int ioctl(fd, int request = VIDEO_SET_BLANK, boolean 832<para> int ioctl(fd, int request = VIDEO_GET_STATUS, struct
805 mode);</para> 833 video_status &#x22C6;status);</para>
806</entry> 834</entry>
807 </row></tbody></tgroup></informaltable> 835 </row></tbody></tgroup></informaltable>
808<para>PARAMETERS 836<para>PARAMETERS
@@ -819,63 +847,85 @@ role="subsection"><title>VIDEO_SET_BLANK</title>
819<para>int request</para> 847<para>int request</para>
820</entry><entry 848</entry><entry
821 align="char"> 849 align="char">
822<para>Equals VIDEO_SET_BLANK for this command.</para> 850<para>Equals VIDEO_GET_STATUS for this command.</para>
823</entry> 851</entry>
824 </row><row><entry 852 </row><row><entry
825 align="char"> 853 align="char">
826<para>boolean mode</para> 854<para>struct video_status
855 *status</para>
827</entry><entry 856</entry><entry
828 align="char"> 857 align="char">
829<para>TRUE: Blank screen when stop.</para> 858<para>Returns the current status of the Video Device.</para>
830</entry> 859</entry>
831 </row><row><entry 860 </row></tbody></tgroup></informaltable>
861&return-value-dvb;
862
863</section><section id="VIDEO_GET_FRAME_COUNT"
864role="subsection"><title>VIDEO_GET_FRAME_COUNT</title>
865<para>DESCRIPTION
866</para>
867<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
868ioctl has been replaced by the <constant>V4L2_CID_MPEG_VIDEO_DEC_FRAME</constant> control.</para>
869<informaltable><tgroup cols="1"><tbody><row><entry
832 align="char"> 870 align="char">
833</entry><entry 871<para>This ioctl call asks the Video Device to return the number of displayed frames
872since the decoder was started.</para>
873</entry>
874 </row></tbody></tgroup></informaltable>
875<para>SYNOPSIS
876</para>
877<informaltable><tgroup cols="1"><tbody><row><entry
834 align="char"> 878 align="char">
835<para>FALSE: Show last decoded frame.</para> 879<para>int ioctl(int fd, int request =
880 VIDEO_GET_FRAME_COUNT, __u64 *pts);</para>
836</entry> 881</entry>
837 </row></tbody></tgroup></informaltable> 882 </row></tbody></tgroup></informaltable>
838<para>ERRORS 883<para>PARAMETERS
839</para> 884</para>
840<informaltable><tgroup cols="2"><tbody><row><entry 885<informaltable><tgroup cols="2"><tbody><row><entry
841 align="char"> 886 align="char">
842<para>EBADF</para> 887<para>int fd</para>
843</entry><entry 888</entry><entry
844 align="char"> 889 align="char">
845<para>fd is not a valid open file descriptor</para> 890<para>File descriptor returned by a previous call to open().</para>
846</entry> 891</entry>
847 </row><row><entry 892 </row><row><entry
848 align="char"> 893 align="char">
849<para>EINTERNAL</para> 894<para>int request</para>
850</entry><entry 895</entry><entry
851 align="char"> 896 align="char">
852<para>Internal error, possibly in the communication with the 897<para>Equals VIDEO_GET_FRAME_COUNT for this
853 DVB subsystem.</para> 898 command.</para>
854</entry> 899</entry>
855 </row><row><entry 900 </row><row><entry
856 align="char"> 901 align="char">
857<para>EINVAL</para> 902<para>__u64 *pts
903</para>
858</entry><entry 904</entry><entry
859 align="char"> 905 align="char">
860<para>Illegal input parameter</para> 906<para>Returns the number of frames displayed since the decoder was started.
907</para>
861</entry> 908</entry>
862 </row></tbody></tgroup></informaltable> 909 </row></tbody></tgroup></informaltable>
910&return-value-dvb;
863 911
864</section><section 912</section><section id="VIDEO_GET_PTS"
865role="subsection"><title>VIDEO_GET_STATUS</title> 913role="subsection"><title>VIDEO_GET_PTS</title>
866<para>DESCRIPTION 914<para>DESCRIPTION
867</para> 915</para>
916<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
917ioctl has been replaced by the <constant>V4L2_CID_MPEG_VIDEO_DEC_PTS</constant> control.</para>
868<informaltable><tgroup cols="1"><tbody><row><entry 918<informaltable><tgroup cols="1"><tbody><row><entry
869 align="char"> 919 align="char">
870<para>This ioctl call asks the Video Device to return the current status of the device.</para> 920<para>This ioctl call asks the Video Device to return the current PTS timestamp.</para>
871</entry> 921</entry>
872 </row></tbody></tgroup></informaltable> 922 </row></tbody></tgroup></informaltable>
873<para>SYNOPSIS 923<para>SYNOPSIS
874</para> 924</para>
875<informaltable><tgroup cols="1"><tbody><row><entry 925<informaltable><tgroup cols="1"><tbody><row><entry
876 align="char"> 926 align="char">
877<para> int ioctl(fd, int request = VIDEO_GET_STATUS, struct 927<para>int ioctl(int fd, int request =
878 video_status &#x22C6;status);</para> 928 VIDEO_GET_PTS, __u64 *pts);</para>
879</entry> 929</entry>
880 </row></tbody></tgroup></informaltable> 930 </row></tbody></tgroup></informaltable>
881<para>PARAMETERS 931<para>PARAMETERS
@@ -892,47 +942,78 @@ role="subsection"><title>VIDEO_GET_STATUS</title>
892<para>int request</para> 942<para>int request</para>
893</entry><entry 943</entry><entry
894 align="char"> 944 align="char">
895<para>Equals VIDEO_GET_STATUS for this command.</para> 945<para>Equals VIDEO_GET_PTS for this
946 command.</para>
896</entry> 947</entry>
897 </row><row><entry 948 </row><row><entry
898 align="char"> 949 align="char">
899<para>struct video_status 950<para>__u64 *pts
900 *status</para> 951</para>
901</entry><entry 952</entry><entry
902 align="char"> 953 align="char">
903<para>Returns the current status of the Video Device.</para> 954<para>Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
955</para>
956<para>
957The PTS should belong to the currently played
958frame if possible, but may also be a value close to it
959like the PTS of the last decoded frame or the last PTS
960extracted by the PES parser.</para>
961</entry>
962 </row></tbody></tgroup></informaltable>
963&return-value-dvb;
964
965</section><section id="VIDEO_GET_FRAME_RATE"
966role="subsection"><title>VIDEO_GET_FRAME_RATE</title>
967<para>DESCRIPTION
968</para>
969<informaltable><tgroup cols="1"><tbody><row><entry
970 align="char">
971<para>This ioctl call asks the Video Device to return the current framerate.</para>
972</entry>
973 </row></tbody></tgroup></informaltable>
974<para>SYNOPSIS
975</para>
976<informaltable><tgroup cols="1"><tbody><row><entry
977 align="char">
978<para>int ioctl(int fd, int request =
979 VIDEO_GET_FRAME_RATE, unsigned int *rate);</para>
904</entry> 980</entry>
905 </row></tbody></tgroup></informaltable> 981 </row></tbody></tgroup></informaltable>
906<para>ERRORS 982<para>PARAMETERS
907</para> 983</para>
908<informaltable><tgroup cols="2"><tbody><row><entry 984<informaltable><tgroup cols="2"><tbody><row><entry
909 align="char"> 985 align="char">
910<para>EBADF</para> 986<para>int fd</para>
911</entry><entry 987</entry><entry
912 align="char"> 988 align="char">
913<para>fd is not a valid open file descriptor</para> 989<para>File descriptor returned by a previous call to open().</para>
914</entry> 990</entry>
915 </row><row><entry 991 </row><row><entry
916 align="char"> 992 align="char">
917<para>EINTERNAL</para> 993<para>int request</para>
918</entry><entry 994</entry><entry
919 align="char"> 995 align="char">
920<para>Internal error, possibly in the communication with the 996<para>Equals VIDEO_GET_FRAME_RATE for this
921 DVB subsystem.</para> 997 command.</para>
922</entry> 998</entry>
923 </row><row><entry 999 </row><row><entry
924 align="char"> 1000 align="char">
925<para>EFAULT</para> 1001<para>unsigned int *rate
1002</para>
926</entry><entry 1003</entry><entry
927 align="char"> 1004 align="char">
928<para>status points to invalid address</para> 1005<para>Returns the framerate in number of frames per 1000 seconds.
1006</para>
929</entry> 1007</entry>
930 </row></tbody></tgroup></informaltable> 1008 </row></tbody></tgroup></informaltable>
1009&return-value-dvb;
931 1010
932</section><section 1011</section><section id="VIDEO_GET_EVENT"
933role="subsection"><title>VIDEO_GET_EVENT</title> 1012role="subsection"><title>VIDEO_GET_EVENT</title>
934<para>DESCRIPTION 1013<para>DESCRIPTION
935</para> 1014</para>
1015<para>This ioctl is for DVB devices only. To get events from a V4L2 decoder use the V4L2
1016&VIDIOC-DQEVENT; ioctl instead.</para>
936<informaltable><tgroup cols="1"><tbody><row><entry 1017<informaltable><tgroup cols="1"><tbody><row><entry
937 align="char"> 1018 align="char">
938<para>This ioctl call returns an event of type video_event if available. If an event is 1019<para>This ioctl call returns an event of type video_event if available. If an event is
@@ -980,61 +1061,93 @@ role="subsection"><title>VIDEO_GET_EVENT</title>
980 stored.</para> 1061 stored.</para>
981</entry> 1062</entry>
982 </row></tbody></tgroup></informaltable> 1063 </row></tbody></tgroup></informaltable>
983<para>ERRORS 1064&return-value-dvb;
984</para>
985<informaltable><tgroup cols="2"><tbody><row><entry 1065<informaltable><tgroup cols="2"><tbody><row><entry
986 align="char"> 1066 align="char">
987<para>EBADF</para> 1067<para>EWOULDBLOCK</para>
988</entry><entry 1068</entry><entry
989 align="char"> 1069 align="char">
990<para>fd is not a valid open file descriptor</para> 1070<para>There is no event pending, and the device is in
1071 non-blocking mode.</para>
991</entry> 1072</entry>
992 </row><row><entry 1073 </row><row><entry
993 align="char"> 1074 align="char">
994<para>EFAULT</para> 1075<para>EOVERFLOW</para>
995</entry><entry 1076</entry><entry
996 align="char"> 1077 align="char">
997<para>ev points to invalid address</para> 1078<para>Overflow in event queue - one or more events were lost.</para>
998</entry> 1079</entry>
999 </row><row><entry 1080 </row></tbody></tgroup></informaltable>
1081
1082</section><section id="VIDEO_COMMAND"
1083role="subsection"><title>VIDEO_COMMAND</title>
1084<para>DESCRIPTION
1085</para>
1086<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
1087ioctl has been replaced by the &VIDIOC-DECODER-CMD; ioctl.</para>
1088<informaltable><tgroup cols="1"><tbody><row><entry
1000 align="char"> 1089 align="char">
1001<para>EWOULDBLOCK</para> 1090<para>This ioctl commands the decoder. The <constant>video_command</constant> struct
1091is a subset of the <constant>v4l2_decoder_cmd</constant> struct, so refer to the
1092&VIDIOC-DECODER-CMD; documentation for more information.</para>
1093</entry>
1094 </row></tbody></tgroup></informaltable>
1095<para>SYNOPSIS
1096</para>
1097<informaltable><tgroup cols="1"><tbody><row><entry
1098 align="char">
1099<para>int ioctl(int fd, int request =
1100 VIDEO_COMMAND, struct video_command *cmd);</para>
1101</entry>
1102 </row></tbody></tgroup></informaltable>
1103<para>PARAMETERS
1104</para>
1105<informaltable><tgroup cols="2"><tbody><row><entry
1106 align="char">
1107<para>int fd</para>
1002</entry><entry 1108</entry><entry
1003 align="char"> 1109 align="char">
1004<para>There is no event pending, and the device is in 1110<para>File descriptor returned by a previous call to open().</para>
1005 non-blocking mode.</para>
1006</entry> 1111</entry>
1007 </row><row><entry 1112 </row><row><entry
1008 align="char"> 1113 align="char">
1009<para>EOVERFLOW</para> 1114<para>int request</para>
1010</entry><entry 1115</entry><entry
1011 align="char"> 1116 align="char">
1117<para>Equals VIDEO_COMMAND for this
1118 command.</para>
1012</entry> 1119</entry>
1013 </row><row><entry 1120 </row><row><entry
1014 align="char"> 1121 align="char">
1122<para>struct video_command *cmd
1123</para>
1015</entry><entry 1124</entry><entry
1016 align="char"> 1125 align="char">
1017<para>Overflow in event queue - one or more events were lost.</para> 1126<para>Commands the decoder.
1127</para>
1018</entry> 1128</entry>
1019 </row></tbody></tgroup></informaltable> 1129 </row></tbody></tgroup></informaltable>
1130&return-value-dvb;
1020 1131
1021</section><section 1132</section><section id="VIDEO_TRY_COMMAND"
1022role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title> 1133role="subsection"><title>VIDEO_TRY_COMMAND</title>
1023<para>DESCRIPTION 1134<para>DESCRIPTION
1024</para> 1135</para>
1136<para>This ioctl is obsolete. Do not use in new drivers. For V4L2 decoders this
1137ioctl has been replaced by the &VIDIOC-TRY-DECODER-CMD; ioctl.</para>
1025<informaltable><tgroup cols="1"><tbody><row><entry 1138<informaltable><tgroup cols="1"><tbody><row><entry
1026 align="char"> 1139 align="char">
1027<para>This ioctl call asks the Video Device to select the video format to be applied 1140<para>This ioctl tries a decoder command. The <constant>video_command</constant> struct
1028 by the MPEG chip on the video.</para> 1141is a subset of the <constant>v4l2_decoder_cmd</constant> struct, so refer to the
1142&VIDIOC-TRY-DECODER-CMD; documentation for more information.</para>
1029</entry> 1143</entry>
1030 </row></tbody></tgroup></informaltable> 1144 </row></tbody></tgroup></informaltable>
1031<para>SYNOPSIS 1145<para>SYNOPSIS
1032</para> 1146</para>
1033<informaltable><tgroup cols="1"><tbody><row><entry 1147<informaltable><tgroup cols="1"><tbody><row><entry
1034 align="char"> 1148 align="char">
1035<para> int ioctl(fd, int request = 1149<para>int ioctl(int fd, int request =
1036 VIDEO_SET_DISPLAY_FORMAT, video_display_format_t 1150 VIDEO_TRY_COMMAND, struct video_command *cmd);</para>
1037 format);</para>
1038</entry> 1151</entry>
1039 </row></tbody></tgroup></informaltable> 1152 </row></tbody></tgroup></informaltable>
1040<para>PARAMETERS 1153<para>PARAMETERS
@@ -1051,60 +1164,84 @@ role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title>
1051<para>int request</para> 1164<para>int request</para>
1052</entry><entry 1165</entry><entry
1053 align="char"> 1166 align="char">
1054<para>Equals VIDEO_SET_DISPLAY_FORMAT for this 1167<para>Equals VIDEO_TRY_COMMAND for this
1055 command.</para> 1168 command.</para>
1056</entry> 1169</entry>
1057 </row><row><entry 1170 </row><row><entry
1058 align="char"> 1171 align="char">
1059<para>video_display_format_t 1172<para>struct video_command *cmd
1060 format</para> 1173</para>
1061</entry><entry 1174</entry><entry
1062 align="char"> 1175 align="char">
1063<para>Selects the video format to be used.</para> 1176<para>Try a decoder command.
1177</para>
1178</entry>
1179 </row></tbody></tgroup></informaltable>
1180&return-value-dvb;
1181
1182</section><section id="VIDEO_GET_SIZE"
1183role="subsection"><title>VIDEO_GET_SIZE</title>
1184<para>DESCRIPTION
1185</para>
1186<informaltable><tgroup cols="1"><tbody><row><entry
1187 align="char">
1188<para>This ioctl returns the size and aspect ratio.</para>
1064</entry> 1189</entry>
1065 </row></tbody></tgroup></informaltable> 1190 </row></tbody></tgroup></informaltable>
1066<para>ERRORS 1191<para>SYNOPSIS
1192</para>
1193<informaltable><tgroup cols="1"><tbody><row><entry
1194 align="char">
1195<para>int ioctl(int fd, int request =
1196 VIDEO_GET_SIZE, video_size_t *size);</para>
1197</entry>
1198 </row></tbody></tgroup></informaltable>
1199<para>PARAMETERS
1067</para> 1200</para>
1068<informaltable><tgroup cols="2"><tbody><row><entry 1201<informaltable><tgroup cols="2"><tbody><row><entry
1069 align="char"> 1202 align="char">
1070<para>EBADF</para> 1203<para>int fd</para>
1071</entry><entry 1204</entry><entry
1072 align="char"> 1205 align="char">
1073<para>fd is not a valid open file descriptor</para> 1206<para>File descriptor returned by a previous call to open().</para>
1074</entry> 1207</entry>
1075 </row><row><entry 1208 </row><row><entry
1076 align="char"> 1209 align="char">
1077<para>EINTERNAL</para> 1210<para>int request</para>
1078</entry><entry 1211</entry><entry
1079 align="char"> 1212 align="char">
1080<para>Internal error.</para> 1213<para>Equals VIDEO_GET_SIZE for this
1214 command.</para>
1081</entry> 1215</entry>
1082 </row><row><entry 1216 </row><row><entry
1083 align="char"> 1217 align="char">
1084<para>EINVAL</para> 1218<para>video_size_t *size
1219</para>
1085</entry><entry 1220</entry><entry
1086 align="char"> 1221 align="char">
1087<para>Illegal parameter format.</para> 1222<para>Returns the size and aspect ratio.
1223</para>
1088</entry> 1224</entry>
1089 </row></tbody></tgroup></informaltable> 1225 </row></tbody></tgroup></informaltable>
1226&return-value-dvb;
1090 1227
1091</section><section 1228</section><section id="VIDEO_SET_DISPLAY_FORMAT"
1092role="subsection"><title>VIDEO_STILLPICTURE</title> 1229role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title>
1093<para>DESCRIPTION 1230<para>DESCRIPTION
1094</para> 1231</para>
1095<informaltable><tgroup cols="1"><tbody><row><entry 1232<informaltable><tgroup cols="1"><tbody><row><entry
1096 align="char"> 1233 align="char">
1097<para>This ioctl call asks the Video Device to display a still picture (I-frame). The 1234<para>This ioctl call asks the Video Device to select the video format to be applied
1098 input data shall contain an I-frame. If the pointer is NULL, then the current 1235 by the MPEG chip on the video.</para>
1099 displayed still picture is blanked.</para>
1100</entry> 1236</entry>
1101 </row></tbody></tgroup></informaltable> 1237 </row></tbody></tgroup></informaltable>
1102<para>SYNOPSIS 1238<para>SYNOPSIS
1103</para> 1239</para>
1104<informaltable><tgroup cols="1"><tbody><row><entry 1240<informaltable><tgroup cols="1"><tbody><row><entry
1105 align="char"> 1241 align="char">
1106<para>int ioctl(fd, int request = VIDEO_STILLPICTURE, 1242<para> int ioctl(fd, int request =
1107 struct video_still_picture &#x22C6;sp);</para> 1243 VIDEO_SET_DISPLAY_FORMAT, video_display_format_t
1244 format);</para>
1108</entry> 1245</entry>
1109 </row></tbody></tgroup></informaltable> 1246 </row></tbody></tgroup></informaltable>
1110<para>PARAMETERS 1247<para>PARAMETERS
@@ -1121,44 +1258,68 @@ role="subsection"><title>VIDEO_STILLPICTURE</title>
1121<para>int request</para> 1258<para>int request</para>
1122</entry><entry 1259</entry><entry
1123 align="char"> 1260 align="char">
1124<para>Equals VIDEO_STILLPICTURE for this command.</para> 1261<para>Equals VIDEO_SET_DISPLAY_FORMAT for this
1262 command.</para>
1125</entry> 1263</entry>
1126 </row><row><entry 1264 </row><row><entry
1127 align="char"> 1265 align="char">
1128<para>struct 1266<para>video_display_format_t
1129 video_still_picture 1267 format</para>
1130 *sp</para>
1131</entry><entry 1268</entry><entry
1132 align="char"> 1269 align="char">
1133<para>Pointer to a location where an I-frame and size is stored.</para> 1270<para>Selects the video format to be used.</para>
1271</entry>
1272 </row></tbody></tgroup></informaltable>
1273&return-value-dvb;
1274
1275</section><section id="VIDEO_STILLPICTURE"
1276role="subsection"><title>VIDEO_STILLPICTURE</title>
1277<para>DESCRIPTION
1278</para>
1279<informaltable><tgroup cols="1"><tbody><row><entry
1280 align="char">
1281<para>This ioctl call asks the Video Device to display a still picture (I-frame). The
1282 input data shall contain an I-frame. If the pointer is NULL, then the current
1283 displayed still picture is blanked.</para>
1134</entry> 1284</entry>
1135 </row></tbody></tgroup></informaltable> 1285 </row></tbody></tgroup></informaltable>
1136<para>ERRORS 1286<para>SYNOPSIS
1287</para>
1288<informaltable><tgroup cols="1"><tbody><row><entry
1289 align="char">
1290<para>int ioctl(fd, int request = VIDEO_STILLPICTURE,
1291 struct video_still_picture &#x22C6;sp);</para>
1292</entry>
1293 </row></tbody></tgroup></informaltable>
1294<para>PARAMETERS
1137</para> 1295</para>
1138<informaltable><tgroup cols="2"><tbody><row><entry 1296<informaltable><tgroup cols="2"><tbody><row><entry
1139 align="char"> 1297 align="char">
1140<para>EBADF</para> 1298<para>int fd</para>
1141</entry><entry 1299</entry><entry
1142 align="char"> 1300 align="char">
1143<para>fd is not a valid open file descriptor</para> 1301<para>File descriptor returned by a previous call to open().</para>
1144</entry> 1302</entry>
1145 </row><row><entry 1303 </row><row><entry
1146 align="char"> 1304 align="char">
1147<para>EINTERNAL</para> 1305<para>int request</para>
1148</entry><entry 1306</entry><entry
1149 align="char"> 1307 align="char">
1150<para>Internal error.</para> 1308<para>Equals VIDEO_STILLPICTURE for this command.</para>
1151</entry> 1309</entry>
1152 </row><row><entry 1310 </row><row><entry
1153 align="char"> 1311 align="char">
1154<para>EFAULT</para> 1312<para>struct
1313 video_still_picture
1314 *sp</para>
1155</entry><entry 1315</entry><entry
1156 align="char"> 1316 align="char">
1157<para>sp points to an invalid iframe.</para> 1317<para>Pointer to a location where an I-frame and size is stored.</para>
1158</entry> 1318</entry>
1159 </row></tbody></tgroup></informaltable> 1319 </row></tbody></tgroup></informaltable>
1320&return-value-dvb;
1160 1321
1161</section><section 1322</section><section id="VIDEO_FAST_FORWARD"
1162role="subsection"><title>VIDEO_FAST_FORWARD</title> 1323role="subsection"><title>VIDEO_FAST_FORWARD</title>
1163<para>DESCRIPTION 1324<para>DESCRIPTION
1164</para> 1325</para>
@@ -1200,39 +1361,17 @@ role="subsection"><title>VIDEO_FAST_FORWARD</title>
1200<para>The number of frames to skip.</para> 1361<para>The number of frames to skip.</para>
1201</entry> 1362</entry>
1202 </row></tbody></tgroup></informaltable> 1363 </row></tbody></tgroup></informaltable>
1203<para>ERRORS 1364&return-value-dvb;
1204</para>
1205<informaltable><tgroup cols="2"><tbody><row><entry 1365<informaltable><tgroup cols="2"><tbody><row><entry
1206 align="char"> 1366 align="char">
1207<para>EBADF</para>
1208</entry><entry
1209 align="char">
1210<para>fd is not a valid open file descriptor</para>
1211</entry>
1212 </row><row><entry
1213 align="char">
1214<para>EINTERNAL</para>
1215</entry><entry
1216 align="char">
1217<para>Internal error.</para>
1218</entry>
1219 </row><row><entry
1220 align="char">
1221<para>EPERM</para> 1367<para>EPERM</para>
1222</entry><entry 1368</entry><entry
1223 align="char"> 1369 align="char">
1224<para>Mode VIDEO_SOURCE_MEMORY not selected.</para> 1370<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
1225</entry> 1371</entry>
1226 </row><row><entry
1227 align="char">
1228<para>EINVAL</para>
1229</entry><entry
1230 align="char">
1231<para>Illegal parameter format.</para>
1232</entry>
1233 </row></tbody></tgroup></informaltable> 1372 </row></tbody></tgroup></informaltable>
1234 1373
1235</section><section 1374</section><section id="VIDEO_SLOWMOTION"
1236role="subsection"><title>VIDEO_SLOWMOTION</title> 1375role="subsection"><title>VIDEO_SLOWMOTION</title>
1237<para>DESCRIPTION 1376<para>DESCRIPTION
1238</para> 1377</para>
@@ -1274,39 +1413,17 @@ role="subsection"><title>VIDEO_SLOWMOTION</title>
1274<para>The number of times to repeat each frame.</para> 1413<para>The number of times to repeat each frame.</para>
1275</entry> 1414</entry>
1276 </row></tbody></tgroup></informaltable> 1415 </row></tbody></tgroup></informaltable>
1277<para>ERRORS 1416&return-value-dvb;
1278</para>
1279<informaltable><tgroup cols="2"><tbody><row><entry 1417<informaltable><tgroup cols="2"><tbody><row><entry
1280 align="char"> 1418 align="char">
1281<para>EBADF</para>
1282</entry><entry
1283 align="char">
1284<para>fd is not a valid open file descriptor</para>
1285</entry>
1286 </row><row><entry
1287 align="char">
1288<para>EINTERNAL</para>
1289</entry><entry
1290 align="char">
1291<para>Internal error.</para>
1292</entry>
1293 </row><row><entry
1294 align="char">
1295<para>EPERM</para> 1419<para>EPERM</para>
1296</entry><entry 1420</entry><entry
1297 align="char"> 1421 align="char">
1298<para>Mode VIDEO_SOURCE_MEMORY not selected.</para> 1422<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
1299</entry> 1423</entry>
1300 </row><row><entry
1301 align="char">
1302<para>EINVAL</para>
1303</entry><entry
1304 align="char">
1305<para>Illegal parameter format.</para>
1306</entry>
1307 </row></tbody></tgroup></informaltable> 1424 </row></tbody></tgroup></informaltable>
1308 1425
1309</section><section 1426</section><section id="VIDEO_GET_CAPABILITIES"
1310role="subsection"><title>VIDEO_GET_CAPABILITIES</title> 1427role="subsection"><title>VIDEO_GET_CAPABILITIES</title>
1311<para>DESCRIPTION 1428<para>DESCRIPTION
1312</para> 1429</para>
@@ -1350,25 +1467,9 @@ role="subsection"><title>VIDEO_GET_CAPABILITIES</title>
1350 information.</para> 1467 information.</para>
1351</entry> 1468</entry>
1352 </row></tbody></tgroup></informaltable> 1469 </row></tbody></tgroup></informaltable>
1353<para>ERRORS 1470&return-value-dvb;
1354</para>
1355<informaltable><tgroup cols="2"><tbody><row><entry
1356 align="char">
1357<para>EBADF</para>
1358</entry><entry
1359 align="char">
1360<para>fd is not a valid open file descriptor</para>
1361</entry>
1362 </row><row><entry
1363 align="char">
1364<para>EFAULT</para>
1365</entry><entry
1366 align="char">
1367<para>cap points to an invalid iframe.</para>
1368</entry>
1369 </row></tbody></tgroup></informaltable>
1370 1471
1371</section><section 1472</section><section id="VIDEO_SET_ID"
1372role="subsection"><title>VIDEO_SET_ID</title> 1473role="subsection"><title>VIDEO_SET_ID</title>
1373<para>DESCRIPTION 1474<para>DESCRIPTION
1374</para> 1475</para>
@@ -1410,24 +1511,9 @@ role="subsection"><title>VIDEO_SET_ID</title>
1410<para>video sub-stream id</para> 1511<para>video sub-stream id</para>
1411</entry> 1512</entry>
1412 </row></tbody></tgroup></informaltable> 1513 </row></tbody></tgroup></informaltable>
1413<para>ERRORS 1514&return-value-dvb;
1414</para>
1415<informaltable><tgroup cols="2"><tbody><row><entry 1515<informaltable><tgroup cols="2"><tbody><row><entry
1416 align="char"> 1516 align="char">
1417<para>EBADF</para>
1418</entry><entry
1419 align="char">
1420<para>fd is not a valid open file descriptor.</para>
1421</entry>
1422 </row><row><entry
1423 align="char">
1424<para>EINTERNAL</para>
1425</entry><entry
1426 align="char">
1427<para>Internal error.</para>
1428</entry>
1429 </row><row><entry
1430 align="char">
1431<para>EINVAL</para> 1517<para>EINVAL</para>
1432</entry><entry 1518</entry><entry
1433 align="char"> 1519 align="char">
@@ -1435,7 +1521,7 @@ role="subsection"><title>VIDEO_SET_ID</title>
1435</entry> 1521</entry>
1436 </row></tbody></tgroup></informaltable> 1522 </row></tbody></tgroup></informaltable>
1437 1523
1438</section><section 1524</section><section id="VIDEO_CLEAR_BUFFER"
1439role="subsection"><title>VIDEO_CLEAR_BUFFER</title> 1525role="subsection"><title>VIDEO_CLEAR_BUFFER</title>
1440<para>DESCRIPTION 1526<para>DESCRIPTION
1441</para> 1527</para>
@@ -1468,18 +1554,9 @@ role="subsection"><title>VIDEO_CLEAR_BUFFER</title>
1468<para>Equals VIDEO_CLEAR_BUFFER for this command.</para> 1554<para>Equals VIDEO_CLEAR_BUFFER for this command.</para>
1469</entry> 1555</entry>
1470 </row></tbody></tgroup></informaltable> 1556 </row></tbody></tgroup></informaltable>
1471<para>ERRORS 1557&return-value-dvb;
1472</para>
1473<informaltable><tgroup cols="2"><tbody><row><entry
1474 align="char">
1475<para>EBADF</para>
1476</entry><entry
1477 align="char">
1478<para>fd is not a valid open file descriptor</para>
1479</entry>
1480 </row></tbody></tgroup></informaltable>
1481 1558
1482</section><section 1559</section><section id="VIDEO_SET_STREAMTYPE"
1483role="subsection"><title>VIDEO_SET_STREAMTYPE</title> 1560role="subsection"><title>VIDEO_SET_STREAMTYPE</title>
1484<para>DESCRIPTION 1561<para>DESCRIPTION
1485</para> 1562</para>
@@ -1522,25 +1599,9 @@ role="subsection"><title>VIDEO_SET_STREAMTYPE</title>
1522<para>stream type</para> 1599<para>stream type</para>
1523</entry> 1600</entry>
1524 </row></tbody></tgroup></informaltable> 1601 </row></tbody></tgroup></informaltable>
1525<para>ERRORS 1602&return-value-dvb;
1526</para>
1527<informaltable><tgroup cols="2"><tbody><row><entry
1528 align="char">
1529<para>EBADF</para>
1530</entry><entry
1531 align="char">
1532<para>fd is not a valid open file descriptor</para>
1533</entry>
1534 </row><row><entry
1535 align="char">
1536<para>EINVAL</para>
1537</entry><entry
1538 align="char">
1539<para>type is not a valid or supported stream type.</para>
1540</entry>
1541 </row></tbody></tgroup></informaltable>
1542 1603
1543</section><section 1604</section><section id="VIDEO_SET_FORMAT"
1544role="subsection"><title>VIDEO_SET_FORMAT</title> 1605role="subsection"><title>VIDEO_SET_FORMAT</title>
1545<para>DESCRIPTION 1606<para>DESCRIPTION
1546</para> 1607</para>
@@ -1583,17 +1644,9 @@ role="subsection"><title>VIDEO_SET_FORMAT</title>
1583<para>video format of TV as defined in section ??.</para> 1644<para>video format of TV as defined in section ??.</para>
1584</entry> 1645</entry>
1585 </row></tbody></tgroup></informaltable> 1646 </row></tbody></tgroup></informaltable>
1586<para>ERRORS 1647&return-value-dvb;
1587</para>
1588<informaltable><tgroup cols="2"><tbody><row><entry 1648<informaltable><tgroup cols="2"><tbody><row><entry
1589 align="char"> 1649 align="char">
1590<para>EBADF</para>
1591</entry><entry
1592 align="char">
1593<para>fd is not a valid open file descriptor</para>
1594</entry>
1595 </row><row><entry
1596 align="char">
1597<para>EINVAL</para> 1650<para>EINVAL</para>
1598</entry><entry 1651</entry><entry
1599 align="char"> 1652 align="char">
@@ -1601,7 +1654,7 @@ role="subsection"><title>VIDEO_SET_FORMAT</title>
1601</entry> 1654</entry>
1602 </row></tbody></tgroup></informaltable> 1655 </row></tbody></tgroup></informaltable>
1603 1656
1604</section><section 1657</section><section id="VIDEO_SET_SYSTEM"
1605role="subsection"><title>VIDEO_SET_SYSTEM</title> 1658role="subsection"><title>VIDEO_SET_SYSTEM</title>
1606<para>DESCRIPTION 1659<para>DESCRIPTION
1607</para> 1660</para>
@@ -1645,17 +1698,9 @@ role="subsection"><title>VIDEO_SET_SYSTEM</title>
1645<para>video system of TV output.</para> 1698<para>video system of TV output.</para>
1646</entry> 1699</entry>
1647 </row></tbody></tgroup></informaltable> 1700 </row></tbody></tgroup></informaltable>
1648<para>ERRORS 1701&return-value-dvb;
1649</para>
1650<informaltable><tgroup cols="2"><tbody><row><entry 1702<informaltable><tgroup cols="2"><tbody><row><entry
1651 align="char"> 1703 align="char">
1652<para>EBADF</para>
1653</entry><entry
1654 align="char">
1655<para>fd is not a valid open file descriptor</para>
1656</entry>
1657 </row><row><entry
1658 align="char">
1659<para>EINVAL</para> 1704<para>EINVAL</para>
1660</entry><entry 1705</entry><entry
1661 align="char"> 1706 align="char">
@@ -1663,7 +1708,7 @@ role="subsection"><title>VIDEO_SET_SYSTEM</title>
1663</entry> 1708</entry>
1664 </row></tbody></tgroup></informaltable> 1709 </row></tbody></tgroup></informaltable>
1665 1710
1666</section><section 1711</section><section id="VIDEO_SET_HIGHLIGHT"
1667role="subsection"><title>VIDEO_SET_HIGHLIGHT</title> 1712role="subsection"><title>VIDEO_SET_HIGHLIGHT</title>
1668<para>DESCRIPTION 1713<para>DESCRIPTION
1669</para> 1714</para>
@@ -1705,25 +1750,9 @@ role="subsection"><title>VIDEO_SET_HIGHLIGHT</title>
1705<para>SPU Highlight information according to section ??.</para> 1750<para>SPU Highlight information according to section ??.</para>
1706</entry> 1751</entry>
1707 </row></tbody></tgroup></informaltable> 1752 </row></tbody></tgroup></informaltable>
1708<para>ERRORS 1753&return-value-dvb;
1709</para>
1710<informaltable><tgroup cols="2"><tbody><row><entry
1711 align="char">
1712<para>EBADF</para>
1713</entry><entry
1714 align="char">
1715<para>fd is not a valid open file descriptor.</para>
1716</entry>
1717 </row><row><entry
1718 align="char">
1719<para>EINVAL</para>
1720</entry><entry
1721 align="char">
1722<para>input is not a valid highlight setting.</para>
1723</entry>
1724 </row></tbody></tgroup></informaltable>
1725 1754
1726</section><section 1755</section><section id="VIDEO_SET_SPU"
1727role="subsection"><title>VIDEO_SET_SPU</title> 1756role="subsection"><title>VIDEO_SET_SPU</title>
1728<para>DESCRIPTION 1757<para>DESCRIPTION
1729</para> 1758</para>
@@ -1766,17 +1795,9 @@ role="subsection"><title>VIDEO_SET_SPU</title>
1766 to section ??.</para> 1795 to section ??.</para>
1767</entry> 1796</entry>
1768 </row></tbody></tgroup></informaltable> 1797 </row></tbody></tgroup></informaltable>
1769<para>ERRORS 1798&return-value-dvb;
1770</para>
1771<informaltable><tgroup cols="2"><tbody><row><entry 1799<informaltable><tgroup cols="2"><tbody><row><entry
1772 align="char"> 1800 align="char">
1773<para>EBADF</para>
1774</entry><entry
1775 align="char">
1776<para>fd is not a valid open file descriptor</para>
1777</entry>
1778 </row><row><entry
1779 align="char">
1780<para>EINVAL</para> 1801<para>EINVAL</para>
1781</entry><entry 1802</entry><entry
1782 align="char"> 1803 align="char">
@@ -1785,7 +1806,7 @@ role="subsection"><title>VIDEO_SET_SPU</title>
1785</entry> 1806</entry>
1786 </row></tbody></tgroup></informaltable> 1807 </row></tbody></tgroup></informaltable>
1787 1808
1788</section><section 1809</section><section id="VIDEO_SET_SPU_PALETTE"
1789role="subsection"><title>VIDEO_SET_SPU_PALETTE</title> 1810role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
1790<para>DESCRIPTION 1811<para>DESCRIPTION
1791</para> 1812</para>
@@ -1827,17 +1848,9 @@ role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
1827<para>SPU palette according to section ??.</para> 1848<para>SPU palette according to section ??.</para>
1828</entry> 1849</entry>
1829 </row></tbody></tgroup></informaltable> 1850 </row></tbody></tgroup></informaltable>
1830<para>ERRORS 1851&return-value-dvb;
1831</para>
1832<informaltable><tgroup cols="2"><tbody><row><entry 1852<informaltable><tgroup cols="2"><tbody><row><entry
1833 align="char"> 1853 align="char">
1834<para>EBADF</para>
1835</entry><entry
1836 align="char">
1837<para>fd is not a valid open file descriptor</para>
1838</entry>
1839 </row><row><entry
1840 align="char">
1841<para>EINVAL</para> 1854<para>EINVAL</para>
1842</entry><entry 1855</entry><entry
1843 align="char"> 1856 align="char">
@@ -1845,7 +1858,7 @@ role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
1845</entry> 1858</entry>
1846 </row></tbody></tgroup></informaltable> 1859 </row></tbody></tgroup></informaltable>
1847 1860
1848</section><section 1861</section><section id="VIDEO_GET_NAVI"
1849role="subsection"><title>VIDEO_GET_NAVI</title> 1862role="subsection"><title>VIDEO_GET_NAVI</title>
1850<para>DESCRIPTION 1863<para>DESCRIPTION
1851</para> 1864</para>
@@ -1889,17 +1902,9 @@ role="subsection"><title>VIDEO_GET_NAVI</title>
1889 ??.</para> 1902 ??.</para>
1890</entry> 1903</entry>
1891 </row></tbody></tgroup></informaltable> 1904 </row></tbody></tgroup></informaltable>
1892<para>ERRORS 1905&return-value-dvb;
1893</para>
1894<informaltable><tgroup cols="2"><tbody><row><entry 1906<informaltable><tgroup cols="2"><tbody><row><entry
1895 align="char"> 1907 align="char">
1896<para>EBADF</para>
1897</entry><entry
1898 align="char">
1899<para>fd is not a valid open file descriptor</para>
1900</entry>
1901 </row><row><entry
1902 align="char">
1903<para>EFAULT</para> 1908<para>EFAULT</para>
1904</entry><entry 1909</entry><entry
1905 align="char"> 1910 align="char">
@@ -1907,7 +1912,7 @@ role="subsection"><title>VIDEO_GET_NAVI</title>
1907</entry> 1912</entry>
1908 </row></tbody></tgroup></informaltable> 1913 </row></tbody></tgroup></informaltable>
1909 1914
1910</section><section 1915</section><section id="VIDEO_SET_ATTRIBUTES"
1911role="subsection"><title>VIDEO_SET_ATTRIBUTES</title> 1916role="subsection"><title>VIDEO_SET_ATTRIBUTES</title>
1912<para>DESCRIPTION 1917<para>DESCRIPTION
1913</para> 1918</para>
@@ -1951,17 +1956,9 @@ role="subsection"><title>VIDEO_SET_ATTRIBUTES</title>
1951<para>video attributes according to section ??.</para> 1956<para>video attributes according to section ??.</para>
1952</entry> 1957</entry>
1953 </row></tbody></tgroup></informaltable> 1958 </row></tbody></tgroup></informaltable>
1954<para>ERRORS 1959&return-value-dvb;
1955</para>
1956<informaltable><tgroup cols="2"><tbody><row><entry 1960<informaltable><tgroup cols="2"><tbody><row><entry
1957 align="char"> 1961 align="char">
1958<para>EBADF</para>
1959</entry><entry
1960 align="char">
1961<para>fd is not a valid open file descriptor</para>
1962</entry>
1963 </row><row><entry
1964 align="char">
1965<para>EINVAL</para> 1962<para>EINVAL</para>
1966</entry><entry 1963</entry><entry
1967 align="char"> 1964 align="char">
diff --git a/Documentation/DocBook/media/dvbstb.png.b64 b/Documentation/DocBook/media/dvbstb.png.b64
new file mode 100644
index 00000000000..e8b52fde3d1
--- /dev/null
+++ b/Documentation/DocBook/media/dvbstb.png.b64
@@ -0,0 +1,398 @@
1iVBORw0KGgoAAAANSUhEUgAAAzMAAAGaCAYAAAA7Jx25AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBI
2WXMAAA3XAAANiQFmEOuiAAAgAElEQVR42uzdd1RU18I28GdgKFZUBE0saFA0KoqFFkEhKhbAQmxJ
3bIkNNEpMEUwsMZarJMZrw4KxRExQczUqil0jRBA1GAjGQqLYC4TemdnfH76cj3HodYDntxaLmTll
4zuw57Zmz9z4yIYQAkYZzcnJCSkoKGjZsyMIgIiIiquPS09PRoEEDyBhmqCaQyWRo06YN3nvvPRYG
5ERERUR137Ngx/Pnnn5CzKKgmMDAwwKpVqxhmiIiIiAj29vZ4//33ocWiICIiIiKimohhhoiIiIiI
6GGaIiIiIiIgYZoiIiIiIiBhmiIiIiIiIYYaIiIiIiIhhhoiIiIiIiGGGiIiIiIgYZoiIiIiIiBhm
7iIiIiIiIGGaIiIiIiIgYZoiIiIiIiGGGiIiIiIiIYYaIiIiIiIhhhoiIiIiIGGaIiIiIiIgYZoiI
8iIiIiBhmiIiIiIiIYYaIiIiIiIhhhoiIiIiIqFLIWQRElSMsLAy2trZo1KgR5HJualTxEhIS8P33
93+PDDz+sM5+5bdu2ePDgAZo2bcoVgCplm3J0dMS5c+fqzGf++uuvsWTJEm5TVClSU1ORk5ODBw8e
10oHXr1gwzRDVJbm4uAGDRokUwMDBggVCFmzlzJrKysurUZ3727BksLCzg4eHBFYAq3IIFC5CQkFCn
11PnNGRgYAYNWqVVwBqMJFRUVh48aNUCqVlfYeDDNElWzGjBkMM1QpNm7cWOc+c8uWLTFjxgzMmDGD
12KwBVuLt37yIkJKTOfW5nZ2duU1SpYaYysc0MERERERHVSAwzRERERETEMENERERERMQwQ0RERERE
13xDBDREREREQMM0RERERERAwzREREREREDDNERERERMQwQ0RERERExDBDRERERETEMENERERERMQw
14Q0REREREDDNEREREREQMM0RERERERAwzRERERETEMENERERERMQwQ0RERERExDBDREREREQMM0RE
15RERERAwzREREREREDDNEREREREQMM0RERERExDBDRERERETEMENERERERMQwQ0REREREDDNERERE
16REQMM0RERERERAwzRERERETEMENERERERMQwQ0REREREVGnkLAKimunBgwdISkoq8/SGhoZ47bXX
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
129/CmZKB8hBPbv3w8AhVYry09XVxdeXl68ISARERERwwxR9ZLJZNi+fTvWr18PLS2tYquO6ejoYMaM
130GSw4IiIiIoYZIs0wZ84cnDlzBo0aNSr0hoe6urr46KOPauUNMYmIiIgYZohqMEdHR4SGhkJbW7vA
131O2wrlUp4enqyoIiIiIgYZog0z6pVq9CsWTO4uLhAW1tbel1XVxeTJ0/Ga6+9xkIiIiIiYpgh0izr
1321q1DQEAA/ve//+Hw4cNYvnw5tLS0IJPJkJ2dDS8vLxYSEREREcMMkWa5cOECPvvsM/j6+sLGxgYy
133mQze3t4IDAyEEAI2Njbo2LEjC4qIiIioGvE+M0SvuH//PsaOHYtp06Zh6tSpKsOGDh2KW7duISsr
134iwVFRERExDBDpDnS09Ph5uYGMzMzrFu3rsBxzMzMWFBEREREDDNEmsXDwwNPnz7F1atXeSNMIiIi
135IoYZopohr8H/r7/+ipYtW7JAiIiIiBhmiDRfXoP/LVu2wMbGhgVCREREVAOwNzOq84pq8E9ERERE
136DDNEGqkkDf6JiIiISDOxmhnVaWzwT0RERFQLwsz333+P77//Hg0aNGCpUIVTKBTIycnB//73Pxgb
137G2vEMrHBPxEREVEtCTMxMTEIDQ2Fl5cXS4UqXFRUFM6fP4/MzEyNWB42+CciIiKqRWEGAJydnbFq
1381SqWClVKmDl+/LhGLAsb/BMRERHVDuwAgOoUNvgnIiIiqj3YAQDVKWzwT0RERMQwQ1TjsME/ERER
139EcMMUY3DBv9EREREtQ/bzFCtxwb/RERERAwzRDUOG/wTERER1V6sZka1Ghv8ExERETHMENU4bPBP
140RERExDBDVOOwwT8RERFR7cc2M1TrsME/EREREcMMUY3DBv9EREREdQermVGtwgb/RERERAwzRDWO
141pjb4X716NQwMDPgFUYWLioqqc5/54cOHWL16NZKTk7kCUKXsr83Nzevc5z527BhWr17NFaAYycnJ
142uH//Ptq1a4eGDRuyQDTkOMUwQ7WCJjb4b9iwIUxMTHDixAloabFGJ1W8Nm3awMjIqE59ZkdHR9y/
143fx8HDhzgCkAVrl27dujZs2ed+sytWrVCmzZtuE29QqlUIi0tTeUvJycHMpkM+vr66NKlCwupBLKz
144s2FqalqptWUYZqjG09QG/xYWFrh37x6/IKIKdObMGRYCUQX66KOP8NFHH9XpMlAoFIiOjkZ4eDgu
145X76My5cv48aNGxBCoHPnznBycoKVlRVsbGwQFRWFhQsX4urVq1x5NATDDNVobPBPREREpfHo0SMp
146tFy+fBnXrhOJlUQAACAASURBVF1DamoqWrZsCWtra4wfPx42Njbo06cPGjdurDLtjRs3WIAMM0QV
147hw3+iYiIqDCpqam4evUqwsPDERYWhvDwcDx69Aj169dH7969YWVlhdmzZ8Pa2hpt27ZlgTHMEFUd
148TW3wT0RERFWvuOpi1tbWWLhwIWxsbNCtWzfI5TwNZpghqiaa2OCfiIiIqk55qosRwwxRtdHUBv9E
149RERUOVhdjBhmqFZgg38iIqLajdXFiGGGai02+CciIqpdWF2MGGaoTjhx4gT27dvHBv9EREQ1FKuL
150EcMM1Um5ubn48ccfsXXrVjb4JyIiqgFYXYwYZojwssF/eno63n77bTb4JyIi0lCsLkYMM0SvyGvw
151r6WlhUmTJrFAiIiINACrixHDDFEJeHh44NmzZ2jQoAEvPxMREVUDVhcjhhmiMli3bh0CAgLw66+/
152YsiQISwQIiKiKlCS6mLW1tawtLRkdTFimCEqyIULF/DZZ59hy5YtbPBPRERUSVhdjBhmiCrY/fv3
153MXbsWEybNo0N/omIiCoIq4sRw0wVCAoKgomJCbp06cJvpw7Ka/BvZmaGdevWsUCIiIjKiNXFiGGm
154iimVSsydOxc2NjbYs2cPv506KK/B/5UrV6Crq8sCISIiKgFWFyOGGQ1w8uRJxMTEIDY2FqtXr8br
155r7/Ob6gOyd/gv2XLliwQIiKiAigUCty4cUPlqgurixHDjAbYsGEDACAnJwe+vr5Yvnx5lb7/qVOn
1564OTkxLWiGrDBPxERUcFYXYyoBoSZO3fuICgoCNra2lAoFNiyZQu+/PJL1KtXr0re/8CBA9i7dy/D
157TDVgg38iIqKXWF2MqIaGGV9fX1hZWeHNN9/E7t27ER8fj71792LatGlVEqSmT58OBwcHrhFVjA3+
158iYiormJ1Mc329OlThISEYPTo0UWOFxMTg3/++Yc/iNflMJOamoqdO3di/fr1UpgBgP/+97+YOnUq
159ZDJZieclhFAbX6lUQktLq8Dxnz17BmdnZyQlJZVqmYUQEEIUOt/yLFNFTfvqfACUqiyrAhv8ExFR
160XcHqYjXLzZs3MW7cOMTFxaFp06aFjrdnzx4cPXqUYaaaaGnCQvj7+0Mul2Ps2LGwtLSEtbU1ACA6
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
193S8/DwsLYXqauhpkrV64gKCgIY8aMUbtnS2Hee+896fGBAwfw999/F7jDK0reSXxBISCvy+fbt29L
194w7Ozs/H48WMAgKenpzTutGnTsH79emRlZUmv3blzBy4uLsjOzoabm1uFLFN5ps3rpezOnTv4888/
195pdczMzOxe/dulV8VyhuqyqJbt2745JNPYGBgAF1dXcTExKBbt2746quvpGUiIiLNdP36ddy5c6dS
1965v3o0SMcPHgQXl5ecHBwQJMmTdC9e3csWrQIL168wPjx43Hy5EkkJCQgOjoaO3bsgLu7OywsLNju
197hSpV3v1m0tPTAbysYtajRw+2l6lrYSYzMxOzZs0CgFLtdPLfUFOhUGDevHlq3QrnDzjPnz9XGSaE
198kE7qk5KSkJycrDLc1tZWmsf8+fNx8OBBvPPOO/j3338BAOPGjcO4ceOkEOHp6YnmzZujR48eMDU1
199hZmZGZKSkuDv768S0MqzTOWZNu/qkBACgwYNwsKFCzF79mz06NEDXbt2lcZbtWoVlixZgh9++KHK
200V7wlS5ZAX18fPXr0wN27dzFr1ixs3rwZXbp0waFDh7hlEhFpmN9//x0jR45Er169EBAQUO75sboY
2011SR57WZu3rwphRlWMdMQ4v94e3sLZ2dnUVn2798vOnfuLAAIAEIul4tRo0aJ48ePFzrNX3/9JSZP
202nizatWsnTZf317t3b/HLL7+I0NBQMX78eJVhXbp0EV9++aUQQoiTJ08KJycnleE9e/YU27Ztk94n
203NjZWtG7dWhr++uuvi/Pnz6ssS05OjliyZIlo1KiRyrwMDAzEwoULRUZGhjRueZapIj5PUlKScHBw
204UBnH2dlZxMTECIVCIczNzaXXR40aJdLT00Vli4yMFABEbGys9NquXbuEvr6+mDx5sqhfv744dOiQ
205mDt3rpDL5WLIkCHi1q1b0rgGBgZi7969goiIqtaVK1eEq6urkMlkwsnJSYSEhJR6Hrm5uSIyMlL4
206+fmJadOmCXNzc6GtrS20tLREly5dxAcffCA2b94sIiIiRE5ODgudNFK/fv3EsGHDRJs2bYSenp44
207cuQIC6UaBQYGCgMDAyET/1fHaMGCBYiKikJgYGCdDHVpaWkICwuDnp4eLC0tC2xvArysmnX9+nUk
208JCTAyMgI3bt3L3Tcag6piIyMxJMnT/Dmm2/CxMREGpaSkoLQ0FA0b94cPXv2LHF1v/KIiopC9+7d
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
273UrAHIMLCwtTGuXLligAg/P39C5xHSdftsm47Qry8fUGfPn3EqFGjhFKpVBm2f/9+6X29vb1r5bZU
274lWGG1cyIWOWsSD179sS1a9fUuq3cs2cPOnfujG3btpWqHr2bmxtsbW1V/vr37w93d3fcu3evwGni
2754uJUnjds2JArHdUYGzduhIuLC9q1aye9pqenh5kzZ6pU4yyOXC4v0/C//voLK1euhKGhYYG9Or32
2762msYMGCA2usNGjSAnp4e7O3ti3zfoKAg7N+/H02bNsXUqVPVhjds2BA+Pj4AgFu3buE///kPVwoq
277s9atW2PcuHHS8++++05tnK1bt6Jp06Z45513CpxHSdftsm47ALBz505cvXoVc+bMUesEZ/jw4dKt
278DrZu3Yrc3FxuS+XAMENUSYHm6tWrteaztW3bFmfOnMG+ffvwxhtvSK+npqZi5syZRd4X5lU3b95E
279RkaG9Jeeno6kpCRcvXoVffv2LdE8imr0SaRJYmNjcfjwYZVG/3lmzpwpddO8a9cuJCQkVMoyrFu3
280DgqFAgMHDoSurm6B4zRq1KjQ6V+9h9Or8u6XY2VlVej8hw0bBmNjY7WTN6Ky+OSTT6THP//8M2Jj
281Y6XnycnJ+OmnnzBx4kSVe6OVZd0uz7bj5+cH4GX30Bs3blT58/PzQ7NmzQAACQkJuHHjBrclhhki
282zQs0RfX+VVM/29ixY3Hjxg0sXbpU5VfgPXv2YPLkySW6QqOnpwd9fX3pr169emjcuDF69+6NzZs3
283FzhN06ZNVZ6/eqWGSFNt2bIFb7zxhkpnGnlatWoFNzc3AC9v6Lp9+/YKf38hhNRIunPnzhU+f6VS
284iQsXLgAAmjdvXuh42tra6N+/P4CXXVJHR0dz5aAy69WrFxwcHKR1MP+VzZI0/K/sbSc5ORnXrl2D
285trY2njx5gpiYGLW/MWPGwNPTE56entDS0uK2VA5ybhJElRNoHj9+XKKeTmoaPT09LF68GEOGDMGI
286ESPw9OlTAMBPP/2EUaNGYcyYMWWed7du3dCqVSu115s0aQJjY2M8f/4cABATE8MVjTReRkYG/Pz8
287oFAoCr1LeHx8vPR4w4YNmDdvXrHVyUrjxYsX0jZa1NWXsoqPj5duXljcL8SdOnWSHj98+BA9evTg
288SkJl9umnn0on/35+fliyZAkaNWqErVu3wtbWFt26dau2befu3btSN8xr1qyRrsAW937clhhmiDQq
2890MyZM6dGh5nU1FQ0aNCg0BteWllZITg4GLa2ttKVEl9f33KFGZlMht9++63AYXZ2djh48CAAIDQ0
290lCsZDE9QJwAAGAdJREFUabyAgACkpqbCx8enyLuEr1ixAk+fPsWDBw9w6NChcm1Dr8p/FTMzM7PC
291P2P+Kp95J36FMTQ0lB6X5OSOqCjDhg1Dp06dcOvWLaSkpGD79u2wt7fH9evXK6Qb/vJsO3mhRAiB
292+/fvl+gGz9yWGGaINDLQ1GTu7u6YNWsW3nrrrULH6dChA3x8fPDhhx8CAP74448KXYaHDx/CyMgI
293enp6GDt2rBRm7ty5g6ioKJibm3NFI40khMCGDRswZswYzJ07t8hx4+Pj8dVXXwF4eRPNigwz+W8W
294+Pfff1f452zevDl0dHSQk5OD6OhoCCEK3fflv/Ff/rZ3RGWhpaWFTz75ROpIY926dYiMjETjxo0r
295ZBsqz7ZTv3596XFISEiJwgy3pXKsC9wciKiwoLJ8+fJix8t/o8yS3GW5pJKSkmBpaSldbndzc1M5
296IBTUgw2Rprh48SIiIiJKVG9/5syZUkPkS5cuITw8vMwB6lWtW7eW5n3hwoVS9TxYEnK5XLoBaFxc
297nNSQuSBPnjwB8LKtUMeOHbmSULlNnDhRal9y//597N69GxMmTECDBg3KPe/ybDumpqZSEPHz8yty
2982ryOdLgtMcwQUSWEmaCgoCLvsAy8bBeQx8bGpsQnWcVZtGgROnfuLB2UdHR0sGnTJmn4rl27cPr0
2996RLPLzExEa6urnj27Bm/XKp0q1evhpmZWbFdvwJAy5YtMXr0aOn52rVrCxwvrzpJenp6gdtYSkqK
3002ut6enpSY+G7d+8iKCioyG20oG21uO33gw8+kB4HBAQUOl5eSHN3d6/xV65JM9SrVw+zZs1Sea00
301Df+LWrfLs+00atRICibBwcHYs2dPgdPm5uZiypQpcHJy4rbEMENElRFm8nauRf1ClL9dUP7uMvNk
302ZmaqXBIv7sQor3rOhg0b1HqAGjp0KNasWSM9d3NzQ2BgYLGfJTQ0FJaWlujXrx9atGjBL5cq1ZUr
303VxAUFIQxY8aU+ETjvffeU9mmCqrWkndl8vLly7h9+7b0ukKhwIoVK6SQk79TAQCYN2+e9NjDwwMP
304Hz5UC/ohISEAXvbClJqaqjI8f7frBTVMnjRpEiwtLQEAmzdvRmJioto4t2/fRnBwMMzMzFSWh6i8
305Zs2aJdUK6NOnDywsLEo8bXHrdnm2HU9PT+nxtGnTsH79emRlZUmv3blzBy4uLsjOzpZ6NeS2xDBD
306RJUQZhISEmBnZ4effvpJpYGiUqnEjh07pBt4LV++vMBfoV8NGzt27EBYWBhiYmJw79493L17Fzdv
3073sTFixexadMm2NvbS20MBg4cqDa/Tz75BPv27UOzZs2QmpoKV1dXuLm54eTJkyq/WKempiIoKAjv
308vPMOXFxcsGzZMnz++ef8YqlSZWZmSr8Ul6ZXsvw31FQoFJg3b57KjwB5PywAQHZ2Nuzs7ODl5QVv
309b2+Ym5tDCCF1VRsWFob3338fx44dA/CyobSHhweAl1VxevXqhRUrViAwMBDbtm2Do6MjDAwMpBO6
3107t27q9zQM/+PGbdu3VJbdrlcjkOHDqFTp06Ij4/HhAkTpAbQefuQiRMnok2bNggMDKyQKkBEeVq0
311aIGJEycCAGbMmFGqaYtbt8uz7YwbN066uWdOTg48PT3RvHlz9OjRA6ampjAzM0NSUhL8/f2lHz24
312LZWRIKoBDAwMxN69e2vUMgcHBwsAIjExsUaWuVKpFAYGBmLJkiXCy8tLmJmZiRYtWoghQ4YIV1dX
3130bZtWwFAmJqaip9//lltej8/PzFgwAChra0tAJT6z8DAQOTm5ha6fHFxcWLJkiXScgAQMplMGBoa
314imbNmgkAok2bNmLRokUiLi6uVm4X5ubmwtfXt07tC9q2bauxn3n//v2ic+fO0vool8vFqFGjxPHj
315xwud5q+//hKTJ08W7dq1U9sGevfuLX755ReVbXLp0qVCLpdL4zRr1kxs27ZNCCGEs7OzaN++vfD2
3169hahoaEq249CoRDffPONaNq0qcp7mJiYiHPnzon33/9/7d1/dNV1/cDxF9vdxgZzTn4VET/q2DIC
317A9EgEaxOBxI9kOmRUA6dOqEQET+UMDrQOXKC6mQHS4qAlHM8mgdPHTMMzBN4GHFU1CUJyVkonFJ+
318jDMYsrGN7dMfftnXxa8pG9y7PR5/7W73fnbv+3Mv7LnPfX12e9KtW7dk2rRpyebNm5OGhoZk06ZN
319yYwZM5Lu3bs3e41NnDgxeeyxx055LEeOHElmz56dFBYWJr17906mTp2afOMb30j69euX3HXXXRnx
320Opw/f34ycuTIDvWamj9/fjJu3LiMfgw7duxICgsLk6qqqhZd//08tz/Ia+ek+vr6ZNGiRUlhYeEp
321/7/94Ac/SGpqak57/9rDa+mkV199NYmIZM+ePa2+7T/96U9JUVFR0ilp7WlAaAOXXnppLF++vNlb
322MdJdaWlpXHfddXH48OGm39xkmqeffjpuuOGGk7/4iF27dkVZWVkcOnQo8vPzY9CgQTF06NCznnb2
323AvxCJnbt2hX/+Mc/oqKiIhobG6Nnz54xcODAKCkpadfvJx48eHBMmzat6TeHHUG/fv1i/vz5Heox
324/6+DBw9GWVlZ5Ofnx7Bhw5r+yvnu3bujf//+Z3091tbWRllZWVRUVETPnj1jyJAhkUqlory8PPr1
32563fOv4jeErW1tfH3v/89Kioqori4OK688spmZ3dKZ/fee2+UlpbG5s2bO8zz6d57743t27e36C27
3266ezll1+OoUOHttn2z+e1U1NTE2VlZVFZWRk9evSIwYMHt+iEOZn8Wjpp+/btMXjw4NizZ0/07du3
327Vbe9bt26uP32252aGTizkyET8e6ppktKSpr9sa50kK73C9pKjx49Tpkni2jZKVrz8vKaBpPf6+Tb
328SltDXl5eXHPNNXYUF1Rbhsz5vnby8/ObnfnTa6l1mZkBAADEDAAAgJgBAAAQMwAAgJgBAAAQMwAA
329AGIGAAAQMwAAAGIGAABAzAAAAIgZAABAzAAAAIgZAAAAMQMAAIgZAAAAMQMAACBmAAAAMQMAACBm
330AAAAxAwAAICYAQAAxAwAAICYAQAAEDMAAICYAQAAEDMAAABiBgAAEDMAAABiBgAAQMwAAACIGQAA
331QMwAAACIGQAAADEDAACIGQAAgDSTsgTQttauXRtFRUUWgla3ffv2DveYKyoqYu3atdG9e/cO85gb
332Ghri+PHj0aVLF096/163iXXr1sXatWs9AVqguro68vPzo1OnThYjTf6fEjPQVi+u1Lsvr9mzZ0dO
333To4FoU3k5eV1qMdbVFQUGzdujLKysg7zmOvq6qK6ujry8vKic+fOfohqQ5WVlTF69OgO9Zjz8/Mj
334IuLOO+/0BDiH2traqKmpiYKCgsjNzbUgLXDkyJGIiMjKars3g4kZaCPDhw+PJEksBLSit956q8M9
3355rq6uli1alUsXbo0qqqqYubMmTFr1qwoLi72hOC8LVy4MBYuXGghzmL9+vUxd+7c2Lt3b9x3330x
336Z86cpgjk4jMzAwBpLDc3N6ZPnx7l5eXxox/9KB566KEYMGBALFq0KCorKy0QtJHy8vIYP358jBs3
337LoYPHx67du2KBQsWCBkxAwCIGkhPhw8fjrvvvjsGDhwYVVVVsW3btli9enV8+MMftjhiBgAQNZB+
338Tpw4EcuXL4/LL7881q5dG2vWrImNGzfGkCFDLI6YAQBEDaSn9evXx5VXXhnf+973YtasWfHPf/4z
339Jk6caGHEDAAgaiA9mYsRMwCAqIGMYi5GzAAAogYyirkYMQMAiBrIOOZixAwAIGogo5iLETMAQDuN
340moULF4oa2iVzMWIGAGjnUfPwww+LGtoVczFiBgAQNZBxzMWIGQBA1IgaMkp5eXlMmDDBXIyYAQBE
341jaghM7x3LubIkSPmYsQMACBqRA3pzVwMYgYAEDVkHHMxiBkAQNSQUczFIGYAAFFDRjEXg5gBAFo9
342apYsWSJqaDPmYhAzAECbRc20adNEDW3CXAwt1SlJksQykPZP1E6dYvDgwTFp0iSLAZCGGhoa4sUX
343X4yNGzdGbW1tXHvttTFy5EjzDLwvhw4dinXr1sXOnTvjqquuijFjxkRhYaGF4RTr1q2LzZs3ixky
344wzXXXBNVVVXRtWtXiwGQxpIkiYqKiti3b180NDREz549o1evXpGdnW1xOGsMv/3223HgwIHo2rVr
3459OnTJwoKCiwMZ1RdXR1du3YVMwBA66urq4vVq1fHkiVLoqqqKmbOnBmzZ8+O4uJii0OTEydOxG9+
34685tYtGhRFBQUxI9//GNvJ+N9ETMAgKjhglu/fn3MnTs39u7dG/Pnz485c+Z4WyJiBgAQNaSv8vLy
347uPvuu+Opp56Kr3/967F48WKnWeYDczYzAKDNOfsZ/l4MbcGRGQDggnOkpuMwF4OYAQBEDRnHXAxi
348BgAQNWQUczFcKGZmAICLzkxN+2AuhgvNkRkAIO04UpNZzMUgZgAARE3GMReDmAEAEDUZxVwM6cDM
349DACQ9szUpA9zMaQTR2YAgIzjSM2FZy4GMQMAIGoyjrkYxAwAgKjJKOZiSHdmZgCAjGempnWZiyFT
350ODIDALQ7jtR8MP87F7N06dL42te+ZmEQMwAAoiZ9mYtBzAAAiJqMYi6GTGZmBgBo98zUnMpcDO2B
351IzMAQIfTHo/UvPnmm/Hmm2/G9ddff9brmYtBzAAAdPCoOXbsWDz77LMxfvz4i/44du3aFSUlJU2P
352KScn57TXMxdDe+NtZgBAh3U+bz/75S9/GRMmTIilS5de1Mewc+fOuPbaayM7OzuysrLigQceOOU6
3535eXlMWHChBg3blwMHz48du3aFQsWLBAyZDxHZgAA/k9Lj9QcO3YsPvrRj0ZlZWVkZ2fHlClTYsWK
354FZFKpS7o/S0rK4svfOELcfTo0Thx4kRERHTp0iXeeOON6NGjRxw+fDgWL14cv/jFL+Jzn/tc3H//
355/TFkyBA7GjEDANBRo+anP/1pLFiwIOrr6yMiIicnJ0aOHBl/+MMfoqio6ILcx5deeik+//nPR3V1
356dTQ0NDR9Pjc3NyZNmhRXX321uRjEDACAqPn/qLnzzjtj0KBBp7wNLTc3NwYMGBDPPPNM9O3bt03v
35715YtW2LMmDFx/PjxZiHzXgUFBfH973/fXAxiBgBA1LwbNQcPHoz6+vrTRkROTk5ccsklsWHDhrjq
358qqva5L5s2rQpvvzlL0ddXV00Njae9jpZWVkxZMiQ2LZtm52HmAEAIKKysjL69OkT1dXVZ7xOdnZ2
359pFKpePzxx1v9TGcbNmyI8ePHR319/RlD5r1B87vf/S5uvfVWO452y9nMAABaaNWqVU1zMmfS0NAQ
360dXV1cfPNN8eyZcta7Xs/9dRTceONN571iMx7JUkS3/3ud+P48eN2HGIGAKAjO3bsWCxZsuScMXMy
361JBobG2POnDnx7W9/+4xzLS31xBNPxM033xwnTpyIlr6pJkmSePvtty/6qaNBzAAAXGTLli2Lo0eP
362vq/bNDY2xsqVK+Omm26Kd9555wN930ceeSRuu+229xVEeXl50alTp4iIeO2118JUAe2VmRkAgHOo
363qamJgoKCiHj3rGV1dXXv6/a5ubnxiU98IjZs2BC9e/du8e1Wr14dU6dObdF8TCqVirq6uhgwYEBM
364mDAhxo4dG6NGjYrOnTvbgYgZAICObN++fbF169bYunVrPPfcc1FWVhZ1dXWRl5fXooH8nJycKC4u
365jmeffTYGDRp0zu/34IMPxne+850zHlXJy8uLurq6yM3NjS9+8Ytx0003xdixY6N///52FmIGAIAz
366q6+vj5dffjmef/75+Nvf/habNm2K/fv3RyqViuzs7KitrT3lNllZWZGXlxe///3vY+zYsWfc9s9+
3679rOYN29es0By9AXEDABAm/nPf/4TL7zwQmzZsiU2bdoUr776atTX10fnzp2jtra22VGWX/3qV3HX
368XXedso377rsvFi5cGBHvnua5sbHR0RcQMwAAF1ZdXV288sorsXXr1ti8eXOUlpbGgQMHmr7+pS99
369KdavXx9ZWe+ek2natGnx61//OiIi+vfvH1/5ylccfQExAwBcKPv27Ys//vGPFuIMDh8+HP/617/i
3706aefjoaGhujbt2/ccccdsX79+vj3v/8dH/rQh2L06NHRrVs3i3UWI0eOjE996lMWQsyIGQCg9ZSW
371lsZ1110XvXr1ii5duliQczj5N2mysrKaTqfM2e3evTuWL18e06ZNsxgdXMoSAABt4fXXX4+ioiIL
372QasbPHiwRSAi/NFMAABAzAAAAIgZAAAAMQMAAIgZAAAAMQMAACBmAAAAMQMAACBmAAAAxAwAAICY
373AQAAxAwAAICYAQAAEDMAAICYAQAAEDMAAABiBgAAEDMAAABiBgAAQMwAAACIGQAAQMwAAACIGQAA
374ADEDAACIGQAAADEDAAAgZgAAADEDAAAgZgAAAMQMAACAmAEAANqBlCUAADh/VVVVsXfv3vP7wSyV
375ik9+8pOxf//+OHjw4BmvV1xcHB/5yEdO+XySJPHaa6+d9jYDBgyILl262FGIGQAAmvvLX/4St9xy
376y3lto2fPnrF///7YvXt3rFy5Mh5++OFIkqTp6yUlJTFx4sQYNWrUGWPmz3/+c2zZsiWefPLJiIgo
377KiqK6dOnx4wZM8QMYgYAgFPV1NRERETv3r1jwYIF8dnPfjYuu+yySKVSUVpaGpMmTYqIiI997GPx
3783HPPRZIkcfz48XjrrbfiySefjGXLljVtY8SIETFixIi44oorYt68eU3f44c//GFMnDjxjPchKysr
3797rnnnrjnnnti4MCBsWPHjnj88cdjzJgxdhBiBgCA06uuro6cnJz461//GiUlJc2+1qNHj6aPc3Jy
380ok+fPk2XL7/88hg9enRceumlsXjx4ma3mz17djz00EOxc+fOiIgoLS09a8yclCRJVFRUxMiRI4UM
3817ZoTAAAAtIKampoYP378KSHTUjNmzIjGxsZoaGho+lwqlYqFCxc2XX7kkUfi2LFj59zWCy+8EAcO
382HIgZM2bYMYgZAADOHTPjxo37wLe/7LLLYtiwYXH8+PFmn7/llluiX79+ERFx5MiR+O1vf3vOba1e
383vTq6d+8eEyZMsGMQMwAAnN28efNiypQp57WNLVu2REFBQbPPpVKpmDVrVtPln//8582O3vyvo0eP
384xqOPPhpTpkyJvLw8OwYxAwDAOX6oysqKTp06ndc2srOzT7uNb37zm1FUVBQREW+88UbTmcpO59FH
385H41jx47Ft771LTsFMQMAwMVVWFgYU6dObbp8//33n/Z6SZLEihUrYtSoUR94dgfEDAAArWrmzJmR
386Sr17ItotW7bE888/f8p1XnrppXjllVeahQ+IGQAALqo+ffrEbbfd1nT5dEdnVqxYEcXFxfHVr37V
387giFmAABIH3PmzGn6+Iknnog9e/Y0Xa6qqorHHnssJk+eHJ07d7ZYiBkAANLH0KFD4/rrr4+IiMbG
388xnjggQeavmbwHzEDAEBamzt3btPHK1eujKqqqqbB/xEjRsSnP/1pi4SYAQAg/dxwww1NZyo7evRo
389rFq1KrZt2xZlZWUG/xEzAACk8Q9vWVnNZmeWLVsWDz74YFxyySVx6623WiDEDAAA6Wvy5MnRvXv3
390iIjYu3dvrFmzJu64447o0qWLxUHMAADQehobG1t1e/n5+TF9+vRmnzP4j5gBAKDVvfPOO00f19TU
391tMo2p0+fHnl5eRERMWzYsPjMZz5joREzAAC0rmeeeabp471798aOHTvOe5u9evWKyZMnR0QY/EfM
392AADQeg4dOhRTpkyJIUOGxIoVK5p97eqrr44bb7wxfvKTn5zX95gzZ04UFhbGxIkTLTgdUsoSAAC0
393vm7dusWaNWva9HtcccUVsWnTpigsLLTgdEiOzAAAZLChQ4daBMQMAACAmAEAABAzAAAAYgYAABAz
394AAAAYgYAAEDMAAAAYgYAAEDMAAAAiBkAAEDMAAAAiBkAAAAxAwAAIGYAAAAxAwAAIGYAAADEDAAA
395IGYAAADEDAAAgJgBAADEjCUAAADEDAAAgJgBAAAQMwAAgJgBAAAQMwAAAGIGAAAQMwAAAGIGAABA
396zAAAAIgZAABAzAAAAIgZAAAAMQMAAIgZAACA9JCyBABAW+jVq1cUFBRYCFpdZWWlRSAiIjolSZJY
397BgCgtVRUVMTGjRstBG1q6NCh8fGPf9xCiBkxAwAAZB4zMwAAQEZKvb79xaYLJYOutiIAAEBGcGQG
398AADISP8FpxZnWS0U37cAAAAASUVORK5CYII=
diff --git a/Documentation/DocBook/media/fieldseq_bt.gif.b64 b/Documentation/DocBook/media/fieldseq_bt.gif.b64
new file mode 100644
index 00000000000..b5b557b8815
--- /dev/null
+++ b/Documentation/DocBook/media/fieldseq_bt.gif.b64
@@ -0,0 +1,447 @@
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
447l3O5NwEBADs=
diff --git a/Documentation/DocBook/media/fieldseq_tb.gif.b64 b/Documentation/DocBook/media/fieldseq_tb.gif.b64
new file mode 100644
index 00000000000..7b4c1766b40
--- /dev/null
+++ b/Documentation/DocBook/media/fieldseq_tb.gif.b64
@@ -0,0 +1,445 @@
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
33piYFuOEUjESzGZUPTfWnQEmOVdYqIAVlxcDMKewvdtKf6aBFtr4s6IWq8p+dBog0xrRFVCx0YbWG
34EyFslU1aLfRKyaa1GHDNMUW3QwtmDOSXa3ltiwF8Q1tw9p12qS+FiCxJoTyXyOkBpz5OkAwZk1Uf
35smgobEI5UmUeMaD8eEUoSFjQlI4SIadlsnEAEsMlP4kToJDliaRkEHWIEkopSeCPSPwfYvIAoLNI
36JpUEwcz7mgIxBqmnQjDsUi89N8lniRIWwIQklKSJyyRxUJokygmhbMm/I6otbH3RijFp5J4JFkR7
37BJFU3rJXwUa6UySgemddxHPEhZBLnij+AVRDVEm097XmBtTBp0AHOrx7ukUeZXOIQQk6klFYqCBj
38QgISbsBBuOiToRjNaHgWCieOarQjhVnIRGsCzriE5aMoTalKV8rSlrr0pTCNqUxnStOa2vSmOM2p
39TnfK05769KdADapQh0rUohr1qEhNqlKXipARSOKpUI2qVKdK1apa9apYzapWocolgxwiGGANq1jH
40StaymvWsaE2rWtca1oTE4BRwjatc50rXutr1rnjNq173CtcYJEQYSwisYAdL2MIa9rCITaxiF8vY
41wAojIVuNrGQnS9mtAgMh0GCrZjfL2c6y9RAOYUQnRkva0pr2tKhNrWpXy9rWuna09Hj+6ALIQdva
422va2uM2tbnfL29769re0bUFCnsCE4hr3uMhNrnKXy9zmOve50C3uExKSi1hY97rYza52t8vd7nr3
43u+ANr3VzkRBIvPa86E2vel17icesArjwja985/vbBYR2vfjNr35ZG1uEzJa+AA6wgHkrXIQQN7oI
44TrCCF/zc6SKkuuKNsIQnTGHwkhch5t2vhjeM3/YeRB7vHbCIRwxg+zZEtBxOsYr5K1sSu/jFvi3w
45QQ7M4Brb+MbMdfBBIFzhHvv4x9298EEyvOIiG7kTHjYIiGHM5CbX1sQMQfGRp8zh/h7kv07OMoll
46bBAa4/jLYF6wjg3CYyCb+cwUFrL+QYhM5TbnN8lFCbGW5yxgKC/EDlPIs573zOc++/nPgA60oAdN
47aD3zASF+cIOiF83oRjv60ZCOtKQnTelKK9oLCfFGNzbN6U57+tOgDrWoR03qUpt6095ISBSawepW
48u/rVsI61rGdN61rb+tasjkJCzFDoXvv618Am9B4QwgdLG/vYyE62pf1wXzc7e71WNgiW6Uxt+XK5
49IF4Os7a3vdwxF6TMaA63uLmr5oKw+dnobi2cPyTnaru7vs1Ot7xXG+2CTPvd+NbttQmSbW77m9ve
50Jgi4x03wcZebIOeet8JJu27ftDvfELetnRUi5YVbvBP1Jsi9Ix7xfQ+k3/8O+Zf+Az6QgRf85GY+
51+EASfnF5N5xoD+c4xCeekIq3fN4ZH8jGZY5vjwsE5CIPOoNJLhCTo/zoFVa5QFh+82e/fDgx5/m7
52aY4QHgzg6ljPuta3zvWue/3rYA+72K/uDAYgpB5eSLva1872trv97XCPu9znTve0JyIh5uiC3vfO
539777/e+AD7zgB0/4wuvdHAlRBRAWz/jGO/7xkI+85CdP+cpbfvGqSEgrxs75znv+82LHAEIYMIG6
54m/70qE893esR76bLO+cC2bnUq+1zWABd6LiPLtFhYXSk+168SocF013f5qcvefYzbz3xnw17WMge
55+XOu/e1zT/0cU/f32E9zeZf+73L3Qj/fVD+Izbnf5uY///tOln7116/762f//eEN/vDJX2TjRx39
56WQ6/QcpBj/77//8AGIACOIAEWIAGeIAI2H+lIAAIYQJp8IAQGIESOIEUWIEWeIEYmIEa+ICUkBDZ
578AUgGIIiOIIkWIImeIIomIIquIIgmA0JoQZtEIMyOIM0WIM2eIM4mIM6uIM8GINqkBB9kIBCOIRE
58WIQImAwIIQDvsIFM2IRO+IQaaAIOUQlSUIVWeIVYmIVauIVc2IVe+IVgWIXUwIAHAQqrcIZomIZq
59uIZs2IZu+IZwGIdyeIZGkBDXUAV4mId6uId82Id++IeAGIiCOIh4eA0JEQH+oZCIiriIjNiIjviI
60kBiJkjiJlJiIEZAQNhCGmriJnNiJYJgJSWgBcziKpFiKpiiHoKB89Ddl5od/7qZ+7BeL1vdg8FeL
613iV/q+hs9ueK1aZ/BTF+uVhkrciLdAaLsniMx7V7vWeL8IeLwUhlu0iMc+aLBAGMz5hiwyiNWWaM
62yIiMysiM4IhdzniNRhaN2uhk1DgQaBAJ7NiO7viO8BiP8jiP9FiP9niP7DgMZncQt+AJ/viPABmQ
63AjmQBFmQBnmQCJmQ/lgMCREO4PCQEBmREjmRFFmRFnmRGJmRGvmQ4ZAQYPAKIBmSIjmSJFmSJnmS
64KJmSKrmSIAkGCWEF+Bj+kzI5kzR5j8N2EAyQAAq5kzzZkz6ZkLegiuRYZS12juk3XN2YlN8YjuE4
65jkOpYuZolDCWjgJhjU+pX9kolS/GjUkZi0vJlMzolFe5YVGplSRGlbBglWMJbUVpli7GlV25fl8J
66lrUolmupX2XplgOGlmp5l+iVlXo5YHAZl9Q3l3T5fnbpl+uVl4FZYg6RCTUZmZI5mfZ4aAcxAz+Z
67mZq5mQeZAAnxDWEQmqI5mqRZmqZ5mqiZmqq5mqwZmt+QECIACLI5m7RZm7Z5m7iZm7q5m7zZm7Ip
68AglxAZQ5nMQpmTdpEHzAmcq5nJs5A0KpmOkFmI0JYINJmLhnmIeJfYn+CZ3oxZjTKV98yZ1Y2Zbf
69SZ1IaZ3sh53Z6XvbKZ7s5X3lGWDh6Z5s6V/xGWDViZ4ip57reXTtSZ+r5Z336VvzCaB/SZ4DCl/5
70qZ//xp/9eXL/aaCoJaAJultoeQ6QkKEauqEc2qEe+qEgGqIiOqIkmqF9sI8GwQvisKIs2qIu+qIw
71GqMyOqM0WqM2uqKfkBDpMAY82qM++qNAGqRCOqREWqRGeqQ8mg4JoQKT0KRO+qRQGqVSOqVUWqVW
72eqVY2qQqkBBQUKJe+qVgGqYk2gqjtwI3eqZomqZqaqO88JwSmlrSWaG9taAMCnDu96C/F6FvWloU
73Kqe4VaB7ymL26af+wEWndaptDoqnBrd9gapu8EmoBOqmjUpacQqpuGWohwpmiaqo4aanjdqnlkoO
74FyqmpFqqpiqiJ4oQKrqmrNqqrjqjOYoQcCAHtFqrtnqruJqrurqrvNqrvvqrtAoHCfEHv1Csxnqs
75yJqsyrqszNqszvqs0Fqsf8Clp1qt1lqqZIqTZvqq3NqtrNqmJzapgnploTqn55mpQbepnHpmnhqo
76oGqpgCqup1Wp5Rpc54quIaeu6wpk7bqn7wqp8SqvpUWv9Yqp+Gpj+rqvPtavb/qvhBqwAgtbCFqv
77tmWwBzt0d6qwBMewEuqwfoqWHXAJIjuyJFuyJnuyKJuyKruyLNv+siOLQgRhDwswszRbszZ7szib
78szq7szzbsz47szCQELTwBERbtEZ7tEibtEq7tEzbtE77tERLCwmhDLlQtVZ7tVibtVq7tVzbtV77
79tWBbtcqQEHrgsmZ7tmibti1LAQghBj/7tnAbt3L7s/bAVHZ7t3ibt3q7t3zbt377t4AbuII7uIRb
80uIZ7uIibuIq7uIzbuI77uJAbuZI7uZRbuZb7UhCUPf50HwJySIYRMFTCM6ALSDJSFYPkM2szG4Sy
81Fa90ITZRUpcbu7KLESRQQRRFEEtCulBBQrB7NumTS78bvJp7uh+WHHukGaPDJU0hGu00u877vPt0
82GrCAJYOUB9f+orsH1BVI4ATVZDjB6xh4YRRZpBBGAUQF8RzAuyzQu77sqxBWY71YkSN2ARmsQRzg
83yz/HEb7Giz3hch/FQhBm4RVqgR3tW8AGnCTQIT9dw0nz67ncAhj5i79K1jixI0HYS0Dcgy4HvMHP
84G8DGMk3W0cAIIUAnEzD7IzuVg70V3L8XfDQ30QvxxMEybLlOIAEQ0k+sdMIG0UK90FVDEcHpa054
85hBX8W7zR8b9lcRogNMNMLLmPQFFYlDd4MUYMcb9BrMNDXBrLQb7JYb6eAR1L3MRi3LgXgw0wu0UD
86gsQKYcVapMKI8RPEO8HB1DnI+wbK+1BjnMeMKzhG/DU2kSj+WXMyQOy6N+HHNRG6NzE1Fnwf4jQ0
87bazHkBzJkjzJlFzJlnzJNEUCvbDJnIwkInFLnbzJAYXJpFzKpnzKqJzKqrzKrNzKrvzKsBzLsjzL
88tFzLtnzLGhHKurzLvNzLvvzLwBzMwuzLo8xSCjLMyJzMyrzMy3zGKnXMzBzN0jzNyXxTDELN2JzN
892uwhLkUT3KvN4BzOyAwgePxR3izO6JzOvNxGNsXNLuXOLEUT5axR8gxT9fxSuVtT8MxS+6xS99zN
90YZxR/9xS+UxT/axSB41SAx3PAY1RC71SBT1T3CwMjFDRFn3RGJ3RGr3RHN3RHv3RIG3RXZXQ5qwW
91OLALKJ3+0iq90izd0i790jAd0zI90yiNAzIyzwKtFiG90zzd0z4d0h2wFg7cUtzcl5MabSRNz2ox
92fRd7Yzr20P6sFvMnrkkW0TJV1BGLWkhdT1HdG0zd1DX21A3NUP881ZNa1UPNz6li1I261fa81GDt
93b2KN0w4t1Vl9WmhtzWt916bl1i/1z18d1wo212/dG2b9qUKt1+pYnIzd2Paoj6jB1Sn1z2zQmpZ9
942Zid2azJBjdd2AMBk44d2qLNjsdp1TGF1XxNqb2R1Dnt1YK9bYT913ad2qOV1+2817SNcast2QoN
95168dZrEN0Iad20iW2Lc9EGwdqH4t3B/328Dd2bI93Ln+bdv6nCpU6InYnd3a3YVjGNmeLRAfyILi
96Pd7kXd4q6IL7Q9dkrRaZuN3u/d7YDYqlkdYrxc38Z4T4nd/6XYAL6N3RPRBaQIgCPuAEXuCDqAXQ
97zdwCEYT73eAOjt9ION+KXZXEvdwtBdjOrakJfuGzTdvUbdC4TdsWztCuneE4FtwcLt0ebtzVjdwV
98vtvfbXsmfuIbTuIrR9wfLtGpgqHX2uM+jqooytp13RuzCqxGfuRInuS+KqzpHeNd+uNQHuUZmq1J
99Qt8IHeKpPeIrheEzjrA1vuUdnto5ftVYztda3tXN3eVh/eVovnQ4zuIg7uK5feaT7dtqLmZsXucq
100Lub+cK7jci7iMP7fP3fnGNvkgi58by7hxy0QeBZsjv7okC5olskYvF3SvaFpp5bpmr7pnF5qqWbo
101Cg4LvBbppF7qjl7aVp5SqA3o/h3qgU3oyIXiNu7m093nZP7nWR7org7rg53nvb3nfD3mp13md03n
102v57mvN5+oJ7iN17rit7iFD7nus7sg57syr4q6k1QZZ3oVT7hsMADZBDu4j7u5F7u5n7u6J7u6r7u
1037B7uZhDkla7UvZF3hlfv9n7v+E54iLfssw4Li9DuAB/wAj/w7C56zx7n0c7q2RTjr27tsg7mwH7X
104wg5Tq57rrU7tMm7t0PXwbY7ozt7ti56WL37x/d7+8MnO8Xre7Ct+8H4uENcN3zAf89xNhpQe4+Ft
1053jif8zp/guiN7THe3jIf9EIvBfIN8tAOC/f94Eq/9PxN80K+3r1xhwY+9VRf9YBoiPwO8QPB4Ezf
1069V5PDxFu9Agv8tJO8lpf7RrvXCh/7LS+8mLf8mSv8DV/6CbP62tv6SrP5yx/6wlv8QtP92nfYL6O
107922v92/P998Oeoq/+IwPdmVn9h1vDt8w+ZRf+ZZ/+Zif+Zq/+Zzf+Z4/+fvu84e+eY1f+qav+AZ/
108+MOO62Y+7SUf+Go/+PKe98Fu66vf960P+SmP9rCvXHc/+4Vf+3t/+3Hv93O/673fbbLf2rQv8bb+
109T/HEntXGTvgZn/zJ9fvMH/zOP/zQPxCS8NPgH/7i/9Fa8vTarhY/QNPqv/7s3/4z/QPLP+QDQQHj
110X//2L/7P/1LmT1D7L1BQvfsAAUvgQIIFDR5EmFDhQoYNEcoDIM/hRIoVLV4USAIARo4dPXYEQOLj
111SJIlQ5ZEmbIiRIkqXb48yBLmzJkyad5MqRHnTpgnef4EKRLo0JURiR51aBPp0odGmT4tqBPqVIQA
112epHAmlXrVq5dvX4FG1bs2LA+qT6FOIrsWrZt3b7FOsrpWaZp4d7Fm3dtr410/QIAHFjwYMKFDR9G
113nFjxYsZC/SKFyFjyZMqVLQ9u+fho5MudPX/+pqxZ9GjSpU2fRp1a9WrWrV2/hh1b9mzatW3fxp1b
114927evX3/Bh5c+HDixY0fR55c+XLmzZ0/hx5d+nTq1a1fx55d+3buFN9IICjhDUEkQiFyJNwL1nlY
1156df3JcgZALY8Cgc7yQxt1Jv5JJC8J+yGwoSSwAnAnABPoPkKkiuz7h6EMEKKSLiBoBtGIUgq9ggS
116Q0AAbvivKgcFYm+ugTY8ET7x6hNRICT2+w+aN0aBBhYxnHCiIBMVdHAUJ1jMwwkM2wNADIL4G1FC
117JZdUUgwAQkQCABZhyYM/EuEbCJtRkEDCCfVaLKjEJFG8MkNsEporSol6qXAgJLBxrL0k55L+AJsQ
118XfyuPSccC3JHJv8EVDtsEqxyIGgG7YtMWHoJUdGB/BTTIEVRhAaAGg9K8w0uiyzokRwfnTMzJx4x
119iIQcAXjkTIFGecTPQF+FFToKV3Wsl0fYc3QgElTFdMy+IMWyTIJcldPFUeqbFEs/5wJWTmyMhOWN
120SpOMtVprj3PyvzegnRXXYN0k4Q1qFRxMWMJESlbHcd1LF1SDmPVVTqyoPHXca+/FtzcE81BVHk3f
121E7bTN3q5FMz4fo03TCwrLVjdgVoVI0poH/6Ux3dFJbXTesU4k9Vi8wU55N0euVAojTBTdFd73VXY
1224pZfzojXi4dds00X4aR5ZoHEuxMWJPL+NOpZaT8WuWijY6v0WUkTDVbihpolOsWlB1oRzcweGQ8W
123GWm0EUeHv171R4GCHNIoUz8l9mi11x7NCZmlBjCwXuQDzOqpiSyXbvXko88+wZyYWD/+4Ow5apep
124NhCAUd11MuO02YY8csknp7xyyy/HPPNYSeilc897mRgmCT73PEHNT0c9ddVXZ71111+HPXbZZ6e9
125dttvxz133XeHXB7ffwc+eOGHJ754449HPnnlC08OCeWfhz566acXnnnkoKE+e+23n7460L4HP/zA
126ViaObvHPR38x8oc7OX333y/M+1G4p7/++ltdXziIbrW/f/+hx59zNPI/AhaweHLxXpz+lKOU5TBw
127gY8jjlSaI0HpmKWBEByOA5OjQeRQcDkehI4FH5i/4HDwOCY0DgiTo0LnmEUQC4BhDGU4QxrW0IY3
128xGEOdbhDGNYgRSQEjlJQkQsiFtGIR0RiEpW4RCY20YlPJCIqfihA+MgDBjzEYha1uMUdCkJX33qO
129WRZADjKW0YxnRGMa1bhGNrbRjW8kYwum2Byl5CIWd8RjHvW4Rz720Y9/BGQgBXnHXMyRORKUxyrg
130uEhGNtKRb1zAFxM4kDE+0pKXxCQb5XglIP6mjoMEZShFOUpBFpKTVDyRIjO5SlZaMpIZAWMLHVPJ
131VtbSlpo05AUzY0dS9tKXv/yjKd/+00nfIFKVt0RmMsnxSliwsDlmMUEapDlNalbTmtfEZja1uU1u
132dlOalMjlCAeihjaU05znRGc61blOdrbTne+EZznVEM4VwkcA7/BmPvW5T3520wSSpI5ZQLEKghbU
133oAdFaEIVulCGNtShDyWoEeiJHKVEIBQXxWhGNbpRjnbUox8FaUhFetEITPQ4EhSABSC6Upa21KUP
134BQVApyNGZdbUlpscpnM+CUye9rSXwkRhcYxpU6KukpnOZA5Ni7rUR+I0qOWbCy99OlWqBtOkKazi
135MZm6VUjKtIKz5GpY3ehUDOovqlVFa1rxCNSyBmeoYoVrGo8ay2c65haewGte9br+V7721a9/BWxg
136BTtYvBbjqsVRChhesVjGNtaxj4VsZCU7WcpW1rKLBcNhIwgfBiSAsJ8FbWhFO9hbeDU6So1rauOo
1372QyeVa2vnSpbidmbt6o2tXOdpEBoaVu4knW2vNkpbIX7S9mikkRa5W1YcRtQsCa3t6w16y6HO92f
138QtetWXUuXJc70+Zml6u+1alrqTveQRZ3gtj1Lle3+9WBzGC074VvfAObAOsGcS4iAER+9btf/vbX
139v/8FcIAFPGAC51cE9f2NBPkgXwY3OL4zMG0Iu5vepYKXjuIlb4b9aN5DopfCS13vaSf8YZtamDnB
1401XCK9cjhD3qYxDYNsYQp+eL+oppYlwORqop1HAsWK6e2NFZmjMM4YiDf0sbiFEiOd5ziHtczlUWu
141qZBlORBeiMPKV8ZylrW8ZS532ctfBnOYrfwJBPtGKSqYRJrVvGY2t9nNb4ZznOU8ZzqnWQVlpi1n
142VyBmPvfZz38OMy8iPOQZQzmZR94ghpes4SZ30MWGrqWU61poSN8Uz8BV9KLJ2+iTPrrSRh30lHX7
143aUuf8sLS1TSTL72bH5M6k5JOqmOqDGha19rWXiazqU88lz/8wte/BnawhT1sYhfb2MdGdrJ9/YdV
14460aCDNjzraU9bVoLGpa5hcVuXY1JRFM006meLqex+uRtg/razKV0uS/Z7RP+fhvcwhW3UD2t7kbC
145ejmopXdTm50bFL873PvGTavzzUh7KwffA2cku43Tb3/DG+C3ETjCu3pu7rbXwRfHuGDpq+sbCyQe
146lwV5yEU+csvG4+G2UXDGVb5yvUKY4uwdtcQbqXDEurvhaY33Zskt80UWPDkH53kbaQ5VVN98uDln
14737yDrkafIwfoS1fj0FtbdKPDFunCiTjU0dj04zxd62eUenRxXPWjn7w2Wf96GbluHLNswhZvh3vc
1485T53utfd7nfHe971/nbDchzJsFAFEAQ/eMIX3vCHR3ziFb94xjde8KowO22ejYe9V97yl8e83jcR
1496knHPO1Rj/xsGE72ql7+/bo7//zWOR/rdKfejGEvoc1J31PTAwftn197cbyeetjbl+qzL33oZXP7
150tOeeOGJ8afKVv/yGStTvic6MNEY6fepX3/oilYbwY4NIlTLf+99PvvGHYxYxGND89tM+bJRyfvZz
151L/2vkaDz2j9/6U0MqfdWIPTD+9vdPDXpz7k/g8s/b+M/3fA/sTsvAKQr1ju1/XPABDSumYKfCZzA
152AuQ3CsRA97HAgMvADhSf6tCLEBTBEcyKhlEOaCDBFFRBtzDBDVrBF4TBr+CdGaTBGrTBG8TBHNTB
153HeTBHvTBHwTCIBTCISTCIjTCI0TCJFTCJeSOPKGarHER81jAhWCXXxn+jL35Fr6ZkoRwEpuJGvMJ
154CfNBl/tgEas4GAvhFHK5QryRGyZ0Q9OYlYG4kAxhGoPoEMAAEbt5Gag5w515gy08iJO5E2KZC0dB
155kXD5D8DIGIBxEcDIPxNpqzeUxKfIlkackiqpw4LQEi7xEj3sQz6Em5hZiO9wQsNhGUaEGYuxin9B
156xVRJFZ05nEmURc0YlLGBwkORgEwkCEYJGFiEG1DsRYZJiDx4klGwGULMDEMMFkuREydokw3Zk0oJ
157naiJxFm0xp+IQ7UYCFvxFoXYFU/8xYTpw1M0CGOkkieJxZzpxVBsJseRBydBlr6QRljYE7AxxWvE
158R6SoxG3JiArpxoP+KA9xQZNyYcRzQUV2vEeB+EOFdEeDMR+JoBsnNBtNYQ9PEQissUeDzMeNHIp9
1596Zd/+UeBIRj7SBhgPEhhPAhi/Jt0PEVlJIhRUBWnEBL2SJzA2EJI3ECO1EmOIBltbCbC8J1vURmG
160gBqTPMS3eckhOccaQUaE7MVIsZGQ2AiUpEelpMac3MmspIikmUZGJBOnIcqSFMdQrBqAXMiBeANS
161acp1fEqE+aKNMBWCwEhyrEattEuOcJuYYBrBmBvCAEdz8Uu9iZv5AMTwgMKwYcO6ackqJIhKqQ8T
162MRBYwIZF1BopoUu/vMvM1MzN5MzO9Ewe5BzSAZ2bGB3RNJ3PRM3+1FTN1WTN1nTN14TN2JTN2aTN
1632jwd0cTN3NTN3eTN3vTN3/zNNZgG4CTO4jTO4yROJVgDJUDO5nTO5wRO5WRO6KTO6qRO6bTO7NTO
1644pyGNdjO7wRP3hwWbAjP8jRPAGAH81TP7awGAKiG9YTP6mzP94zP+mzO+bTP/DROdrAK/fTP38QG
165ZRlApzMG53AEAHAEA0VQBU3Q5jCGKdS5RxnQrivQ5jjQBmWOC2VQ53hQBRyWCWW7Cs3QBbVQEh1R
166DF2ODo3A9nCMEZCEF4XRGJXRGaXRGrXRG8XRHNVRGC0YABDRQwiGIBXSISXSIjXSI0XSJFXSJWVS
167IR0IDRWIGDj+hSml0iq10ivF0izV0i3l0i710imNgSc1UWFYgjI10zNF0zRV0zVl0zZ10zeF0zIV
168BjHF0B210zvF0zzdUWAYCBXVmiYF1EAV1EFt0kPwKrNghE5Q1EVl1EZ11EeF1EiV1Eml1EpVVHrI
169DB9tPddbLYGAUlh4AiYQ1VEl1VI11VNF1VRV1VVl1VYV1Seg07EDPpyLVYGABEvF1VzV1V2t1Evo
170U6VLvfVCVF4l1mI11knF1EcRUW3jVHLAqU8NVVeV1mml1mplVVj1VBNVsln1KWH61Fs91nAVV2L1
171VYHw00Rq1jMSVsdI1HF113dF1kxd1nR9vVoFVWvF13zV11X+xVZY+NRt5Vae8lYTBVd4NdiD7YRy
172hYVzRa5mXdeBaFeEldhxTVYFmVd67VR/NdFo3deO9Vhr7dd/Ddjgy1YMLdiJRdliVViGxVgyeliB
173sIMpkNmZpdmatdmbxdmc1dmd5dmenVk+UNaB8AM3INqiNdqjRdqkVdqlZdqmddqnJVovsFdv6Iaq
174tdqrxdqs1dqt5dqu9dqvBduq9QZ7jYJmMNuzRdu0Vdu1Zdu2ddu3hdu4NdsosFcz8Nm7xdu81due
1753YNfHQg+gNrAFdzBJVyo9YNDZdeUVVxirdj2uFiMfdaN/djJpdxrtVeAHVlfGliTXdzOzdWVBVbc
176Q1yI9dz+0qXUxtVUz6PXyMVQjq3c14XdkNXWzI0tez1Z08VdRgVd1EvXl4WFiM3d4O0E1H3c1bVX
17714Xd5P1Y2cVQzKXdUdrcgbhd4TXd3T2ull2m0RUI4KVe0yXeTeVU1h0I5FXe8s1X5pXV5wWm6LXV
1787g1e612PhuVU3+WBAbDf+8Xf/NXf/eXf/vXf/wXgALZfZ2CAoBWIevCCBFbgBWbgBnbgB4bgCJbg
179CabgBE4EezWHLtDgDebgDvbgDwbhEBbhESbhEtZgc7DXwHO8FWbhFnZhxoO8kh2IVhDgGrbhG8bh
180AMYAvxUIBpiACgbiIBbiIabgetDe33Xf3P1e1U1X8RX+CPI13yieVvRNMvUVWNtNYtyFX3RtWd/l
1813ixW3CXONux14nuV4jOmViqGBee14vLCYjD23C2WX9fzYjj2XDFm1vA9XjTmY1dVYzZu40BiX1iY
182XjuWWDnGXt8tB3pg5EZ25EeG5EiW5Emm5Eq25Etm5FIQAAOGhWjqp08G5VDWJnCSYYHIhi9A5VRW
1835VVm5VZ25VeG5ViW5VlG5WywV3KKp1zW5V3m5Xeap1KGhT7A5GEm5mI25ktOBh6GhXsS5WZ2ZlD+
184p5czi0qQgmq25mvG5mzW5m3m5m725m8G52qmhk222IEYKPBD53RuPnu9hipw53eG53iW53mm53q2
18553v+xud8dudrsFeLur5/BuiA/qiSAmYbCOeDRuiEVmhwzgRlTil1huiILqiYkubENeQwllfwdb0y
186huI+9uhR/eNA1tw3vmiUReQuPuIvLmmDxWMy3uOPhulSDWmRJqVBLuSVfteTxtg6xmmJbemW5eiY
187FupXvVyarmmS7mmD1Wl6pV8ycOqnhuqoluqppuqqtuqrxuqsdmozKOByFgi3y7ywFuuxvru+01gM
188NYdvUOu1Zuu2duu3huu4luu5puu6VmsUBuZ1CIC95uu+9uu/BuzAFuzBJuzCNuy9Xgd7XQStZuzG
189duzHzuodNlfOojyytuzLDuvNq2jSTeqD/WnIfen+oYbpmTbqULLpzj7Ype7dlEZtls5oJm7WoBbt
1900S7q0jZtpG5tcVVth2Xt3HbXzzZeYO7o2Y5i0rbtUsJt3zbW3Z7f3lbucAXuJg5t4uZj4z5uQDrt
1915w5X5qbjI86ESADv8Bbv8Sbv8jbv80bv9Fbv9Q5voPVqWHAvlpPvi9u4sx6IbwiD/Nbv/ebv/vbv
192/wbwABfwASfw/P4Ge8WvAlPwBWfwBh+wAwPmC2DvCafwCrfw9e7byf7b+ebwBnO5n/xQztZuY43u
1932J5u6j5j677uDUvuEddV7g5W53ZxXi1xPRZuFO9jFV9xPsruGedVGBfdzd5eH2fc1x5joD5xHDf+
194Xx3f8RVrcSKnVCAvPhmHckut8Y1OciVXXiZv8rV68iqPVCn/Ot89B0gw8zNH8zRX8zVn8zZ38zeH
1958zg38z7oaselMmrD8zwHs1yzb4FIhzEA9EAX9EEn9EI39ENH9ERX9EUH9HSwVzSrs0iX9Emn9Dm7
196M2CGAjnX9E3n9E6P81ZQZmjT81En9SuzNhCXUBEH80q9ct7Lci2P3dru8j7q8VWPcmXm4p2mcluP
1971Fb/PNmG9SWX9Vnfo1rn9TDH9TmOcSFH4mOPV07OYyy/8WAXdmAG5CY3dmd3VDHXOkU+5m8H93Cv
198ZE3mZALQgXNH93RX93Vn93Z393eH93iX93P+NwB71QIuwPd81/d95/d+9/d/B/iAF/iBx3ctsFch
199oIKEV/iFZ/iGd/iHh/iIl/iJp/iEFwJ7FWZx1/iN//Zk1nCBEAAamPeRJ/mSN3l5J4AjpuaFZvmW
200d/luHmdOPmeJpnnwc74+h4V21ued5/me93l85mdg9meBJvqivz6CxnmDfvmlZ3qWb+iPX+buq/mp
201Xz6KRnUFsWhth1RfTztgp/bk5fJZz3atX1RuhzqeJntH5fqv8/qvf92w7/KxT3uzXzq0T3tGXXut
202a3u3p1y4x/Yv13q6Dzrf7YBLMPzDR/zEV/zFZ/zGd/zHh/zIP/yJSV1YsAcuwvzM1/wcggH+e6WF
203JwD90Bf90Sf90jf900f91Ff91Qd9WrBXZYCi2Jf92af9J1IGe9UDydf93ef93o98ClBmMdj84Sd+
204zbeHI04qEV2OT11+E21+FFUOP+2wEG8h5VcO5r9+589+6E8O6W8x6n8m608O7B9/7S9/7kcO7/cx
205ZbmKGHT/F+yP95f/EewBAOiB+cd/vaj/+8///n+L/QcIEgIHEixo8CDChAoXMmyoEBsAhxInUqxo
206cWAvALA2wgLg8SPIkCJHkixp8iTKlCpXsmzp8iXMmDJn0qxp8ybOnDp38uzpUyfHoEKHEi1q9CjS
207pEqXMm3q9CnUqFKnUq1q9SrWrFq3cu3+6vUr2LBix5Ita/Ys2rRq17Jt6/Yt3Lhy59Kta/cu3rx6
2089/Lt6/cv4MCCBxMubPgw4sSKFzNu7Pgx5MiSJ1OubPky5syaN3Pu7Pkz6NCiR5Mubfo06tSqV7Nu
2097fo17NiyyyKRAKsXUtxGe/Ui4URMbjG6gw6/Pfs48uSbSeDGDc1Jr99Ciw9trpQ6x+LYlXPv7t3v
210I9t5SMAab11CHljQqPfmDc34bWjYSMyH5lu6QNuw6NuHJcGJE7bhlgd02Gy03XcJKrigWtDcAMso
2110CBhXXHjTScPLPKMAh+FsIjx4HO3AZedcU4gAQs2E8JiIhJvMPgijDGWZd0N71nn4Q3+5E1Hom4d
212StAbCRqxF9989MlzI4IyKrkkk009MoqAvL3xY4ajnFgdhhqu6GGHYpBXG3w8wvdIiUi02CSaaapZ
213FDQAXHmgcaNA15tQAvF2opwCGafbfen1CCdu/zlB3oDQPRjmmokquiijjTr6aFn2EfQepJVaeimm
214mWq6KaedevopqKGKOiqppZp6KqqpqspWHhtu5ARH+iU51Bu83Vgrb8AVh2svb2bXC67A3aejrQFC
2155QSlEpAJC5izTmergLfZSihxvA1KFK7S7QcgecIByxtzuIoHnRN+ugqhs0ORoJ+DscJ53bTw8Spc
216tdHpGJS3uG407IHWjtgUEgZuNMr+iOkhitS8Pca7q62+clTrtfty65+UQH7bi2383nbuKOnWye6h
217/r2blK0Y71kyosXey1G+vJVHrsHF/stUqxzBulHMTPEqL7SI8urwRhDrSGB06f34LXMXCzvxxhx1
218TJXAYrgqj0aI3qffjiQerN1GWhI13LobSUDtq1A9smyN+9640XPRzTwyoFmPDGV1G6kYtn/3ct31
219DSciccORAqPoMb6Hhtd11cXdACDWWmu999yNE8cR3mPD1+5TN4x4sxiJByUPuW+nDPfoVX5d9n76
220WQ432KoTKjg2hLNsuH7Mwb24sXLHPbnjdJ+eYd/MAn55yE1F7WrncIPudt2P667+m9dZwypP8H9j
221yDrlrt8Gu+xFjZJe2H//6TTqz5MOOYLDcT3czU6FGDDOtheHnnrYDTmk45jzjgTZI0MeIUeg0bHv
222ledpTknRit4jvpF5aSOCc9y7IBcm/cltfWwrHlMsVzN0wY0EwKEg9rbGu4NFMISlG10vCNiq7jnw
223RMjykO3C1EAUNU9MI5wgBrUGQLZtSDcgXAoB8WbA4nhQPTncG/789zvc7FA950Lf5FKYnhVSpWYm
2242g+9SKgiWvEmWrDY2QnTB8HmWEtyTEGWhVS0tqBY6FkuO1kXT0hCXL0BQ1B0HHt6ITUIHekp60LC
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
305nXr12OiMPm++faZoWJc6hRc/nnx58+fRp1e/nn14SMq5x69I+AkT+/fx59e/n3/+f///AQzQvifg
306k89AiCqTh572GGzQwQfZuyS7AymkyDvwIMxQww3Te++sCimkT8ARSSzRxAAJ/BBEAxNckMMXYcxQ
307QrtWrBGWC2PMUcf1PIRsORuZE/HEIYks0r8UfQSSuxZ3bNJJ8WbsTDsl5cPxyStz7JEwKm0T0sgv
308wTwRyS25/IxJLNHkMErPytzOO3Wsi1POOV1LpMA2PyNMl+P47NPPP43T5U48JauMAWboTFRROdWZ
309kFA3nUoIKs0opVQwMh89rLbEGuvUU7IewzTTtRK8rNJT/eKMzVEn825SVGGN69LaWMULsU9xzTWl
310UGmtlbLn5DE11mGjUnVKXwv+c5XYZaOa9Udku9pU12mpBYnXZ6FdqlRmuQXK2Gwlc3WVcckt19xz
3110U1X3XXZbdfdcY0YFNylCJMmlHvxzVffffnt199/AQ5Y4HulkXfepBK04N2FGW7YYXe/PTgv78SQ
312x+KLMc5Y44057tjjj0EO+WKDJaaJMJFRTlnllVEmuWSZKkOC5ZlprhlkMRx9OS3vdDa5155jEhVo
313jIQe2qJVjcYI6aRl4pnpi4p+OqKopX6I6qppxPqipbWuyOmuIboaa7GrJltqrsGWMm2YAGjb7bfh
314jlvuuemu2+678c4b27UXytvvvwEPXHC49077psERT1zxwNfOiITHIY9c8sn+Ka/c8ssxz1zzzaFp
315PCJoNg9d9NFJL33yzj232vTVWW+99NRhj1322Wmv3fbbcc9d9915793334EPXvjhiS/e+OORT175
3165Zlv3vnnoY9e+umpr97667HvXQwAUE9olBseygP1hZCK26ms+n7bKfIhgvuG7iVCHwAJHmLocMLT
317d7uh/AHoBecbsbU98D0ECaN4AwCwEakbwa0XCXEf/ML2QP61TYFGgeDUjkUR8rEvWrB4X/ZAmDQn
318POIhb6BfQrbHEQ46JA9OaNsokGChZ8lPIit0IEcK+IYYTkR+OnRIbVZoQ6w4BAk3aCAAJXK4HcIC
319CU4YRefk8QYSIjEikcn+4RIj6BBoOOGIN5zIFi8COpiQT4xc2WAXQ5jGkj3CCSwEwBJ7ERkbQkOK
320sNgiGts3w/1lUIi06kUF8wiZP/4QLUHko3bY9zNYmNCERkGjBLDhxSouZ5A11E4etKPIzgCSXhns
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
401H3727d/7+9cdHn75lXdefQZ+xZ57Ay4Ii3wHPmjTfdUxeN1+/12IYVQBTkihcgVCCOJxZY3W4YDM
402BfJZiiqueNcwlJWoXHbfhEFjjTbeiGOOOu7IY48+/kjjNy/CCJxZfLCIZJIrBoIckfA5GGKUHkk4
403npOlWZhhllpSNaSVpX0oZZgmNenldVCKGSaVZcqG5ZZu/rdhlWv+BSaaUSZI4pzAnWlniGrqaVmb
404bw7aXZyAWlZnnxDieej+njIJNA89kk5KaaWWXopppppuymmnkvbRZaNnZZfNF6aeimqqqq7Kaquu
405vgprrKZmE6qoWZklQCme7sprr752Og+ZtlrG3Dx3HItsssouy2yzzj4LbbTSHktMrcMClZ0WVWzL
406bbfefgtuuOKOS2655m6rhbXX+oQrIdO+C2+88kob7IjrEvtoc4pG+ee9s1XHH6EC42aov1gluq+B
407jBrsF58JG9gvwz4JOnDFGqorsUQIP6zewhlr5TDH6kX8MUsUW4wyUwWX3NLGIkPnMctAMXdAOzbf
408jHPOOu/Mc88+/wx00DbPgbHMgVUHhxxKL810004/DXXUUk9NddVKw1H+tNHmkcgAFEJ/DXbYYgcd
409mr1aq5XvfC+nR/LZDp2cctxc9ua2xiQOt3bHwta9Ush5G9c23wrBLXfKKwvOkMt/sxYz4hH5vThr
410gTtOd22FX87E4ZQjpHjkYjW+OUxpew7d5JQTjvnAmofe3t3okV4c6KwrdKKStt+Ol4uVz747YZH9
411Dnzwwj822e68G4l78srDxaTZvDMEOez2Zc036qkTunronUuPk+zPCxQ99ziZ7rj117+Z/ebbi1+T
41299+Hz35N5CNu/vlbpk/5+vGP5P7z8O8/kvkJrn72yxL+HKc/AIKkf7xjzjkGAMEISnCCFKygBS+I
413wQxqcIMQbAX16pb+HXN0YYQkLKEJT4jCFKpwhSxsoQtHaI4Pug0zzuCgDW+Iwxxu8Bx7+95B/qdA
414kAiwegArIMoOiLgEBrEjDJwdEJfYkSGCsIhGrBgSBadEKGqkiax7ohY1IkW3EbCKcJLh2bL4RS6G
415rli/aqMb37gpUBlvdqSSlR3viMc8xopWc2QdrnQFx0AKso31ap0PF8IcREhhkYxspCMfCclISnKS
416lKykJRdpAzNqLTvXOJcnPwnKUJrrGpo0Gq6occlUqnKVrLQkInp4SC9+UTqllNkYydifK/INjVpU
4174+Zk+cUwnu2WuPSOLuvGSyj6knLA1KIwN0nFYqKvlixL5hKX6Tj+B2pgm9zspje/Cc5winOc5Cyn
418ObfpwT6GLju6aIA73wnPeMpznvSspz3vic98ulMX1CwZDc8J0IAKdKDm5KHzDvnDfC2AHAxtqEMf
419CtGISnSiFK2oRS/K0Bb082PZyUUsPgrSkIp0pCQtqUlPitKUqvSjudhoxoSzCozKdKY0relFFwBL
420HzJnoTbtqU9/SlGNqnNzHV2pUY+K1KSqtKVDzd/dYgrUqEq1pzg9KEIbpNCpanWrFhWqeHxYVKWK
421daxkPSlTv/o9mHJ1rWxtaFUNedWEHoSnba3rVL0qINaFtax87atSz5pX7T3VroSN6lsVhFDm+MEN
422jG2sYx8L2cj+SnaylK2sZS/LWC+4VGLZiUIzPgva0Ip2tKQtrWlPi9rUqvazUdgsw4yE2djKdra0
423xawfcvq+rBZ2tzbFK4f0Wh2P+nW4xEUpYH8rWItAlbfMxehh83TVnTZ3ul11rcH2Wtzsave4clLf
424YKkL3og+N65yFQhdw4tecvi2u6cLrnbfm13u+lCt6U3veMmL1bnWN73rBat74Qvgvso3rd/dL3jv
425S17m8EIcDG6wgx8M4QhLeMIUrrCFL8zgT1jXX9lRwSQ+DOIQi3jEJC6xiU+M4hSr+MMq2PC9MLMC
426DMt4xjSu8YV5gVv/6dbA1O3v97Ab4CAndcDPoy+Pp4vguEr+98jT9fHzgCzkKC/VxesyMpN5m+To
4277vjKu3Uy76As5TCXlMjHKzCXC5vlxOaLADpos5vfDOc4y3nOdK6zne+M5zYbgMrXyo4QqADoQAt6
4280IQutKEPjehEK3rRgBYCn4eFKxrkedKUrrSl8UyAHDcwX6BYhac/DepQi3rUpC61qU+N6lR72giP
429tlV2IhCKWMt61rSuta1vjetc63rXvI51BFotKlxZQNXELraxj51qUGjaiVs+s129TMf/innaYwZ2
430o6zs7LqmOZbNzjZboQ3cqwiX2uQOKZlnh21vr3XbOu22urcK7nVKu9zlPrcfzfxurrI7twe5hSf+
431DfCAC3z+4AQvuMEPjvCEK/zfxbD2obIDhldIfOIUr7jFL47xjGt84xzvuMTB4HBAYSYBCy+5yU+O
432coXfYtlddHe+pRpvos6b3tS2d3K7styXb3XfOtavzrka8/aKm+b0trl3lftzfbN8jS5Pek+DXr6Z
433Ez3MRncq0p0+VZ5v2udYjyrU6Sf1qUe56gjEd9epuvRf5svfKW+7299+8IY3NepXcQAg7o73vOt9
43473zvu9//DvjAC/7uDgi5nkYO98Qr3u0rt6qauX52n359gGEXe5DJnkSzR56mWmc25Ddf08kTceiW
435FzPmsah50Ds37cxsuuorKvopkr70Uj79LlP/+op2vuX+B+k0sn8P/OCbmtVzB/tV1NCG5Ct/+cxv
436vvOfD/3oS3/61E++Ggw/J2ELf/vcB76yHc/tg7D50uQvv/nrvOfiU/4qQui1+98P//jz2tHqv/1B
437BCDp8+t//+TPNPjb/Xm5d1GxJ0aVR3vvZXvIhHsCKFG7x3QByIBBhX1rAmYHiIATWCbpFoET5YBq
438B4EbGFEEOEwGaIHFlYAztIAg6Fasl035Ug9eAIMxKIMzSIM1aIM3iIM5qIM7CIOJgIFekh3rEABD
439SIRFaIRHiIRJqIRLyIRN6IRDuA4/aCWYMQE8aIVXiIVZuIP1wIKIs2QqKIH1J3sHMW4lCGAneEYp
440CIb+Hdh6HwiGDSWC0DR7ZghfaKg1GviGK/h//GZeeThRcWg0FUiHw2WHpqSGKsiGLeiGeQiItkSC
441g8hXhSgzeOiHieiF+bIF9qCJm8iJneiJnwiKoSiKo0iKpaiJgiCFTpIdrpACreiKrwiLsSiLs0iL
442tWiLt4iLregKqUgkZiEGpgiMwSiMw2iKW9CFgsMcX4ZcMsdedDdf0IVu0Bh+P7aMQudfzZh5h4RY
4430/hk1eiM1IiNqKeN0qhTvUAC54iO6aiO68iO7eiO7wiP8SiP7zgK3gh2ozCP+aiP+8iP/XiO9RiO
444t+ePA0mQBamPvUCO7wMAC8mQDemQDwmRESmRE0kokRVpkRYZkFN0kRvJkR3pkR/pkBmJgiBJkiVp
445kh6JXympkivJkm4TEAA7
diff --git a/Documentation/DocBook/media/nv12mt.gif.b64 b/Documentation/DocBook/media/nv12mt.gif.b64
new file mode 100644
index 00000000000..083a7c85d10
--- /dev/null
+++ b/Documentation/DocBook/media/nv12mt.gif.b64
@@ -0,0 +1,37 @@
1R0lGODlhFgFnAMZnAAAAAAYCAgAASAwFBQAAdEgAACQODkgASCoQEEgAdHQAADATEjUVFHQASDsX
2F3QAdE0eHVMhIABISABInEhIAIM0Mok2NI84Nk9PT5o9O5xIAHRInFlZWaxEQbhJRgB0v75LSLhQ
3TbRTUcBRTrBXVatcWsJWVKdfXW9vb6VhX0h0v8RcWZhpaJJubpBwb8ZiX8ZiYI5zc4t1dYd4eMhn
4Zb90AIN8fH9/f8pracpta8ttasxzcM51dM52dM53dc94dkic39F+fNOEgpmZmdWJh9ePjdiTkt+c
5SNuamd2gnt6lo3S//5y/nOCqqeKwr+S1tOa7uv+/dOjBwOrGxuzKye3KyuzMy5zf/7/fnO/S0fHX
61//fnPPd3fTe3vXj4vfo6Pnu7r////v09N////35+f//v///3///////////////////////////
7/////////////////////////////////////////////////////////////////////////yH+
8FE5WMTJNVCBtZW1vcnkgbGF5b3V0ACwAAAAAFgFnAAAH/oBngoOEhYaHiImKi4yNjo+QkZKTlJWW
9l5iZmpucnZ6foKGio6SlpqeoqaqrrK2ur7CxsrO0tba3uLm6u7y9vr/AwcLDxMXGmkM3ysvMzc7P
100NHS0CjT1tfY19XZ3N3Y297h4sxDlQDj6OLn6ezZ6+3w0u/x9M0A5r/3vvq9/Lz+kQDqEpiLIC6D
11txAyUliLIS2HsyDKkniIIiyLrzC60tiKoyCPq0CqEpmKJCqQJk+lNLWyVEtSKPPJ3Ddz0stRN0Xl
12DLUTVEyaQPvVlNTzU1FPRzsl5fRTaNB/QwNGHTi1IL6nu5Zu0qqpKVSsVME+4pqJLCazl9Ba8oqp
13jAIA/gTCIOXkVsAVo52OAABgV6kmMxr2Cgbil9LLGh/OIJ6r6QgBLAfuMm48YYzPT1siF7a5qUyD
14u1HibtaUWfLoS55NT+a0+DSklqXPxK5EJkuhm7NdV8pMYW9i3YJsT8q99Wqm2MQn/cihZRBuzasv
15RenrdgnwM8uFQzpSOfrrTcihW5KyogiYM89VF9cUWq7i3+sRTVlB5Lyj6ngNd/58pn0mMUmY4ER6
16+R2nGWCEMbUIGQE2QUYj3Fnm3VibIPgeJ178kEFz4Imn4F8aEJbcWY18EcQLViziVoITOvLSFgXA
175R4iVvxg44045oijByAU0QMIQAYppJAwPHhIFILx/qUeieDFCIB1igjBg45U4nhBlVSaAEIQYiTi
182IzXLbTKF1mUaeaZaJr5RAc5aKeIFStw0RErVehARZp4mrlAnmlCscILU8yp3y5iILECBI7AKaeg
19q3DxQ5cuMgLgCg5uZBwuTpiAhBgQKZqRK45CKqYiftZ30aW1WEFDEF58xIinn4L6aCMIabHDDhye
20OqgtYgSRonOLwBqrrKImglAQUjyEalg0xjlRLKEuotayFIoliLC6whKtsVVFai222Wo7KyLT7kpU
21VeCGK26xhJTLmblZGZKuuutW1C2tUc1Lb7233TuqU9c6m9At2wJrLb68JEEGP/rG4u4iBaPnr7S8
22/ohhgsRnNOxwLgU/LJVh9YR8Qwsl3HCOCyHIIDI986yMjgwkzKBMyy63g1LN8JzAgskoq4wzOzT/
233E0MIIiQggM2CG0ztbW88MUZDAgc7y5aFlHBCDsk4ebA8NryxQsZd7DoV7oIQcQKBpyhRRM/jOCE
24VV3X8kQRcKYtCBnsNsQLFHSLPQjecL+bi9lxApCFEjuM0ASzuXwNtdSMf5yLlkQEAcIOSmzN9S5O
25A6Dxs3HPogUIOSBhRQATy1LEE/d8vq+3t5BhhH0YA6zLFELo47qlocNChhC/unowLRYzDLnevbvy
26e/DC265LEqgPsntITCsPvCEef4fV9CVVz8ry/vYOjzwh3KvkvSrgh+985AGPDbrgvl9PbuoRNev+
276wjHzzz29L8v7/G8g18r0sct8SkrEeXTyfkigaS9sIgRBCwge/bSlzBNAjAV/BACAXgIGAmmOxo8
28lybK8AC5TGdJh4igBAuhOUaUYQOWqQEIMVGb2jVGAh6iRA0N9iYOFmJE8RFhJ/CzIPn9qxDZoYR/
29NLEcBNClAUzIISWWw6FO+XAQQOzKAocjxUKoUBEImY+pIAEY+GhCCh0wT2OAkEVJkMc8EtGYB/cC
30pRBKjjVmTKER85fCBhlpEQ2c4SYGEKC3XWILCQhDGyUBIBNE4BG7O0IGtZg8SkRIEV+k2CJM/oSi
31R0gShWs5Q4aYY4kaiKiLlvDCBUjZCNcRMYh3zMSXFuEDHGAJS1e65Y20xKVGvPJNurTSjUbQox8N
326ZhAosEf3ZIkADxQXsHU0QWI6SNkIrNIKlJAHSkpwEvIUEKK6AKfxrmncZbJT4BSxBZUIIgTlsic
33ZyrnE1bQJkws8gxkgieaIEDPFkaiBlCapR21dxwn7UWQTErEpCqlCMBQEJRrKdQKnkAaVFKiUB2g
34aEEPCk5YEpRshygV7VwRAU3lbRaZQsIA+qc+kBLCVriKhaos0CpcqIpVNpxaNwNXCGTJoldWyJ5C
35fcVDl35Up0blKVJjyT6lNvUgW/TfUp+6jzkhJhWqBqxfJQ+4Pqd6FXZXrepUv8rHsWK1q2e1qlnF
36SlVbsKWt4wurW6O6saxKFa5gZCn+5mrXiijNZn8FWmDTEbTBuqMSHDDsODCgWHEwtrHeeCxkucGB
37Y1j2spjNrGY3y9nOevazoA2taEdL2tKa9rSoTa1qV8va1rr2tbCNrWxnS9va2va2uM3tLQIBADs=
diff --git a/Documentation/DocBook/media/nv12mt_example.gif.b64 b/Documentation/DocBook/media/nv12mt_example.gif.b64
new file mode 100644
index 00000000000..a512078c7f2
--- /dev/null
+++ b/Documentation/DocBook/media/nv12mt_example.gif.b64
@@ -0,0 +1,121 @@
1R0lGODlhoAHkAOe1AAAAAAAASAAAdEgAAEgASEgAdBgYGHQAABoaGnQASHQAdC0eHigoKEIlJEYm
2JS4uLlssKzY2NgBISFIyMQBInEBAQEhBQUhIAFBBQVhCQkhISF5DQ2NDQmdDQ3NEQ05OToNGRHhJ
3SJxIAItHRY9HRXRInJdIRlpaWppLSaJJRqpJR7BIRa5KR2NfX7JKR2BgYGxdXWleXmZfX31ZWXJc
4XHpaWQB0v29dXLZKSHhbWolXVpVUU5JVU55SUJhUUqdQTrpLSK9OTKRRT6FSULRNS7hMSrVNSr5L
5SL9MSr1OS7xQTsBRTrtTUL5WU7lYVsJWVEh0v7deW4pqab5dW8RcWbdgXrZjYcZgXnd3d8ZiX8Zi
6YL9lY7RoZshnZb90ALJubLFwb8prabBzccpta79wbsttaqx6ecxzcKt8e4aGhr93dc10cs51dM52
7dImJib97ec53dc94dqiEhKeHhkic39F+fKeKiaWPj9OEgqSSkb6PjtWJh5qamqGamqCcnNePjZ+f
8n9iTkr6amtiUktmVk9+cSL6enduamb+jo92gnr+pqd6lo7Ozs7+wsHS//7W1tZy/nOCqqbm5ub+4
9uOKwr+S1tL+/v9+/dOa7uv+/dOjBwOrGxuzKye3KyuzMy5zf/7/fnO/S0d/fnPHX1+Dg4P/fnPPd
103fTe3vXj4vfo6L//v+/v7/nu7r///9//v/v09N//39////35+f//v///3///////////////////
11////////////////////////////////////////////////////////////////////////////
12////////////////////////////////////////////////////////////////////////////
13////////////////////////////////////////////////////////////////////////////
14/////////////////////////////////////////////////////yH+EUNyZWF0ZWQgd2l0aCBH
15SU1QACwAAAAAoAHkAAAI/gBrCRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJ
16sqTJkyhTqlzJsqXLlzBjypxJs6bNmzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtapV
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
121XnvvxTdfffflt19//+03IAA7
diff --git a/Documentation/DocBook/media/pipeline.png.b64 b/Documentation/DocBook/media/pipeline.png.b64
new file mode 100644
index 00000000000..97d9ac00747
--- /dev/null
+++ b/Documentation/DocBook/media/pipeline.png.b64
@@ -0,0 +1,213 @@
1iVBORw0KGgoAAAANSUhEUgAAAlgAAAEcCAMAAAAsmToJAAAAAXNSR0IArs4c6QAAAwBQTFRFAAEA
2EAEBAwUBCgMBCAUKAgkMHQIDCwYXFQYDBgkVDwgFCAsHChASJwkDFA4NEg4TDhANHgwHDg8aExAG
3DBEjBBUZERMQCBNRDxU0ExcZFRgVFRcgCRkzHBcUDRdCNRELIxYTAx4mLBUMEBwcEhsiDxwhExsu
4Dh8XJRkQByAtDCMUHx4bACk0DSsiGScsFCRcJSUiGSZCDiwqGCg1LyQbIycpVhsPDy0wNyQVECxA
5PSIfCS84ADJCEStWRiIULSwpADdHCDkgEy1/BjorEjhADDhXCzZvITNPUysQDzs8MjIvCj04BT1O
6PDEoQjEhMDU3LzY9KTdFTTMYNzk2GD6PAEpfEUVjBExFCEpPB1ArK0FjKEVZYTscdDYXG0d5SkA5
7FEiJQUNAOURPAFhCA1RpP0ZJVEMvYUAyBFtRWkYnDlR+QEleAF1jkTojHlV1AGB4PlN5YU87cUws
8SVRXAGaBWVJKUlRRRVZlAG1PWFNSBGt5AmqVAG+NAHNpK17BWl9ifFs9KWmnSGZ0YGFfp1IuCnWj
9AHuKbWBXoVNAdGBPDniWAHujTWmLk14rAH+ch19XX2aRX2t8AIeLiWgvAIeeAIaqa21rOnehdW1m
10AImspWJYj2tLW3C0AIyvWXaNAo6xb3Z5dXZzent4WIKiQojAen+CkX1pcoSWcYDOoH9fp4E+Y4ur
11hoWCXIvGb4mut3xpqYNYnYdUO5rDyXxdjY6LYJqk0IRGb5azXZnMjJGUgJWqpJB8l5aUyJN4kKK1
12rZ6IYqzge6Xho6GdnaWpgqy6yZ9zvaR0hqzMk6rN5Jxxw6mF26lbq7C2pLTGwrCbs7Owvb+8zcGc
138rp42L2xsMbY3L+jtMfsz8W2nM/yx8jH0MfA7MWU78h/3crIyNTo4NLD6dK1z9bc1dbT3NXOv9vr
14/OKSwur8++Gw4uTh0ef78uPU+OPL3Ojz++bGyfH36evo/+3b6vT88vPw/feu1/v+//bb//nK/PnW
155f/+//ro+fv49/7///37//71//3//v/8sZeTnQAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAFY4AABWO
16AUTUBDsAAAAHdElNRQfaCRQPAiJBEFMLAAAgAElEQVR42u2dD3wU5bX300nWws50shA4lyTGikRE
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
diff --git a/Documentation/DocBook/v4l/.gitignore b/Documentation/DocBook/media/v4l/.gitignore
index d7ec32eafac..d7ec32eafac 100644
--- a/Documentation/DocBook/v4l/.gitignore
+++ b/Documentation/DocBook/media/v4l/.gitignore
diff --git a/Documentation/DocBook/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
index afc8a0dd260..d2eb79e41a0 100644
--- a/Documentation/DocBook/v4l/biblio.xml
+++ b/Documentation/DocBook/media/v4l/biblio.xml
@@ -128,6 +128,26 @@ url="http://www.ijg.org">http://www.ijg.org</ulink>)</corpauthor>
128 <subtitle>Version 1.02</subtitle> 128 <subtitle>Version 1.02</subtitle>
129 </biblioentry> 129 </biblioentry>
130 130
131 <biblioentry id="itu-t81">
132 <abbrev>ITU-T.81</abbrev>
133 <authorgroup>
134 <corpauthor>International Telecommunication Union
135(<ulink url="http://www.itu.int">http://www.itu.int</ulink>)</corpauthor>
136 </authorgroup>
137 <title>ITU-T Recommendation T.81
138"Information Technology &mdash; Digital Compression and Coding of Continous-Tone
139Still Images &mdash; Requirements and Guidelines"</title>
140 </biblioentry>
141
142 <biblioentry id="w3c-jpeg-jfif">
143 <abbrev>W3C JPEG JFIF</abbrev>
144 <authorgroup>
145 <corpauthor>The World Wide Web Consortium (<ulink
146url="http://www.w3.org/Graphics/JPEG">http://www.w3.org</ulink>)</corpauthor>
147 </authorgroup>
148 <title>JPEG JFIF</title>
149 </biblioentry>
150
131 <biblioentry id="smpte12m"> 151 <biblioentry id="smpte12m">
132 <abbrev>SMPTE&nbsp;12M</abbrev> 152 <abbrev>SMPTE&nbsp;12M</abbrev>
133 <authorgroup> 153 <authorgroup>
@@ -158,31 +178,92 @@ Signal - NTSC for Studio Applications"</title>
1581125-Line High-Definition Production"</title> 1781125-Line High-Definition Production"</title>
159 </biblioentry> 179 </biblioentry>
160 180
161 <biblioentry id="en50067"> 181 <biblioentry id="iec62106">
162 <abbrev>EN&nbsp;50067</abbrev> 182 <abbrev>IEC&nbsp;62106</abbrev>
163 <authorgroup> 183 <authorgroup>
164 <corpauthor>European Committee for Electrotechnical Standardization 184 <corpauthor>International Electrotechnical Commission
165(<ulink url="http://www.cenelec.eu">http://www.cenelec.eu</ulink>)</corpauthor> 185(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
166 </authorgroup> 186 </authorgroup>
167 <title>Specification of the radio data system (RDS) for VHF/FM sound broadcasting 187 <title>Specification of the radio data system (RDS) for VHF/FM sound broadcasting
168in the frequency range from 87,5 to 108,0 MHz</title> 188in the frequency range from 87,5 to 108,0 MHz</title>
169 </biblioentry> 189 </biblioentry>
170 190
171 <biblioentry id="nrsc4"> 191 <biblioentry id="nrsc4">
172 <abbrev>NRSC-4</abbrev> 192 <abbrev>NRSC-4-B</abbrev>
173 <authorgroup> 193 <authorgroup>
174 <corpauthor>National Radio Systems Committee 194 <corpauthor>National Radio Systems Committee
175(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor> 195(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor>
176 </authorgroup> 196 </authorgroup>
177 <title>NTSC-4: United States RBDS Standard</title> 197 <title>NRSC-4-B: United States RBDS Standard</title>
178 </biblioentry> 198 </biblioentry>
179 199
180 </bibliography> 200 <biblioentry id="iso12232">
201 <abbrev>ISO&nbsp;12232:2006</abbrev>
202 <authorgroup>
203 <corpauthor>International Organization for Standardization
204(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
205 </authorgroup>
206 <title>Photography &mdash; Digital still cameras &mdash; Determination
207 of exposure index, ISO speed ratings, standard output sensitivity, and
208 recommended exposure index</title>
209 </biblioentry>
181 210
182 <!-- 211 <biblioentry id="cea861">
183Local Variables: 212 <abbrev>CEA-861-E</abbrev>
184mode: sgml 213 <authorgroup>
185sgml-parent-document: "v4l2.sgml" 214 <corpauthor>Consumer Electronics Association
186indent-tabs-mode: nil 215(<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
187End: 216 </authorgroup>
188 --> 217 <title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title>
218 </biblioentry>
219
220 <biblioentry id="vesadmt">
221 <abbrev>VESA&nbsp;DMT</abbrev>
222 <authorgroup>
223 <corpauthor>Video Electronics Standards Association
224(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
225 </authorgroup>
226 <title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title>
227 </biblioentry>
228
229 <biblioentry id="vesaedid">
230 <abbrev>EDID</abbrev>
231 <authorgroup>
232 <corpauthor>Video Electronics Standards Association
233(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
234 </authorgroup>
235 <title>VESA Enhanced Extended Display Identification Data Standard</title>
236 <subtitle>Release A, Revision 2</subtitle>
237 </biblioentry>
238
239 <biblioentry id="hdcp">
240 <abbrev>HDCP</abbrev>
241 <authorgroup>
242 <corpauthor>Digital Content Protection LLC
243(<ulink url="http://www.digital-cp.com">http://www.digital-cp.com</ulink>)</corpauthor>
244 </authorgroup>
245 <title>High-bandwidth Digital Content Protection System</title>
246 <subtitle>Revision 1.3</subtitle>
247 </biblioentry>
248
249 <biblioentry id="hdmi">
250 <abbrev>HDMI</abbrev>
251 <authorgroup>
252 <corpauthor>HDMI Licensing LLC
253(<ulink url="http://www.hdmi.org">http://www.hdmi.org</ulink>)</corpauthor>
254 </authorgroup>
255 <title>High-Definition Multimedia Interface</title>
256 <subtitle>Specification Version 1.4a</subtitle>
257 </biblioentry>
258
259 <biblioentry id="dp">
260 <abbrev>DP</abbrev>
261 <authorgroup>
262 <corpauthor>Video Electronics Standards Association
263(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
264 </authorgroup>
265 <title>VESA DisplayPort Standard</title>
266 <subtitle>Version 1, Revision 2</subtitle>
267 </biblioentry>
268
269 </bibliography>
diff --git a/Documentation/DocBook/v4l/capture.c.xml b/Documentation/DocBook/media/v4l/capture.c.xml
index 1c5c49a2de5..1c5c49a2de5 100644
--- a/Documentation/DocBook/v4l/capture.c.xml
+++ b/Documentation/DocBook/media/v4l/capture.c.xml
diff --git a/Documentation/DocBook/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml
index 9028721438d..73c6847436c 100644
--- a/Documentation/DocBook/v4l/common.xml
+++ b/Documentation/DocBook/media/v4l/common.xml
@@ -236,7 +236,15 @@ important parts of the API.</para>
236 <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel 236 <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel
237device is compatible with this specification, and to query the <link 237device is compatible with this specification, and to query the <link
238linkend="devices">functions</link> and <link linkend="io">I/O 238linkend="devices">functions</link> and <link linkend="io">I/O
239methods</link> supported by the device. Other features can be queried 239methods</link> supported by the device.</para>
240
241 <para>Starting with kernel version 3.1, VIDIOC-QUERYCAP will return the
242V4L2 API version used by the driver, with generally matches the Kernel version.
243There's no need of using &VIDIOC-QUERYCAP; to check if an specific ioctl is
244supported, the V4L2 core now returns ENOIOCTLCMD if a driver doesn't provide
245support for an ioctl.</para>
246
247 <para>Other features can be queried
240by calling the respective ioctl, for example &VIDIOC-ENUMINPUT; 248by calling the respective ioctl, for example &VIDIOC-ENUMINPUT;
241to learn about the number, types and names of video connectors on the 249to learn about the number, types and names of video connectors on the
242device. Although abstraction is a major objective of this API, the 250device. Although abstraction is a major objective of this API, the
@@ -456,14 +464,14 @@ The <structfield>type</structfield> field of the respective
456<structfield>tuner</structfield> field contains the index number of 464<structfield>tuner</structfield> field contains the index number of
457the tuner.</para> 465the tuner.</para>
458 466
459 <para>Radio devices have exactly one tuner with index zero, no 467 <para>Radio input devices have exactly one tuner with index zero, no
460video inputs.</para> 468video inputs.</para>
461 469
462 <para>To query and change tuner properties applications use the 470 <para>To query and change tuner properties applications use the
463&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctl, respectively. The 471&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctl, respectively. The
464&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also 472&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also
465contains signal status information applicable when the tuner of the 473contains signal status information applicable when the tuner of the
466current video input, or a radio tuner is queried. Note that 474current video or radio input is queried. Note that
467<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner, 475<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner,
468when there is more than one at all. The tuner is solely determined by 476when there is more than one at all. The tuner is solely determined by
469the current video input. Drivers must support both ioctls and set the 477the current video input. Drivers must support both ioctls and set the
@@ -483,8 +491,17 @@ the modulator. The <structfield>type</structfield> field of the
483respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is 491respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is
484set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its 492set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its
485<structfield>modulator</structfield> field contains the index number 493<structfield>modulator</structfield> field contains the index number
486of the modulator. This specification does not define radio output 494of the modulator.</para>
487devices.</para> 495
496 <para>Radio output devices have exactly one modulator with index
497zero, no video outputs.</para>
498
499 <para>A video or radio device cannot support both a tuner and a
500modulator. Two separate device nodes will have to be used for such
501hardware, one that supports the tuner functionality and one that supports
502the modulator functionality. The reason is a limitation with the
503&VIDIOC-S-FREQUENCY; ioctl where you cannot specify whether the frequency
504is for a tuner or a modulator.</para>
488 505
489 <para>To query and change modulator properties applications use 506 <para>To query and change modulator properties applications use
490the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that 507the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that
@@ -547,7 +564,7 @@ automatically.</para>
547 <para>To query and select the standard used by the current video 564 <para>To query and select the standard used by the current video
548input or output applications call the &VIDIOC-G-STD; and 565input or output applications call the &VIDIOC-G-STD; and
549&VIDIOC-S-STD; ioctl, respectively. The <emphasis>received</emphasis> 566&VIDIOC-S-STD; ioctl, respectively. The <emphasis>received</emphasis>
550standard can be sensed with the &VIDIOC-QUERYSTD; ioctl. Note parameter of all these ioctls is a pointer to a &v4l2-std-id; type (a standard set), <emphasis>not</emphasis> an index into the standard enumeration.<footnote> 567standard can be sensed with the &VIDIOC-QUERYSTD; ioctl. Note that the parameter of all these ioctls is a pointer to a &v4l2-std-id; type (a standard set), <emphasis>not</emphasis> an index into the standard enumeration.<footnote>
551 <para>An alternative to the current scheme is to use pointers 568 <para>An alternative to the current scheme is to use pointers
552to indices as arguments of <constant>VIDIOC_G_STD</constant> and 569to indices as arguments of <constant>VIDIOC_G_STD</constant> and
553<constant>VIDIOC_S_STD</constant>, the &v4l2-input; and 570<constant>VIDIOC_S_STD</constant>, the &v4l2-input; and
@@ -571,30 +588,28 @@ switch to a standard by &v4l2-std-id;.</para>
571 </footnote> Drivers must implement all video standard ioctls 588 </footnote> Drivers must implement all video standard ioctls
572when the device has one or more video inputs or outputs.</para> 589when the device has one or more video inputs or outputs.</para>
573 590
574 <para>Special rules apply to USB cameras where the notion of video 591 <para>Special rules apply to devices such as USB cameras where the notion of video
575standards makes little sense. More generally any capture device, 592standards makes little sense. More generally for any capture or output device
576output devices accordingly, which is <itemizedlist> 593which is: <itemizedlist>
577 <listitem> 594 <listitem>
578 <para>incapable of capturing fields or frames at the nominal 595 <para>incapable of capturing fields or frames at the nominal
579rate of the video standard, or</para> 596rate of the video standard, or</para>
580 </listitem> 597 </listitem>
581 <listitem> 598 <listitem>
582 <para>where <link linkend="buffer">timestamps</link> refer 599 <para>that does not support the video standard formats at all.</para>
583to the instant the field or frame was received by the driver, not the
584capture time, or</para>
585 </listitem>
586 <listitem>
587 <para>where <link linkend="buffer">sequence numbers</link>
588refer to the frames received by the driver, not the captured
589frames.</para>
590 </listitem> 600 </listitem>
591 </itemizedlist> Here the driver shall set the 601 </itemizedlist> Here the driver shall set the
592<structfield>std</structfield> field of &v4l2-input; and &v4l2-output; 602<structfield>std</structfield> field of &v4l2-input; and &v4l2-output;
593to zero, the <constant>VIDIOC_G_STD</constant>, 603to zero and the <constant>VIDIOC_G_STD</constant>,
594<constant>VIDIOC_S_STD</constant>, 604<constant>VIDIOC_S_STD</constant>,
595<constant>VIDIOC_QUERYSTD</constant> and 605<constant>VIDIOC_QUERYSTD</constant> and
596<constant>VIDIOC_ENUMSTD</constant> ioctls shall return the 606<constant>VIDIOC_ENUMSTD</constant> ioctls shall return the
597&EINVAL;.<footnote> 607&ENOTTY;.<footnote>
608 <para>See <xref linkend="buffer" /> for a rationale.</para>
609 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
610<xref linkend="output-capabilities"/> flags to determine whether the video standard ioctls
611are available for the device.</para>
612&ENOTTY;.
598 <para>See <xref linkend="buffer" /> for a rationale. Probably 613 <para>See <xref linkend="buffer" /> for a rationale. Probably
599even USB cameras follow some well known video standard. It might have 614even USB cameras follow some well known video standard. It might have
600been better to explicitly indicate elsewhere if a device cannot live 615been better to explicitly indicate elsewhere if a device cannot live
@@ -609,9 +624,9 @@ up to normal expectations, instead of this exception.</para>
609&v4l2-standard; standard; 624&v4l2-standard; standard;
610 625
611if (-1 == ioctl (fd, &VIDIOC-G-STD;, &amp;std_id)) { 626if (-1 == ioctl (fd, &VIDIOC-G-STD;, &amp;std_id)) {
612 /* Note when VIDIOC_ENUMSTD always returns EINVAL this 627 /* Note when VIDIOC_ENUMSTD always returns ENOTTY this
613 is no video device or it falls under the USB exception, 628 is no video device or it falls under the USB exception,
614 and VIDIOC_G_STD returning EINVAL is no error. */ 629 and VIDIOC_G_STD returning ENOTTY is no error. */
615 630
616 perror ("VIDIOC_G_STD"); 631 perror ("VIDIOC_G_STD");
617 exit (EXIT_FAILURE); 632 exit (EXIT_FAILURE);
@@ -716,41 +731,49 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &amp;std_id)) {
716} 731}
717 </programlisting> 732 </programlisting>
718 </example> 733 </example>
734 </section>
719 <section id="dv-timings"> 735 <section id="dv-timings">
720 <title>Digital Video (DV) Timings</title> 736 <title>Digital Video (DV) Timings</title>
721 <para> 737 <para>
722 The video standards discussed so far has been dealing with Analog TV and the 738 The video standards discussed so far have been dealing with Analog TV and the
723corresponding video timings. Today there are many more different hardware interfaces 739corresponding video timings. Today there are many more different hardware interfaces
724such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry 740such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
725video signals and there is a need to extend the API to select the video timings 741video signals and there is a need to extend the API to select the video timings
726for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to 742for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
727the limited bits available, a new set of IOCTLs is added to set/get video timings at 743the limited bits available, a new set of IOCTLs was added to set/get video timings at
728the input and output: </para><itemizedlist> 744the input and output: </para><itemizedlist>
729 <listitem> 745 <listitem>
730 <para>DV Presets: Digital Video (DV) presets. These are IDs representing a 746 <para>DV Timings: This will allow applications to define detailed
747video timings for the interface. This includes parameters such as width, height,
748polarities, frontporch, backporch etc. The <filename>linux/v4l2-dv-timings.h</filename>
749header can be used to get the timings of the formats in the <xref linkend="cea861" /> and
750<xref linkend="vesadmt" /> standards.
751 </para>
752 </listitem>
753 <listitem>
754 <para>DV Presets: Digital Video (DV) presets (<emphasis role="bold">deprecated</emphasis>).
755 These are IDs representing a
731video timing at the input/output. Presets are pre-defined timings implemented 756video timing at the input/output. Presets are pre-defined timings implemented
732by the hardware according to video standards. A __u32 data type is used to represent 757by the hardware according to video standards. A __u32 data type is used to represent
733a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions 758a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
734to support as many different presets as needed.</para> 759to support as many different presets as needed. This API is deprecated in favor of the DV Timings
735 </listitem> 760API.</para>
736 <listitem>
737 <para>Custom DV Timings: This will allow applications to define more detailed
738custom video timings for the interface. This includes parameters such as width, height,
739polarities, frontporch, backporch etc.
740 </para>
741 </listitem> 761 </listitem>
742 </itemizedlist> 762 </itemizedlist>
763 <para>To enumerate and query the attributes of the DV timings supported by a device,
764 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
765 To set DV timings for the device, applications use the
766&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
767&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
768use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
743 <para>To enumerate and query the attributes of DV presets supported by a device, 769 <para>To enumerate and query the attributes of DV presets supported by a device,
744applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset, 770applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
745applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the 771applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
746&VIDIOC-S-DV-PRESET; ioctl.</para> 772&VIDIOC-S-DV-PRESET; ioctl. To detect the preset as seen by the video receiver applications
747 <para>To set custom DV timings for the device, applications use the 773use the &VIDIOC-QUERY-DV-PRESET; ioctl.</para>
748&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the
749&VIDIOC-G-DV-TIMINGS; ioctl.</para>
750 <para>Applications can make use of the <xref linkend="input-capabilities" /> and 774 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
751<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the 775<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the
752video timings for the device.</para> 776video timings for the device.</para>
753 </section>
754 </section> 777 </section>
755 778
756 &sub-controls; 779 &sub-controls;
@@ -1160,6 +1183,8 @@ dheight = format.fmt.pix.height;
1160 </section> 1183 </section>
1161 </section> 1184 </section>
1162 1185
1186 &sub-selection-api;
1187
1163 <section id="streaming-par"> 1188 <section id="streaming-par">
1164 <title>Streaming Parameters</title> 1189 <title>Streaming Parameters</title>
1165 1190
@@ -1187,11 +1212,3 @@ separate parameters for input and output devices.</para>
1187 <para>These ioctls are optional, drivers need not implement 1212 <para>These ioctls are optional, drivers need not implement
1188them. If so, they return the &EINVAL;.</para> 1213them. If so, they return the &EINVAL;.</para>
1189 </section> 1214 </section>
1190
1191 <!--
1192Local Variables:
1193mode: sgml
1194sgml-parent-document: "v4l2.sgml"
1195indent-tabs-mode: nil
1196End:
1197 -->
diff --git a/Documentation/DocBook/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index 9f7cd4f2579..3dd9e78815d 100644
--- a/Documentation/DocBook/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -10,12 +10,10 @@ driver writers to port or update their code.</para>
10 <para>The Video For Linux API was first introduced in Linux 2.1 to 10 <para>The Video For Linux API was first introduced in Linux 2.1 to
11unify and replace various TV and radio device related interfaces, 11unify and replace various TV and radio device related interfaces,
12developed independently by driver writers in prior years. Starting 12developed independently by driver writers in prior years. Starting
13with Linux 2.5 the much improved V4L2 API replaces the V4L API, 13with Linux 2.5 the much improved V4L2 API replaces the V4L API.
14although existing drivers will continue to support V4L applications in 14The support for the old V4L calls were removed from Kernel, but the
15the future, either directly or through the V4L2 compatibility layer in 15library <xref linkend="libv4l" /> supports the conversion of a V4L
16the <filename>videodev</filename> kernel module translating ioctls on 16API system call into a V4L2 one.</para>
17the fly. For a transition period not all drivers will support the V4L2
18API.</para>
19 17
20 <section> 18 <section>
21 <title>Opening and Closing Devices</title> 19 <title>Opening and Closing Devices</title>
@@ -84,12 +82,7 @@ not compatible with V4L or V4L2.</para> </footnote>,
84device file. V4L2 drivers <emphasis>may</emphasis> support multiple 82device file. V4L2 drivers <emphasis>may</emphasis> support multiple
85opens, see <xref linkend="open" /> for details and consequences.</para> 83opens, see <xref linkend="open" /> for details and consequences.</para>
86 84
87 <para>V4L drivers respond to V4L2 ioctls with an &EINVAL;. The 85 <para>V4L drivers respond to V4L2 ioctls with an &EINVAL;.</para>
88compatibility layer in the V4L2 <filename>videodev</filename> module
89can translate V4L ioctl requests to their V4L2 counterpart, however a
90V4L2 driver usually needs more preparation to become fully V4L
91compatible. This is covered in more detail in <xref
92 linkend="driver" />.</para>
93 </section> 86 </section>
94 87
95 <section> 88 <section>
@@ -451,7 +444,7 @@ linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR24</constant></link></para></entr
451 <entry><para><link 444 <entry><para><link
452linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR32</constant></link><footnote> 445linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR32</constant></link><footnote>
453 <para>Presumably all V4L RGB formats are 446 <para>Presumably all V4L RGB formats are
454little-endian, although some drivers might interpret them according to machine endianess. V4L2 defines little-endian, big-endian and red/blue 447little-endian, although some drivers might interpret them according to machine endianness. V4L2 defines little-endian, big-endian and red/blue
455swapped variants. For details see <xref linkend="pixfmt-rgb" />.</para> 448swapped variants. For details see <xref linkend="pixfmt-rgb" />.</para>
456 </footnote></para></entry> 449 </footnote></para></entry>
457 </row> 450 </row>
@@ -830,7 +823,7 @@ standard); 35468950&nbsp;Hz PAL and SECAM (625-line standards)</entry>
830 <row> 823 <row>
831 <entry>sample_format</entry> 824 <entry>sample_format</entry>
832 <entry>V4L2_PIX_FMT_GREY. The last four bytes (a 825 <entry>V4L2_PIX_FMT_GREY. The last four bytes (a
833machine endianess integer) contain a frame counter.</entry> 826machine endianness integer) contain a frame counter.</entry>
834 </row> 827 </row>
835 <row> 828 <row>
836 <entry>start[]</entry> 829 <entry>start[]</entry>
@@ -1089,7 +1082,7 @@ until the time in the timestamp field has arrived. I would like to
1089follow SGI's lead, and adopt a multimedia timestamping system like 1082follow SGI's lead, and adopt a multimedia timestamping system like
1090their UST (Unadjusted System Time). See 1083their UST (Unadjusted System Time). See
1091http://web.archive.org/web/*/http://reality.sgi.com 1084http://web.archive.org/web/*/http://reality.sgi.com
1092/cpirazzi_engr/lg/time/intro.html. 1085/cpirazzi_engr/lg/time/intro.html.
1093UST uses timestamps that are 64-bit signed integers 1086UST uses timestamps that are 64-bit signed integers
1094(not struct timeval's) and given in nanosecond units. The UST clock 1087(not struct timeval's) and given in nanosecond units. The UST clock
1095starts at zero when the system is booted and runs continuously and 1088starts at zero when the system is booted and runs continuously and
@@ -1483,7 +1476,7 @@ follows.<informaltable>
1483 </row> 1476 </row>
1484 <row> 1477 <row>
1485 <entry><constant>V4L2_BUF_TYPE_PRIVATE_BASE</constant></entry> 1478 <entry><constant>V4L2_BUF_TYPE_PRIVATE_BASE</constant></entry>
1486 <entry><constant>V4L2_BUF_TYPE_PRIVATE</constant></entry> 1479 <entry><constant>V4L2_BUF_TYPE_PRIVATE</constant> (but this is deprecated)</entry>
1487 </row> 1480 </row>
1488 </tbody> 1481 </tbody>
1489 </tgroup> 1482 </tgroup>
@@ -2367,6 +2360,122 @@ that used it. It was originally scheduled for removal in 2.6.35.
2367 </listitem> 2360 </listitem>
2368 </orderedlist> 2361 </orderedlist>
2369 </section> 2362 </section>
2363 <section>
2364 <title>V4L2 in Linux 3.1</title>
2365 <orderedlist>
2366 <listitem>
2367 <para>VIDIOC_QUERYCAP now returns a per-subsystem version instead of a per-driver one.</para>
2368 <para>Standardize an error code for invalid ioctl.</para>
2369 <para>Added V4L2_CTRL_TYPE_BITMASK.</para>
2370 </listitem>
2371 </orderedlist>
2372 </section>
2373 <section>
2374 <title>V4L2 in Linux 3.2</title>
2375 <orderedlist>
2376 <listitem>
2377 <para>V4L2_CTRL_FLAG_VOLATILE was added to signal volatile controls to userspace.</para>
2378 </listitem>
2379 <listitem>
2380 <para>Add selection API for extended control over cropping
2381 and composing. Does not affect the compatibility of current
2382 drivers and applications. See <link
2383 linkend="selection-api"> selection API </link> for
2384 details.</para>
2385 </listitem>
2386 </orderedlist>
2387 </section>
2388
2389 <section>
2390 <title>V4L2 in Linux 3.3</title>
2391 <orderedlist>
2392 <listitem>
2393 <para>Added <constant>V4L2_CID_ALPHA_COMPONENT</constant> control
2394 to the <link linkend="control">User controls class</link>.
2395 </para>
2396 </listitem>
2397 <listitem>
2398 <para>Added the device_caps field to struct v4l2_capabilities and added the new
2399 V4L2_CAP_DEVICE_CAPS capability.</para>
2400 </listitem>
2401 </orderedlist>
2402 </section>
2403
2404 <section>
2405 <title>V4L2 in Linux 3.4</title>
2406 <orderedlist>
2407 <listitem>
2408 <para>Added <link linkend="jpeg-controls">JPEG compression control
2409 class</link>.</para>
2410 </listitem>
2411 <listitem>
2412 <para>Extended the DV Timings API:
2413 &VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2414 &VIDIOC-DV-TIMINGS-CAP;.</para>
2415 </listitem>
2416 </orderedlist>
2417 </section>
2418
2419 <section>
2420 <title>V4L2 in Linux 3.5</title>
2421 <orderedlist>
2422 <listitem>
2423 <para>Added integer menus, the new type will be
2424 V4L2_CTRL_TYPE_INTEGER_MENU.</para>
2425 </listitem>
2426 <listitem>
2427 <para>Added selection API for V4L2 subdev interface:
2428 &VIDIOC-SUBDEV-G-SELECTION; and
2429 &VIDIOC-SUBDEV-S-SELECTION;.</para>
2430 </listitem>
2431 <listitem>
2432 <para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>,
2433 <constant>V4L2_COLORFX_ART_FREEZE</constant>,
2434 <constant>V4L2_COLORFX_AQUA</constant>,
2435 <constant>V4L2_COLORFX_SILHOUETTE</constant>,
2436 <constant>V4L2_COLORFX_SOLARIZATION</constant>,
2437 <constant>V4L2_COLORFX_VIVID</constant> and
2438 <constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items
2439 to the <constant>V4L2_CID_COLORFX</constant> control.</para>
2440 </listitem>
2441 <listitem>
2442 <para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para>
2443 </listitem>
2444 <listitem>
2445 <para> Added camera controls <constant>V4L2_CID_AUTO_EXPOSURE_BIAS</constant>,
2446 <constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>,
2447 <constant>V4L2_CID_IMAGE_STABILIZATION</constant>,
2448 <constant>V4L2_CID_ISO_SENSITIVITY</constant>,
2449 <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>,
2450 <constant>V4L2_CID_EXPOSURE_METERING</constant>,
2451 <constant>V4L2_CID_SCENE_MODE</constant>,
2452 <constant>V4L2_CID_3A_LOCK</constant>,
2453 <constant>V4L2_CID_AUTO_FOCUS_START</constant>,
2454 <constant>V4L2_CID_AUTO_FOCUS_STOP</constant>,
2455 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> and
2456 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>.
2457 </para>
2458 </listitem>
2459 </orderedlist>
2460 </section>
2461
2462 <section>
2463 <title>V4L2 in Linux 3.6</title>
2464 <orderedlist>
2465 <listitem>
2466 <para>Replaced <structfield>input</structfield> in
2467 <structname>v4l2_buffer</structname> by
2468 <structfield>reserved2</structfield> and removed
2469 <constant>V4L2_BUF_FLAG_INPUT</constant>.</para>
2470 </listitem>
2471 <listitem>
2472 <para>Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE capabilities.</para>
2473 </listitem>
2474 <listitem>
2475 <para>Added support for frequency band enumerations: &VIDIOC-ENUM-FREQ-BANDS;.</para>
2476 </listitem>
2477 </orderedlist>
2478 </section>
2370 2479
2371 <section id="other"> 2480 <section id="other">
2372 <title>Relation of V4L2 to other Linux multimedia APIs</title> 2481 <title>Relation of V4L2 to other Linux multimedia APIs</title>
@@ -2446,31 +2555,43 @@ and may change in the future.</para>
2446 <para>Video Output Overlay (OSD) Interface, <xref 2555 <para>Video Output Overlay (OSD) Interface, <xref
2447 linkend="osd" />.</para> 2556 linkend="osd" />.</para>
2448 </listitem> 2557 </listitem>
2449 <listitem> 2558 <listitem>
2450 <para><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant>, 2559 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER;
2451 &v4l2-buf-type;, <xref linkend="v4l2-buf-type" />.</para> 2560ioctls.</para>
2452 </listitem> 2561 </listitem>
2453 <listitem> 2562 <listitem>
2454 <para><constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant>, 2563 <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para>
2455&VIDIOC-QUERYCAP; ioctl, <xref linkend="device-capabilities" />.</para>
2456 </listitem> 2564 </listitem>
2457 <listitem> 2565 <listitem>
2458 <para>&VIDIOC-ENUM-FRAMESIZES; and 2566 <para>&VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2459&VIDIOC-ENUM-FRAMEINTERVALS; ioctls.</para> 2567 &VIDIOC-DV-TIMINGS-CAP; ioctls.</para>
2460 </listitem> 2568 </listitem>
2461 <listitem> 2569 <listitem>
2462 <para>&VIDIOC-G-ENC-INDEX; ioctl.</para> 2570 <para>Flash API. <xref linkend="flash-controls" /></para>
2463 </listitem> 2571 </listitem>
2464 <listitem> 2572 <listitem>
2465 <para>&VIDIOC-ENCODER-CMD; and &VIDIOC-TRY-ENCODER-CMD; 2573 <para>&VIDIOC-CREATE-BUFS; and &VIDIOC-PREPARE-BUF; ioctls.</para>
2466ioctls.</para>
2467 </listitem> 2574 </listitem>
2468 <listitem> 2575 <listitem>
2469 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER; 2576 <para>Selection API. <xref linkend="selection-api" /></para>
2470ioctls.</para>
2471 </listitem> 2577 </listitem>
2472 <listitem> 2578 <listitem>
2473 <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> 2579 <para>Sub-device selection API: &VIDIOC-SUBDEV-G-SELECTION;
2580 and &VIDIOC-SUBDEV-S-SELECTION; ioctls.</para>
2581 </listitem>
2582 <listitem>
2583 <para>Support for frequency band enumeration: &VIDIOC-ENUM-FREQ-BANDS; ioctl.</para>
2584 </listitem>
2585 <listitem>
2586 <para>Vendor and device specific media bus pixel formats.
2587 <xref linkend="v4l2-mbus-vendor-spec-fmts" />.</para>
2588 </listitem>
2589 <listitem>
2590 <para>Importing DMABUF file descriptors as a new IO method described
2591 in <xref linkend="dmabuf" />.</para>
2592 </listitem>
2593 <listitem>
2594 <para>Exporting DMABUF files using &VIDIOC-EXPBUF; ioctl.</para>
2474 </listitem> 2595 </listitem>
2475 </itemizedlist> 2596 </itemizedlist>
2476 </section> 2597 </section>
@@ -2487,14 +2608,17 @@ interfaces and should not be implemented in new drivers.</para>
2487<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls, 2608<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls,
2488<xref linkend="extended-controls" />.</para> 2609<xref linkend="extended-controls" />.</para>
2489 </listitem> 2610 </listitem>
2611 <listitem>
2612 <para>&VIDIOC-G-DV-PRESET;, &VIDIOC-S-DV-PRESET;, &VIDIOC-ENUM-DV-PRESETS; and
2613 &VIDIOC-QUERY-DV-PRESET; ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para>
2614 </listitem>
2615 <listitem>
2616 <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and
2617 <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctls. Use
2618 <constant>VIDIOC_SUBDEV_G_SELECTION</constant> and
2619 <constant>VIDIOC_SUBDEV_S_SELECTION</constant>, <xref
2620 linkend="vidioc-subdev-g-selection" />.</para>
2621 </listitem>
2490 </itemizedlist> 2622 </itemizedlist>
2491 </section> 2623 </section>
2492 </section> 2624 </section>
2493
2494 <!--
2495Local Variables:
2496mode: sgml
2497sgml-parent-document: "v4l2.sgml"
2498indent-tabs-mode: nil
2499End:
2500 -->
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
new file mode 100644
index 00000000000..7fe5be1d3bb
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -0,0 +1,4713 @@
1 <section id="control">
2 <title>User Controls</title>
3
4 <para>Devices typically have a number of user-settable controls
5such as brightness, saturation and so on, which would be presented to
6the user on a graphical user interface. But, different devices
7will have different controls available, and furthermore, the range of
8possible values, and the default value will vary from device to
9device. The control ioctls provide the information and a mechanism to
10create a nice user interface for these controls that will work
11correctly with any device.</para>
12
13 <para>All controls are accessed using an ID value. V4L2 defines
14several IDs for specific purposes. Drivers can also implement their
15own custom controls using <constant>V4L2_CID_PRIVATE_BASE</constant>
16and higher values. The pre-defined control IDs have the prefix
17<constant>V4L2_CID_</constant>, and are listed in <xref
18linkend="control-id" />. The ID is used when querying the attributes of
19a control, and when getting or setting the current value.</para>
20
21 <para>Generally applications should present controls to the user
22without assumptions about their purpose. Each control comes with a
23name string the user is supposed to understand. When the purpose is
24non-intuitive the driver writer should provide a user manual, a user
25interface plug-in or a driver specific panel application. Predefined
26IDs were introduced to change a few controls programmatically, for
27example to mute a device during a channel switch.</para>
28
29 <para>Drivers may enumerate different controls after switching
30the current video input or output, tuner or modulator, or audio input
31or output. Different in the sense of other bounds, another default and
32current value, step size or other menu items. A control with a certain
33<emphasis>custom</emphasis> ID can also change name and
34type.<footnote>
35 <para>It will be more convenient for applications if drivers
36make use of the <constant>V4L2_CTRL_FLAG_DISABLED</constant> flag, but
37that was never required.</para>
38 </footnote> Control values are stored globally, they do not
39change when switching except to stay within the reported bounds. They
40also do not change &eg; when the device is opened or closed, when the
41tuner radio frequency is changed or generally never without
42application request. Since V4L2 specifies no event mechanism, panel
43applications intended to cooperate with other panel applications (be
44they built into a larger application, as a TV viewer) may need to
45regularly poll control values to update their user
46interface.<footnote>
47 <para>Applications could call an ioctl to request events.
48After another process called &VIDIOC-S-CTRL; or another ioctl changing
49shared properties the &func-select; function would indicate
50readability until any ioctl (querying the properties) is
51called.</para>
52 </footnote></para>
53
54 <para>
55 All controls use machine endianness.
56 </para>
57
58 <table pgwide="1" frame="none" id="control-id">
59 <title>Control IDs</title>
60 <tgroup cols="3">
61 &cs-def;
62 <thead>
63 <row>
64 <entry>ID</entry>
65 <entry>Type</entry>
66 <entry>Description</entry>
67 </row>
68 </thead>
69 <tbody valign="top">
70 <row>
71 <entry><constant>V4L2_CID_BASE</constant></entry>
72 <entry></entry>
73 <entry>First predefined ID, equal to
74<constant>V4L2_CID_BRIGHTNESS</constant>.</entry>
75 </row>
76 <row>
77 <entry><constant>V4L2_CID_USER_BASE</constant></entry>
78 <entry></entry>
79 <entry>Synonym of <constant>V4L2_CID_BASE</constant>.</entry>
80 </row>
81 <row>
82 <entry><constant>V4L2_CID_BRIGHTNESS</constant></entry>
83 <entry>integer</entry>
84 <entry>Picture brightness, or more precisely, the black
85level.</entry>
86 </row>
87 <row>
88 <entry><constant>V4L2_CID_CONTRAST</constant></entry>
89 <entry>integer</entry>
90 <entry>Picture contrast or luma gain.</entry>
91 </row>
92 <row>
93 <entry><constant>V4L2_CID_SATURATION</constant></entry>
94 <entry>integer</entry>
95 <entry>Picture color saturation or chroma gain.</entry>
96 </row>
97 <row>
98 <entry><constant>V4L2_CID_HUE</constant></entry>
99 <entry>integer</entry>
100 <entry>Hue or color balance.</entry>
101 </row>
102 <row>
103 <entry><constant>V4L2_CID_AUDIO_VOLUME</constant></entry>
104 <entry>integer</entry>
105 <entry>Overall audio volume. Note some drivers also
106provide an OSS or ALSA mixer interface.</entry>
107 </row>
108 <row>
109 <entry><constant>V4L2_CID_AUDIO_BALANCE</constant></entry>
110 <entry>integer</entry>
111 <entry>Audio stereo balance. Minimum corresponds to all
112the way left, maximum to right.</entry>
113 </row>
114 <row>
115 <entry><constant>V4L2_CID_AUDIO_BASS</constant></entry>
116 <entry>integer</entry>
117 <entry>Audio bass adjustment.</entry>
118 </row>
119 <row>
120 <entry><constant>V4L2_CID_AUDIO_TREBLE</constant></entry>
121 <entry>integer</entry>
122 <entry>Audio treble adjustment.</entry>
123 </row>
124 <row>
125 <entry><constant>V4L2_CID_AUDIO_MUTE</constant></entry>
126 <entry>boolean</entry>
127 <entry>Mute audio, &ie; set the volume to zero, however
128without affecting <constant>V4L2_CID_AUDIO_VOLUME</constant>. Like
129ALSA drivers, V4L2 drivers must mute at load time to avoid excessive
130noise. Actually the entire device should be reset to a low power
131consumption state.</entry>
132 </row>
133 <row>
134 <entry><constant>V4L2_CID_AUDIO_LOUDNESS</constant></entry>
135 <entry>boolean</entry>
136 <entry>Loudness mode (bass boost).</entry>
137 </row>
138 <row>
139 <entry><constant>V4L2_CID_BLACK_LEVEL</constant></entry>
140 <entry>integer</entry>
141 <entry>Another name for brightness (not a synonym of
142<constant>V4L2_CID_BRIGHTNESS</constant>). This control is deprecated
143and should not be used in new drivers and applications.</entry>
144 </row>
145 <row>
146 <entry><constant>V4L2_CID_AUTO_WHITE_BALANCE</constant></entry>
147 <entry>boolean</entry>
148 <entry>Automatic white balance (cameras).</entry>
149 </row>
150 <row>
151 <entry><constant>V4L2_CID_DO_WHITE_BALANCE</constant></entry>
152 <entry>button</entry>
153 <entry>This is an action control. When set (the value is
154ignored), the device will do a white balance and then hold the current
155setting. Contrast this with the boolean
156<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant>, which, when
157activated, keeps adjusting the white balance.</entry>
158 </row>
159 <row>
160 <entry><constant>V4L2_CID_RED_BALANCE</constant></entry>
161 <entry>integer</entry>
162 <entry>Red chroma balance.</entry>
163 </row>
164 <row>
165 <entry><constant>V4L2_CID_BLUE_BALANCE</constant></entry>
166 <entry>integer</entry>
167 <entry>Blue chroma balance.</entry>
168 </row>
169 <row>
170 <entry><constant>V4L2_CID_GAMMA</constant></entry>
171 <entry>integer</entry>
172 <entry>Gamma adjust.</entry>
173 </row>
174 <row>
175 <entry><constant>V4L2_CID_WHITENESS</constant></entry>
176 <entry>integer</entry>
177 <entry>Whiteness for grey-scale devices. This is a synonym
178for <constant>V4L2_CID_GAMMA</constant>. This control is deprecated
179and should not be used in new drivers and applications.</entry>
180 </row>
181 <row>
182 <entry><constant>V4L2_CID_EXPOSURE</constant></entry>
183 <entry>integer</entry>
184 <entry>Exposure (cameras). [Unit?]</entry>
185 </row>
186 <row>
187 <entry><constant>V4L2_CID_AUTOGAIN</constant></entry>
188 <entry>boolean</entry>
189 <entry>Automatic gain/exposure control.</entry>
190 </row>
191 <row>
192 <entry><constant>V4L2_CID_GAIN</constant></entry>
193 <entry>integer</entry>
194 <entry>Gain control.</entry>
195 </row>
196 <row>
197 <entry><constant>V4L2_CID_HFLIP</constant></entry>
198 <entry>boolean</entry>
199 <entry>Mirror the picture horizontally.</entry>
200 </row>
201 <row>
202 <entry><constant>V4L2_CID_VFLIP</constant></entry>
203 <entry>boolean</entry>
204 <entry>Mirror the picture vertically.</entry>
205 </row>
206 <row>
207 <entry><constant>V4L2_CID_HCENTER_DEPRECATED</constant> (formerly <constant>V4L2_CID_HCENTER</constant>)</entry>
208 <entry>integer</entry>
209 <entry>Horizontal image centering. This control is
210deprecated. New drivers and applications should use the <link
211linkend="camera-controls">Camera class controls</link>
212<constant>V4L2_CID_PAN_ABSOLUTE</constant>,
213<constant>V4L2_CID_PAN_RELATIVE</constant> and
214<constant>V4L2_CID_PAN_RESET</constant> instead.</entry>
215 </row>
216 <row>
217 <entry><constant>V4L2_CID_VCENTER_DEPRECATED</constant>
218 (formerly <constant>V4L2_CID_VCENTER</constant>)</entry>
219 <entry>integer</entry>
220 <entry>Vertical image centering. Centering is intended to
221<emphasis>physically</emphasis> adjust cameras. For image cropping see
222<xref linkend="crop" />, for clipping <xref linkend="overlay" />. This
223control is deprecated. New drivers and applications should use the
224<link linkend="camera-controls">Camera class controls</link>
225<constant>V4L2_CID_TILT_ABSOLUTE</constant>,
226<constant>V4L2_CID_TILT_RELATIVE</constant> and
227<constant>V4L2_CID_TILT_RESET</constant> instead.</entry>
228 </row>
229 <row id="v4l2-power-line-frequency">
230 <entry><constant>V4L2_CID_POWER_LINE_FREQUENCY</constant></entry>
231 <entry>enum</entry>
232 <entry>Enables a power line frequency filter to avoid
233flicker. Possible values for <constant>enum v4l2_power_line_frequency</constant> are:
234<constant>V4L2_CID_POWER_LINE_FREQUENCY_DISABLED</constant> (0),
235<constant>V4L2_CID_POWER_LINE_FREQUENCY_50HZ</constant> (1),
236<constant>V4L2_CID_POWER_LINE_FREQUENCY_60HZ</constant> (2) and
237<constant>V4L2_CID_POWER_LINE_FREQUENCY_AUTO</constant> (3).</entry>
238 </row>
239 <row>
240 <entry><constant>V4L2_CID_HUE_AUTO</constant></entry>
241 <entry>boolean</entry>
242 <entry>Enables automatic hue control by the device. The
243effect of setting <constant>V4L2_CID_HUE</constant> while automatic
244hue control is enabled is undefined, drivers should ignore such
245request.</entry>
246 </row>
247 <row>
248 <entry><constant>V4L2_CID_WHITE_BALANCE_TEMPERATURE</constant></entry>
249 <entry>integer</entry>
250 <entry>This control specifies the white balance settings
251as a color temperature in Kelvin. A driver should have a minimum of
2522800 (incandescent) to 6500 (daylight). For more information about
253color temperature see <ulink
254url="http://en.wikipedia.org/wiki/Color_temperature">Wikipedia</ulink>.</entry>
255 </row>
256 <row>
257 <entry><constant>V4L2_CID_SHARPNESS</constant></entry>
258 <entry>integer</entry>
259 <entry>Adjusts the sharpness filters in a camera. The
260minimum value disables the filters, higher values give a sharper
261picture.</entry>
262 </row>
263 <row>
264 <entry><constant>V4L2_CID_BACKLIGHT_COMPENSATION</constant></entry>
265 <entry>integer</entry>
266 <entry>Adjusts the backlight compensation in a camera. The
267minimum value disables backlight compensation.</entry>
268 </row>
269 <row>
270 <entry><constant>V4L2_CID_CHROMA_AGC</constant></entry>
271 <entry>boolean</entry>
272 <entry>Chroma automatic gain control.</entry>
273 </row>
274 <row>
275 <entry><constant>V4L2_CID_CHROMA_GAIN</constant></entry>
276 <entry>integer</entry>
277 <entry>Adjusts the Chroma gain control (for use when chroma AGC
278 is disabled).</entry>
279 </row>
280 <row>
281 <entry><constant>V4L2_CID_COLOR_KILLER</constant></entry>
282 <entry>boolean</entry>
283 <entry>Enable the color killer (&ie; force a black &amp; white image in case of a weak video signal).</entry>
284 </row>
285 <row id="v4l2-colorfx">
286 <entry><constant>V4L2_CID_COLORFX</constant></entry>
287 <entry>enum</entry>
288 <entry>Selects a color effect. The following values are defined:
289 </entry>
290 </row><row>
291 <entry></entry>
292 <entry></entry>
293 <entrytbl spanname="descr" cols="2">
294 <tbody valign="top">
295 <row>
296 <entry><constant>V4L2_COLORFX_NONE</constant>&nbsp;</entry>
297 <entry>Color effect is disabled.</entry>
298 </row>
299 <row>
300 <entry><constant>V4L2_COLORFX_ANTIQUE</constant>&nbsp;</entry>
301 <entry>An aging (old photo) effect.</entry>
302 </row>
303 <row>
304 <entry><constant>V4L2_COLORFX_ART_FREEZE</constant>&nbsp;</entry>
305 <entry>Frost color effect.</entry>
306 </row>
307 <row>
308 <entry><constant>V4L2_COLORFX_AQUA</constant>&nbsp;</entry>
309 <entry>Water color, cool tone.</entry>
310 </row>
311 <row>
312 <entry><constant>V4L2_COLORFX_BW</constant>&nbsp;</entry>
313 <entry>Black and white.</entry>
314 </row>
315 <row>
316 <entry><constant>V4L2_COLORFX_EMBOSS</constant>&nbsp;</entry>
317 <entry>Emboss, the highlights and shadows replace light/dark boundaries
318 and low contrast areas are set to a gray background.</entry>
319 </row>
320 <row>
321 <entry><constant>V4L2_COLORFX_GRASS_GREEN</constant>&nbsp;</entry>
322 <entry>Grass green.</entry>
323 </row>
324 <row>
325 <entry><constant>V4L2_COLORFX_NEGATIVE</constant>&nbsp;</entry>
326 <entry>Negative.</entry>
327 </row>
328 <row>
329 <entry><constant>V4L2_COLORFX_SEPIA</constant>&nbsp;</entry>
330 <entry>Sepia tone.</entry>
331 </row>
332 <row>
333 <entry><constant>V4L2_COLORFX_SKETCH</constant>&nbsp;</entry>
334 <entry>Sketch.</entry>
335 </row>
336 <row>
337 <entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant>&nbsp;</entry>
338 <entry>Skin whiten.</entry>
339 </row>
340 <row>
341 <entry><constant>V4L2_COLORFX_SKY_BLUE</constant>&nbsp;</entry>
342 <entry>Sky blue.</entry>
343 </row>
344 <row>
345 <entry><constant>V4L2_COLORFX_SOLARIZATION</constant>&nbsp;</entry>
346 <entry>Solarization, the image is partially reversed in tone,
347 only color values above or below a certain threshold are inverted.
348 </entry>
349 </row>
350 <row>
351 <entry><constant>V4L2_COLORFX_SILHOUETTE</constant>&nbsp;</entry>
352 <entry>Silhouette (outline).</entry>
353 </row>
354 <row>
355 <entry><constant>V4L2_COLORFX_VIVID</constant>&nbsp;</entry>
356 <entry>Vivid colors.</entry>
357 </row>
358 <row>
359 <entry><constant>V4L2_COLORFX_SET_CBCR</constant>&nbsp;</entry>
360 <entry>The Cb and Cr chroma components are replaced by fixed
361 coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant>
362 control.</entry>
363 </row>
364 </tbody>
365 </entrytbl>
366 </row>
367 <row>
368 <entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry>
369 <entry>integer</entry>
370 <entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant>
371 color effect. Bits [7:0] of the supplied 32 bit value are interpreted as
372 Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
373 </entry>
374 </row>
375 <row>
376 <entry><constant>V4L2_CID_AUTOBRIGHTNESS</constant></entry>
377 <entry>boolean</entry>
378 <entry>Enable Automatic Brightness.</entry>
379 </row>
380 <row>
381 <entry><constant>V4L2_CID_ROTATE</constant></entry>
382 <entry>integer</entry>
383 <entry>Rotates the image by specified angle. Common angles are 90,
384 270 and 180. Rotating the image to 90 and 270 will reverse the height
385 and width of the display window. It is necessary to set the new height and
386 width of the picture using the &VIDIOC-S-FMT; ioctl according to
387 the rotation angle selected.</entry>
388 </row>
389 <row>
390 <entry><constant>V4L2_CID_BG_COLOR</constant></entry>
391 <entry>integer</entry>
392 <entry>Sets the background color on the current output device.
393 Background color needs to be specified in the RGB24 format. The
394 supplied 32 bit value is interpreted as bits 0-7 Red color information,
395 bits 8-15 Green color information, bits 16-23 Blue color
396 information and bits 24-31 must be zero.</entry>
397 </row>
398 <row>
399 <entry><constant>V4L2_CID_ILLUMINATORS_1</constant>
400 <constant>V4L2_CID_ILLUMINATORS_2</constant></entry>
401 <entry>boolean</entry>
402 <entry>Switch on or off the illuminator 1 or 2 of the device
403 (usually a microscope).</entry>
404 </row>
405 <row>
406 <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_CAPTURE</constant></entry>
407 <entry>integer</entry>
408 <entry>This is a read-only control that can be read by the application
409and used as a hint to determine the number of CAPTURE buffers to pass to REQBUFS.
410The value is the minimum number of CAPTURE buffers that is necessary for hardware
411to work.</entry>
412 </row>
413 <row>
414 <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_OUTPUT</constant></entry>
415 <entry>integer</entry>
416 <entry>This is a read-only control that can be read by the application
417and used as a hint to determine the number of OUTPUT buffers to pass to REQBUFS.
418The value is the minimum number of OUTPUT buffers that is necessary for hardware
419to work.</entry>
420 </row>
421 <row id="v4l2-alpha-component">
422 <entry><constant>V4L2_CID_ALPHA_COMPONENT</constant></entry>
423 <entry>integer</entry>
424 <entry> Sets the alpha color component on the capture device or on
425 the capture buffer queue of a mem-to-mem device. When a mem-to-mem
426 device produces frame format that includes an alpha component
427 (e.g. <link linkend="rgb-formats">packed RGB image formats</link>)
428 and the alpha value is not defined by the mem-to-mem input data
429 this control lets you select the alpha component value of all
430 pixels. It is applicable to any pixel format that contains an alpha
431 component.
432 </entry>
433 </row>
434 <row>
435 <entry><constant>V4L2_CID_LASTP1</constant></entry>
436 <entry></entry>
437 <entry>End of the predefined control IDs (currently
438 <constant>V4L2_CID_ALPHA_COMPONENT</constant> + 1).</entry>
439 </row>
440 <row>
441 <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry>
442 <entry></entry>
443 <entry>ID of the first custom (driver specific) control.
444Applications depending on particular custom controls should check the
445driver name and version, see <xref linkend="querycap" />.</entry>
446 </row>
447 </tbody>
448 </tgroup>
449 </table>
450
451 <para>Applications can enumerate the available controls with the
452&VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls, get and set a
453control value with the &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls.
454Drivers must implement <constant>VIDIOC_QUERYCTRL</constant>,
455<constant>VIDIOC_G_CTRL</constant> and
456<constant>VIDIOC_S_CTRL</constant> when the device has one or more
457controls, <constant>VIDIOC_QUERYMENU</constant> when it has one or
458more menu type controls.</para>
459
460 <example>
461 <title>Enumerating all controls</title>
462
463 <programlisting>
464&v4l2-queryctrl; queryctrl;
465&v4l2-querymenu; querymenu;
466
467static void
468enumerate_menu (void)
469{
470 printf (" Menu items:\n");
471
472 memset (&amp;querymenu, 0, sizeof (querymenu));
473 querymenu.id = queryctrl.id;
474
475 for (querymenu.index = queryctrl.minimum;
476 querymenu.index &lt;= queryctrl.maximum;
477 querymenu.index++) {
478 if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &amp;querymenu)) {
479 printf (" %s\n", querymenu.name);
480 }
481 }
482}
483
484memset (&amp;queryctrl, 0, sizeof (queryctrl));
485
486for (queryctrl.id = V4L2_CID_BASE;
487 queryctrl.id &lt; V4L2_CID_LASTP1;
488 queryctrl.id++) {
489 if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
490 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
491 continue;
492
493 printf ("Control %s\n", queryctrl.name);
494
495 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
496 enumerate_menu ();
497 } else {
498 if (errno == EINVAL)
499 continue;
500
501 perror ("VIDIOC_QUERYCTRL");
502 exit (EXIT_FAILURE);
503 }
504}
505
506for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
507 queryctrl.id++) {
508 if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
509 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
510 continue;
511
512 printf ("Control %s\n", queryctrl.name);
513
514 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
515 enumerate_menu ();
516 } else {
517 if (errno == EINVAL)
518 break;
519
520 perror ("VIDIOC_QUERYCTRL");
521 exit (EXIT_FAILURE);
522 }
523}
524</programlisting>
525 </example>
526
527 <example>
528 <title>Changing controls</title>
529
530 <programlisting>
531&v4l2-queryctrl; queryctrl;
532&v4l2-control; control;
533
534memset (&amp;queryctrl, 0, sizeof (queryctrl));
535queryctrl.id = V4L2_CID_BRIGHTNESS;
536
537if (-1 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
538 if (errno != EINVAL) {
539 perror ("VIDIOC_QUERYCTRL");
540 exit (EXIT_FAILURE);
541 } else {
542 printf ("V4L2_CID_BRIGHTNESS is not supported\n");
543 }
544} else if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED) {
545 printf ("V4L2_CID_BRIGHTNESS is not supported\n");
546} else {
547 memset (&amp;control, 0, sizeof (control));
548 control.id = V4L2_CID_BRIGHTNESS;
549 control.value = queryctrl.default_value;
550
551 if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &amp;control)) {
552 perror ("VIDIOC_S_CTRL");
553 exit (EXIT_FAILURE);
554 }
555}
556
557memset (&amp;control, 0, sizeof (control));
558control.id = V4L2_CID_CONTRAST;
559
560if (0 == ioctl (fd, &VIDIOC-G-CTRL;, &amp;control)) {
561 control.value += 1;
562
563 /* The driver may clamp the value or return ERANGE, ignored here */
564
565 if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &amp;control)
566 &amp;&amp; errno != ERANGE) {
567 perror ("VIDIOC_S_CTRL");
568 exit (EXIT_FAILURE);
569 }
570/* Ignore if V4L2_CID_CONTRAST is unsupported */
571} else if (errno != EINVAL) {
572 perror ("VIDIOC_G_CTRL");
573 exit (EXIT_FAILURE);
574}
575
576control.id = V4L2_CID_AUDIO_MUTE;
577control.value = TRUE; /* silence */
578
579/* Errors ignored */
580ioctl (fd, VIDIOC_S_CTRL, &amp;control);
581</programlisting>
582 </example>
583 </section>
584
585 <section id="extended-controls">
586 <title>Extended Controls</title>
587
588 <section>
589 <title>Introduction</title>
590
591 <para>The control mechanism as originally designed was meant
592to be used for user settings (brightness, saturation, etc). However,
593it turned out to be a very useful model for implementing more
594complicated driver APIs where each driver implements only a subset of
595a larger API.</para>
596
597 <para>The MPEG encoding API was the driving force behind
598designing and implementing this extended control mechanism: the MPEG
599standard is quite large and the currently supported hardware MPEG
600encoders each only implement a subset of this standard. Further more,
601many parameters relating to how the video is encoded into an MPEG
602stream are specific to the MPEG encoding chip since the MPEG standard
603only defines the format of the resulting MPEG stream, not how the
604video is actually encoded into that format.</para>
605
606 <para>Unfortunately, the original control API lacked some
607features needed for these new uses and so it was extended into the
608(not terribly originally named) extended control API.</para>
609
610 <para>Even though the MPEG encoding API was the first effort
611to use the Extended Control API, nowadays there are also other classes
612of Extended Controls, such as Camera Controls and FM Transmitter Controls.
613The Extended Controls API as well as all Extended Controls classes are
614described in the following text.</para>
615 </section>
616
617 <section>
618 <title>The Extended Control API</title>
619
620 <para>Three new ioctls are available: &VIDIOC-G-EXT-CTRLS;,
621&VIDIOC-S-EXT-CTRLS; and &VIDIOC-TRY-EXT-CTRLS;. These ioctls act on
622arrays of controls (as opposed to the &VIDIOC-G-CTRL; and
623&VIDIOC-S-CTRL; ioctls that act on a single control). This is needed
624since it is often required to atomically change several controls at
625once.</para>
626
627 <para>Each of the new ioctls expects a pointer to a
628&v4l2-ext-controls;. This structure contains a pointer to the control
629array, a count of the number of controls in that array and a control
630class. Control classes are used to group similar controls into a
631single class. For example, control class
632<constant>V4L2_CTRL_CLASS_USER</constant> contains all user controls
633(&ie; all controls that can also be set using the old
634<constant>VIDIOC_S_CTRL</constant> ioctl). Control class
635<constant>V4L2_CTRL_CLASS_MPEG</constant> contains all controls
636relating to MPEG encoding, etc.</para>
637
638 <para>All controls in the control array must belong to the
639specified control class. An error is returned if this is not the
640case.</para>
641
642 <para>It is also possible to use an empty control array (count
643== 0) to check whether the specified control class is
644supported.</para>
645
646 <para>The control array is a &v4l2-ext-control; array. The
647<structname>v4l2_ext_control</structname> structure is very similar to
648&v4l2-control;, except for the fact that it also allows for 64-bit
649values and pointers to be passed.</para>
650
651 <para>It is important to realize that due to the flexibility of
652controls it is necessary to check whether the control you want to set
653actually is supported in the driver and what the valid range of values
654is. So use the &VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls to
655check this. Also note that it is possible that some of the menu
656indices in a control of type <constant>V4L2_CTRL_TYPE_MENU</constant>
657may not be supported (<constant>VIDIOC_QUERYMENU</constant> will
658return an error). A good example is the list of supported MPEG audio
659bitrates. Some drivers only support one or two bitrates, others
660support a wider range.</para>
661
662 <para>
663 All controls use machine endianness.
664 </para>
665 </section>
666
667 <section>
668 <title>Enumerating Extended Controls</title>
669
670 <para>The recommended way to enumerate over the extended
671controls is by using &VIDIOC-QUERYCTRL; in combination with the
672<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag:</para>
673
674 <informalexample>
675 <programlisting>
676&v4l2-queryctrl; qctrl;
677
678qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
679while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;qctrl)) {
680 /* ... */
681 qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
682}
683</programlisting>
684 </informalexample>
685
686 <para>The initial control ID is set to 0 ORed with the
687<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag. The
688<constant>VIDIOC_QUERYCTRL</constant> ioctl will return the first
689control with a higher ID than the specified one. When no such controls
690are found an error is returned.</para>
691
692 <para>If you want to get all controls within a specific control
693class, then you can set the initial
694<structfield>qctrl.id</structfield> value to the control class and add
695an extra check to break out of the loop when a control of another
696control class is found:</para>
697
698 <informalexample>
699 <programlisting>
700qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
701while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;qctrl)) {
702 if (V4L2_CTRL_ID2CLASS (qctrl.id) != V4L2_CTRL_CLASS_MPEG)
703 break;
704 /* ... */
705 qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
706 }
707</programlisting>
708 </informalexample>
709
710 <para>The 32-bit <structfield>qctrl.id</structfield> value is
711subdivided into three bit ranges: the top 4 bits are reserved for
712flags (&eg; <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>) and are not
713actually part of the ID. The remaining 28 bits form the control ID, of
714which the most significant 12 bits define the control class and the
715least significant 16 bits identify the control within the control
716class. It is guaranteed that these last 16 bits are always non-zero
717for controls. The range of 0x1000 and up are reserved for
718driver-specific controls. The macro
719<constant>V4L2_CTRL_ID2CLASS(id)</constant> returns the control class
720ID based on a control ID.</para>
721
722 <para>If the driver does not support extended controls, then
723<constant>VIDIOC_QUERYCTRL</constant> will fail when used in
724combination with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>. In
725that case the old method of enumerating control should be used (see
7261.8). But if it is supported, then it is guaranteed to enumerate over
727all controls, including driver-private controls.</para>
728 </section>
729
730 <section>
731 <title>Creating Control Panels</title>
732
733 <para>It is possible to create control panels for a graphical
734user interface where the user can select the various controls.
735Basically you will have to iterate over all controls using the method
736described above. Each control class starts with a control of type
737<constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant>.
738<constant>VIDIOC_QUERYCTRL</constant> will return the name of this
739control class which can be used as the title of a tab page within a
740control panel.</para>
741
742 <para>The flags field of &v4l2-queryctrl; also contains hints on
743the behavior of the control. See the &VIDIOC-QUERYCTRL; documentation
744for more details.</para>
745 </section>
746
747 <section id="mpeg-controls">
748 <title>MPEG Control Reference</title>
749
750 <para>Below all controls within the MPEG control class are
751described. First the generic controls, then controls specific for
752certain hardware.</para>
753
754 <section>
755 <title>Generic MPEG Controls</title>
756
757 <table pgwide="1" frame="none" id="mpeg-control-id">
758 <title>MPEG Control IDs</title>
759 <tgroup cols="4">
760 <colspec colname="c1" colwidth="1*" />
761 <colspec colname="c2" colwidth="6*" />
762 <colspec colname="c3" colwidth="2*" />
763 <colspec colname="c4" colwidth="6*" />
764 <spanspec namest="c1" nameend="c2" spanname="id" />
765 <spanspec namest="c2" nameend="c4" spanname="descr" />
766 <thead>
767 <row>
768 <entry spanname="id" align="left">ID</entry>
769 <entry align="left">Type</entry>
770 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
771 </row>
772 </thead>
773 <tbody valign="top">
774 <row><entry></entry></row>
775 <row>
776 <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant>&nbsp;</entry>
777 <entry>class</entry>
778 </row><row><entry spanname="descr">The MPEG class
779descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
780description of this control class. This description can be used as the
781caption of a Tab page in a GUI, for example.</entry>
782 </row>
783 <row><entry></entry></row>
784 <row id="v4l2-mpeg-stream-type">
785 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_TYPE</constant>&nbsp;</entry>
786 <entry>enum&nbsp;v4l2_mpeg_stream_type</entry>
787 </row><row><entry spanname="descr">The MPEG-1, -2 or -4
788output stream type. One cannot assume anything here. Each hardware
789MPEG encoder tends to support different subsets of the available MPEG
790stream types. This control is specific to multiplexed MPEG streams.
791The currently defined stream types are:</entry>
792 </row>
793 <row>
794 <entrytbl spanname="descr" cols="2">
795 <tbody valign="top">
796 <row>
797 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_PS</constant>&nbsp;</entry>
798 <entry>MPEG-2 program stream</entry>
799 </row>
800 <row>
801 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_TS</constant>&nbsp;</entry>
802 <entry>MPEG-2 transport stream</entry>
803 </row>
804 <row>
805 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_SS</constant>&nbsp;</entry>
806 <entry>MPEG-1 system stream</entry>
807 </row>
808 <row>
809 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_DVD</constant>&nbsp;</entry>
810 <entry>MPEG-2 DVD-compatible stream</entry>
811 </row>
812 <row>
813 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_VCD</constant>&nbsp;</entry>
814 <entry>MPEG-1 VCD-compatible stream</entry>
815 </row>
816 <row>
817 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD</constant>&nbsp;</entry>
818 <entry>MPEG-2 SVCD-compatible stream</entry>
819 </row>
820 </tbody>
821 </entrytbl>
822 </row>
823 <row><entry></entry></row>
824 <row>
825 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PMT</constant>&nbsp;</entry>
826 <entry>integer</entry>
827 </row><row><entry spanname="descr">Program Map Table
828Packet ID for the MPEG transport stream (default 16)</entry>
829 </row>
830 <row><entry></entry></row>
831 <row>
832 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_AUDIO</constant>&nbsp;</entry>
833 <entry>integer</entry>
834 </row><row><entry spanname="descr">Audio Packet ID for
835the MPEG transport stream (default 256)</entry>
836 </row>
837 <row><entry></entry></row>
838 <row>
839 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_VIDEO</constant>&nbsp;</entry>
840 <entry>integer</entry>
841 </row><row><entry spanname="descr">Video Packet ID for
842the MPEG transport stream (default 260)</entry>
843 </row>
844 <row><entry></entry></row>
845 <row>
846 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PCR</constant>&nbsp;</entry>
847 <entry>integer</entry>
848 </row><row><entry spanname="descr">Packet ID for the
849MPEG transport stream carrying PCR fields (default 259)</entry>
850 </row>
851 <row><entry></entry></row>
852 <row>
853 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_AUDIO</constant>&nbsp;</entry>
854 <entry>integer</entry>
855 </row><row><entry spanname="descr">Audio ID for MPEG
856PES</entry>
857 </row>
858 <row><entry></entry></row>
859 <row>
860 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_VIDEO</constant>&nbsp;</entry>
861 <entry>integer</entry>
862 </row><row><entry spanname="descr">Video ID for MPEG
863PES</entry>
864 </row>
865 <row><entry></entry></row>
866 <row id="v4l2-mpeg-stream-vbi-fmt">
867 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_VBI_FMT</constant>&nbsp;</entry>
868 <entry>enum&nbsp;v4l2_mpeg_stream_vbi_fmt</entry>
869 </row><row><entry spanname="descr">Some cards can embed
870VBI data (&eg; Closed Caption, Teletext) into the MPEG stream. This
871control selects whether VBI data should be embedded, and if so, what
872embedding method should be used. The list of possible VBI formats
873depends on the driver. The currently defined VBI format types
874are:</entry>
875 </row>
876 <row>
877 <entrytbl spanname="descr" cols="2">
878 <tbody valign="top">
879 <row>
880 <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_NONE</constant>&nbsp;</entry>
881 <entry>No VBI in the MPEG stream</entry>
882 </row>
883 <row>
884 <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant>&nbsp;</entry>
885 <entry>VBI in private packets, IVTV format (documented
886in the kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.vbi</filename>)</entry>
887 </row>
888 </tbody>
889 </entrytbl>
890 </row>
891 <row><entry></entry></row>
892 <row id="v4l2-mpeg-audio-sampling-freq">
893 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ</constant>&nbsp;</entry>
894 <entry>enum&nbsp;v4l2_mpeg_audio_sampling_freq</entry>
895 </row><row><entry spanname="descr">MPEG Audio sampling
896frequency. Possible values are:</entry>
897 </row>
898 <row>
899 <entrytbl spanname="descr" cols="2">
900 <tbody valign="top">
901 <row>
902 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100</constant>&nbsp;</entry>
903 <entry>44.1 kHz</entry>
904 </row>
905 <row>
906 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000</constant>&nbsp;</entry>
907 <entry>48 kHz</entry>
908 </row>
909 <row>
910 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000</constant>&nbsp;</entry>
911 <entry>32 kHz</entry>
912 </row>
913 </tbody>
914 </entrytbl>
915 </row>
916 <row><entry></entry></row>
917 <row id="v4l2-mpeg-audio-encoding">
918 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant>&nbsp;</entry>
919 <entry>enum&nbsp;v4l2_mpeg_audio_encoding</entry>
920 </row><row><entry spanname="descr">MPEG Audio encoding.
921This control is specific to multiplexed MPEG streams.
922Possible values are:</entry>
923 </row>
924 <row>
925 <entrytbl spanname="descr" cols="2">
926 <tbody valign="top">
927 <row>
928 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_1</constant>&nbsp;</entry>
929 <entry>MPEG-1/2 Layer I encoding</entry>
930 </row>
931 <row>
932 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_2</constant>&nbsp;</entry>
933 <entry>MPEG-1/2 Layer II encoding</entry>
934 </row>
935 <row>
936 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_3</constant>&nbsp;</entry>
937 <entry>MPEG-1/2 Layer III encoding</entry>
938 </row>
939 <row>
940 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AAC</constant>&nbsp;</entry>
941 <entry>MPEG-2/4 AAC (Advanced Audio Coding)</entry>
942 </row>
943 <row>
944 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AC3</constant>&nbsp;</entry>
945 <entry>AC-3 aka ATSC A/52 encoding</entry>
946 </row>
947 </tbody>
948 </entrytbl>
949 </row>
950 <row><entry></entry></row>
951 <row id="v4l2-mpeg-audio-l1-bitrate">
952 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L1_BITRATE</constant>&nbsp;</entry>
953 <entry>enum&nbsp;v4l2_mpeg_audio_l1_bitrate</entry>
954 </row><row><entry spanname="descr">MPEG-1/2 Layer I bitrate.
955Possible values are:</entry>
956 </row>
957 <row>
958 <entrytbl spanname="descr" cols="2">
959 <tbody valign="top">
960 <row>
961 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_32K</constant>&nbsp;</entry>
962 <entry>32 kbit/s</entry></row>
963 <row>
964 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_64K</constant>&nbsp;</entry>
965 <entry>64 kbit/s</entry>
966 </row>
967 <row>
968 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_96K</constant>&nbsp;</entry>
969 <entry>96 kbit/s</entry>
970 </row>
971 <row>
972 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_128K</constant>&nbsp;</entry>
973 <entry>128 kbit/s</entry>
974 </row>
975 <row>
976 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_160K</constant>&nbsp;</entry>
977 <entry>160 kbit/s</entry>
978 </row>
979 <row>
980 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_192K</constant>&nbsp;</entry>
981 <entry>192 kbit/s</entry>
982 </row>
983 <row>
984 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_224K</constant>&nbsp;</entry>
985 <entry>224 kbit/s</entry>
986 </row>
987 <row>
988 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_256K</constant>&nbsp;</entry>
989 <entry>256 kbit/s</entry>
990 </row>
991 <row>
992 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_288K</constant>&nbsp;</entry>
993 <entry>288 kbit/s</entry>
994 </row>
995 <row>
996 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_320K</constant>&nbsp;</entry>
997 <entry>320 kbit/s</entry>
998 </row>
999 <row>
1000 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_352K</constant>&nbsp;</entry>
1001 <entry>352 kbit/s</entry>
1002 </row>
1003 <row>
1004 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_384K</constant>&nbsp;</entry>
1005 <entry>384 kbit/s</entry>
1006 </row>
1007 <row>
1008 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_416K</constant>&nbsp;</entry>
1009 <entry>416 kbit/s</entry>
1010 </row>
1011 <row>
1012 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_448K</constant>&nbsp;</entry>
1013 <entry>448 kbit/s</entry>
1014 </row>
1015 </tbody>
1016 </entrytbl>
1017 </row>
1018 <row><entry></entry></row>
1019 <row id="v4l2-mpeg-audio-l2-bitrate">
1020 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L2_BITRATE</constant>&nbsp;</entry>
1021 <entry>enum&nbsp;v4l2_mpeg_audio_l2_bitrate</entry>
1022 </row><row><entry spanname="descr">MPEG-1/2 Layer II bitrate.
1023Possible values are:</entry>
1024 </row>
1025 <row>
1026 <entrytbl spanname="descr" cols="2">
1027 <tbody valign="top">
1028 <row>
1029 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_32K</constant>&nbsp;</entry>
1030 <entry>32 kbit/s</entry>
1031 </row>
1032 <row>
1033 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_48K</constant>&nbsp;</entry>
1034 <entry>48 kbit/s</entry>
1035 </row>
1036 <row>
1037 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_56K</constant>&nbsp;</entry>
1038 <entry>56 kbit/s</entry>
1039 </row>
1040 <row>
1041 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_64K</constant>&nbsp;</entry>
1042 <entry>64 kbit/s</entry>
1043 </row>
1044 <row>
1045 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_80K</constant>&nbsp;</entry>
1046 <entry>80 kbit/s</entry>
1047 </row>
1048 <row>
1049 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_96K</constant>&nbsp;</entry>
1050 <entry>96 kbit/s</entry>
1051 </row>
1052 <row>
1053 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_112K</constant>&nbsp;</entry>
1054 <entry>112 kbit/s</entry>
1055 </row>
1056 <row>
1057 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_128K</constant>&nbsp;</entry>
1058 <entry>128 kbit/s</entry>
1059 </row>
1060 <row>
1061 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_160K</constant>&nbsp;</entry>
1062 <entry>160 kbit/s</entry>
1063 </row>
1064 <row>
1065 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_192K</constant>&nbsp;</entry>
1066 <entry>192 kbit/s</entry>
1067 </row>
1068 <row>
1069 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_224K</constant>&nbsp;</entry>
1070 <entry>224 kbit/s</entry>
1071 </row>
1072 <row>
1073 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_256K</constant>&nbsp;</entry>
1074 <entry>256 kbit/s</entry>
1075 </row>
1076 <row>
1077 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_320K</constant>&nbsp;</entry>
1078 <entry>320 kbit/s</entry>
1079 </row>
1080 <row>
1081 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_384K</constant>&nbsp;</entry>
1082 <entry>384 kbit/s</entry>
1083 </row>
1084 </tbody>
1085 </entrytbl>
1086 </row>
1087 <row><entry></entry></row>
1088 <row id="v4l2-mpeg-audio-l3-bitrate">
1089 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L3_BITRATE</constant>&nbsp;</entry>
1090 <entry>enum&nbsp;v4l2_mpeg_audio_l3_bitrate</entry>
1091 </row><row><entry spanname="descr">MPEG-1/2 Layer III bitrate.
1092Possible values are:</entry>
1093 </row>
1094 <row>
1095 <entrytbl spanname="descr" cols="2">
1096 <tbody valign="top">
1097 <row>
1098 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_32K</constant>&nbsp;</entry>
1099 <entry>32 kbit/s</entry>
1100 </row>
1101 <row>
1102 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_40K</constant>&nbsp;</entry>
1103 <entry>40 kbit/s</entry>
1104 </row>
1105 <row>
1106 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_48K</constant>&nbsp;</entry>
1107 <entry>48 kbit/s</entry>
1108 </row>
1109 <row>
1110 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_56K</constant>&nbsp;</entry>
1111 <entry>56 kbit/s</entry>
1112 </row>
1113 <row>
1114 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_64K</constant>&nbsp;</entry>
1115 <entry>64 kbit/s</entry>
1116 </row>
1117 <row>
1118 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_80K</constant>&nbsp;</entry>
1119 <entry>80 kbit/s</entry>
1120 </row>
1121 <row>
1122 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_96K</constant>&nbsp;</entry>
1123 <entry>96 kbit/s</entry>
1124 </row>
1125 <row>
1126 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_112K</constant>&nbsp;</entry>
1127 <entry>112 kbit/s</entry>
1128 </row>
1129 <row>
1130 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_128K</constant>&nbsp;</entry>
1131 <entry>128 kbit/s</entry>
1132 </row>
1133 <row>
1134 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_160K</constant>&nbsp;</entry>
1135 <entry>160 kbit/s</entry>
1136 </row>
1137 <row>
1138 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_192K</constant>&nbsp;</entry>
1139 <entry>192 kbit/s</entry>
1140 </row>
1141 <row>
1142 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_224K</constant>&nbsp;</entry>
1143 <entry>224 kbit/s</entry>
1144 </row>
1145 <row>
1146 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_256K</constant>&nbsp;</entry>
1147 <entry>256 kbit/s</entry>
1148 </row>
1149 <row>
1150 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_320K</constant>&nbsp;</entry>
1151 <entry>320 kbit/s</entry>
1152 </row>
1153 </tbody>
1154 </entrytbl>
1155 </row>
1156 <row><entry></entry></row>
1157 <row>
1158 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AAC_BITRATE</constant>&nbsp;</entry>
1159 <entry>integer</entry>
1160 </row><row><entry spanname="descr">AAC bitrate in bits per second.</entry>
1161 </row>
1162 <row><entry></entry></row>
1163 <row id="v4l2-mpeg-audio-ac3-bitrate">
1164 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AC3_BITRATE</constant>&nbsp;</entry>
1165 <entry>enum&nbsp;v4l2_mpeg_audio_ac3_bitrate</entry>
1166 </row><row><entry spanname="descr">AC-3 bitrate.
1167Possible values are:</entry>
1168 </row>
1169 <row>
1170 <entrytbl spanname="descr" cols="2">
1171 <tbody valign="top">
1172 <row>
1173 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_32K</constant>&nbsp;</entry>
1174 <entry>32 kbit/s</entry>
1175 </row>
1176 <row>
1177 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_40K</constant>&nbsp;</entry>
1178 <entry>40 kbit/s</entry>
1179 </row>
1180 <row>
1181 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_48K</constant>&nbsp;</entry>
1182 <entry>48 kbit/s</entry>
1183 </row>
1184 <row>
1185 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_56K</constant>&nbsp;</entry>
1186 <entry>56 kbit/s</entry>
1187 </row>
1188 <row>
1189 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_64K</constant>&nbsp;</entry>
1190 <entry>64 kbit/s</entry>
1191 </row>
1192 <row>
1193 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_80K</constant>&nbsp;</entry>
1194 <entry>80 kbit/s</entry>
1195 </row>
1196 <row>
1197 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_96K</constant>&nbsp;</entry>
1198 <entry>96 kbit/s</entry>
1199 </row>
1200 <row>
1201 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_112K</constant>&nbsp;</entry>
1202 <entry>112 kbit/s</entry>
1203 </row>
1204 <row>
1205 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_128K</constant>&nbsp;</entry>
1206 <entry>128 kbit/s</entry>
1207 </row>
1208 <row>
1209 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_160K</constant>&nbsp;</entry>
1210 <entry>160 kbit/s</entry>
1211 </row>
1212 <row>
1213 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_192K</constant>&nbsp;</entry>
1214 <entry>192 kbit/s</entry>
1215 </row>
1216 <row>
1217 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_224K</constant>&nbsp;</entry>
1218 <entry>224 kbit/s</entry>
1219 </row>
1220 <row>
1221 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_256K</constant>&nbsp;</entry>
1222 <entry>256 kbit/s</entry>
1223 </row>
1224 <row>
1225 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_320K</constant>&nbsp;</entry>
1226 <entry>320 kbit/s</entry>
1227 </row>
1228 <row>
1229 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_384K</constant>&nbsp;</entry>
1230 <entry>384 kbit/s</entry>
1231 </row>
1232 <row>
1233 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_448K</constant>&nbsp;</entry>
1234 <entry>448 kbit/s</entry>
1235 </row>
1236 <row>
1237 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_512K</constant>&nbsp;</entry>
1238 <entry>512 kbit/s</entry>
1239 </row>
1240 <row>
1241 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_576K</constant>&nbsp;</entry>
1242 <entry>576 kbit/s</entry>
1243 </row>
1244 <row>
1245 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_640K</constant>&nbsp;</entry>
1246 <entry>640 kbit/s</entry>
1247 </row>
1248 </tbody>
1249 </entrytbl>
1250 </row>
1251 <row><entry></entry></row>
1252 <row id="v4l2-mpeg-audio-mode">
1253 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE</constant>&nbsp;</entry>
1254 <entry>enum&nbsp;v4l2_mpeg_audio_mode</entry>
1255 </row><row><entry spanname="descr">MPEG Audio mode.
1256Possible values are:</entry>
1257 </row>
1258 <row>
1259 <entrytbl spanname="descr" cols="2">
1260 <tbody valign="top">
1261 <row>
1262 <entry><constant>V4L2_MPEG_AUDIO_MODE_STEREO</constant>&nbsp;</entry>
1263 <entry>Stereo</entry>
1264 </row>
1265 <row>
1266 <entry><constant>V4L2_MPEG_AUDIO_MODE_JOINT_STEREO</constant>&nbsp;</entry>
1267 <entry>Joint Stereo</entry>
1268 </row>
1269 <row>
1270 <entry><constant>V4L2_MPEG_AUDIO_MODE_DUAL</constant>&nbsp;</entry>
1271 <entry>Bilingual</entry>
1272 </row>
1273 <row>
1274 <entry><constant>V4L2_MPEG_AUDIO_MODE_MONO</constant>&nbsp;</entry>
1275 <entry>Mono</entry>
1276 </row>
1277 </tbody>
1278 </entrytbl>
1279 </row>
1280 <row><entry></entry></row>
1281 <row id="v4l2-mpeg-audio-mode-extension">
1282 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE_EXTENSION</constant>&nbsp;</entry>
1283 <entry>enum&nbsp;v4l2_mpeg_audio_mode_extension</entry>
1284 </row><row><entry spanname="descr">Joint Stereo
1285audio mode extension. In Layer I and II they indicate which subbands
1286are in intensity stereo. All other subbands are coded in stereo. Layer
1287III is not (yet) supported. Possible values
1288are:</entry>
1289 </row>
1290 <row>
1291 <entrytbl spanname="descr" cols="2">
1292 <tbody valign="top">
1293 <row>
1294 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4</constant>&nbsp;</entry>
1295 <entry>Subbands 4-31 in intensity stereo</entry>
1296 </row>
1297 <row>
1298 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8</constant>&nbsp;</entry>
1299 <entry>Subbands 8-31 in intensity stereo</entry>
1300 </row>
1301 <row>
1302 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12</constant>&nbsp;</entry>
1303 <entry>Subbands 12-31 in intensity stereo</entry>
1304 </row>
1305 <row>
1306 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16</constant>&nbsp;</entry>
1307 <entry>Subbands 16-31 in intensity stereo</entry>
1308 </row>
1309 </tbody>
1310 </entrytbl>
1311 </row>
1312 <row><entry></entry></row>
1313 <row id="v4l2-mpeg-audio-emphasis">
1314 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_EMPHASIS</constant>&nbsp;</entry>
1315 <entry>enum&nbsp;v4l2_mpeg_audio_emphasis</entry>
1316 </row><row><entry spanname="descr">Audio Emphasis.
1317Possible values are:</entry>
1318 </row>
1319 <row>
1320 <entrytbl spanname="descr" cols="2">
1321 <tbody valign="top">
1322 <row>
1323 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_NONE</constant>&nbsp;</entry>
1324 <entry>None</entry>
1325 </row>
1326 <row>
1327 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS</constant>&nbsp;</entry>
1328 <entry>50/15 microsecond emphasis</entry>
1329 </row>
1330 <row>
1331 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17</constant>&nbsp;</entry>
1332 <entry>CCITT J.17</entry>
1333 </row>
1334 </tbody>
1335 </entrytbl>
1336 </row>
1337 <row><entry></entry></row>
1338 <row id="v4l2-mpeg-audio-crc">
1339 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_CRC</constant>&nbsp;</entry>
1340 <entry>enum&nbsp;v4l2_mpeg_audio_crc</entry>
1341 </row><row><entry spanname="descr">CRC method. Possible
1342values are:</entry>
1343 </row>
1344 <row>
1345 <entrytbl spanname="descr" cols="2">
1346 <tbody valign="top">
1347 <row>
1348 <entry><constant>V4L2_MPEG_AUDIO_CRC_NONE</constant>&nbsp;</entry>
1349 <entry>None</entry>
1350 </row>
1351 <row>
1352 <entry><constant>V4L2_MPEG_AUDIO_CRC_CRC16</constant>&nbsp;</entry>
1353 <entry>16 bit parity check</entry>
1354 </row>
1355 </tbody>
1356 </entrytbl>
1357 </row>
1358 <row><entry></entry></row>
1359 <row>
1360 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MUTE</constant>&nbsp;</entry>
1361 <entry>boolean</entry>
1362 </row><row><entry spanname="descr">Mutes the audio when
1363capturing. This is not done by muting audio hardware, which can still
1364produce a slight hiss, but in the encoder itself, guaranteeing a fixed
1365and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry>
1366 </row>
1367 <row><entry></entry></row>
1368 <row id="v4l2-mpeg-audio-dec-playback">
1369 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK</constant>&nbsp;</entry>
1370 <entry>enum&nbsp;v4l2_mpeg_audio_dec_playback</entry>
1371 </row><row><entry spanname="descr">Determines how monolingual audio should be played back.
1372Possible values are:</entry>
1373 </row>
1374 <row>
1375 <entrytbl spanname="descr" cols="2">
1376 <tbody valign="top">
1377 <row>
1378 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO</constant>&nbsp;</entry>
1379 <entry>Automatically determines the best playback mode.</entry>
1380 </row>
1381 <row>
1382 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO</constant>&nbsp;</entry>
1383 <entry>Stereo playback.</entry>
1384 </row>
1385 <row>
1386 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT</constant>&nbsp;</entry>
1387 <entry>Left channel playback.</entry>
1388 </row>
1389 <row>
1390 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT</constant>&nbsp;</entry>
1391 <entry>Right channel playback.</entry>
1392 </row>
1393 <row>
1394 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO</constant>&nbsp;</entry>
1395 <entry>Mono playback.</entry>
1396 </row>
1397 <row>
1398 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO</constant>&nbsp;</entry>
1399 <entry>Stereo playback with swapped left and right channels.</entry>
1400 </row>
1401 </tbody>
1402 </entrytbl>
1403 </row>
1404 <row><entry></entry></row>
1405 <row id="v4l2-mpeg-audio-dec-multilingual-playback">
1406 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK</constant>&nbsp;</entry>
1407 <entry>enum&nbsp;v4l2_mpeg_audio_dec_playback</entry>
1408 </row><row><entry spanname="descr">Determines how multilingual audio should be played back.</entry>
1409 </row>
1410 <row><entry></entry></row>
1411 <row id="v4l2-mpeg-video-encoding">
1412 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant>&nbsp;</entry>
1413 <entry>enum&nbsp;v4l2_mpeg_video_encoding</entry>
1414 </row><row><entry spanname="descr">MPEG Video encoding
1415method. This control is specific to multiplexed MPEG streams.
1416Possible values are:</entry>
1417 </row>
1418 <row>
1419 <entrytbl spanname="descr" cols="2">
1420 <tbody valign="top">
1421 <row>
1422 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_1</constant>&nbsp;</entry>
1423 <entry>MPEG-1 Video encoding</entry>
1424 </row>
1425 <row>
1426 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_2</constant>&nbsp;</entry>
1427 <entry>MPEG-2 Video encoding</entry>
1428 </row>
1429 <row>
1430 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC</constant>&nbsp;</entry>
1431 <entry>MPEG-4 AVC (H.264) Video encoding</entry>
1432 </row>
1433 </tbody>
1434 </entrytbl>
1435 </row>
1436 <row><entry></entry></row>
1437 <row id="v4l2-mpeg-video-aspect">
1438 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ASPECT</constant>&nbsp;</entry>
1439 <entry>enum&nbsp;v4l2_mpeg_video_aspect</entry>
1440 </row><row><entry spanname="descr">Video aspect.
1441Possible values are:</entry>
1442 </row>
1443 <row>
1444 <entrytbl spanname="descr" cols="2">
1445 <tbody valign="top">
1446 <row>
1447 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_1x1</constant>&nbsp;</entry>
1448 </row>
1449 <row>
1450 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_4x3</constant>&nbsp;</entry>
1451 </row>
1452 <row>
1453 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_16x9</constant>&nbsp;</entry>
1454 </row>
1455 <row>
1456 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_221x100</constant>&nbsp;</entry>
1457 </row>
1458 </tbody>
1459 </entrytbl>
1460 </row>
1461 <row><entry></entry></row>
1462 <row>
1463 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_B_FRAMES</constant>&nbsp;</entry>
1464 <entry>integer</entry>
1465 </row><row><entry spanname="descr">Number of B-Frames
1466(default 2)</entry>
1467 </row>
1468 <row><entry></entry></row>
1469 <row>
1470 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_SIZE</constant>&nbsp;</entry>
1471 <entry>integer</entry>
1472 </row><row><entry spanname="descr">GOP size (default
147312)</entry>
1474 </row>
1475 <row><entry></entry></row>
1476 <row>
1477 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_CLOSURE</constant>&nbsp;</entry>
1478 <entry>boolean</entry>
1479 </row><row><entry spanname="descr">GOP closure (default
14801)</entry>
1481 </row>
1482 <row><entry></entry></row>
1483 <row>
1484 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_PULLDOWN</constant>&nbsp;</entry>
1485 <entry>boolean</entry>
1486 </row><row><entry spanname="descr">Enable 3:2 pulldown
1487(default 0)</entry>
1488 </row>
1489 <row><entry></entry></row>
1490 <row id="v4l2-mpeg-video-bitrate-mode">
1491 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_MODE</constant>&nbsp;</entry>
1492 <entry>enum&nbsp;v4l2_mpeg_video_bitrate_mode</entry>
1493 </row><row><entry spanname="descr">Video bitrate mode.
1494Possible values are:</entry>
1495 </row>
1496 <row>
1497 <entrytbl spanname="descr" cols="2">
1498 <tbody valign="top">
1499 <row>
1500 <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_VBR</constant>&nbsp;</entry>
1501 <entry>Variable bitrate</entry>
1502 </row>
1503 <row>
1504 <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_CBR</constant>&nbsp;</entry>
1505 <entry>Constant bitrate</entry>
1506 </row>
1507 </tbody>
1508 </entrytbl>
1509 </row>
1510 <row><entry></entry></row>
1511 <row>
1512 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE</constant>&nbsp;</entry>
1513 <entry>integer</entry>
1514 </row><row><entry spanname="descr">Video bitrate in bits
1515per second.</entry>
1516 </row>
1517 <row><entry></entry></row>
1518 <row>
1519 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_PEAK</constant>&nbsp;</entry>
1520 <entry>integer</entry>
1521 </row><row><entry spanname="descr">Peak video bitrate in
1522bits per second. Must be larger or equal to the average video bitrate.
1523It is ignored if the video bitrate mode is set to constant
1524bitrate.</entry>
1525 </row>
1526 <row><entry></entry></row>
1527 <row>
1528 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION</constant>&nbsp;</entry>
1529 <entry>integer</entry>
1530 </row><row><entry spanname="descr">For every captured
1531frame, skip this many subsequent frames (default 0).</entry>
1532 </row>
1533 <row><entry></entry></row>
1534 <row>
1535 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE</constant>&nbsp;</entry>
1536 <entry>boolean</entry>
1537 </row>
1538 <row><entry spanname="descr">"Mutes" the video to a
1539fixed color when capturing. This is useful for testing, to produce a
1540fixed video bitstream. 0 = unmuted, 1 = muted.</entry>
1541 </row>
1542 <row><entry></entry></row>
1543 <row>
1544 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE_YUV</constant>&nbsp;</entry>
1545 <entry>integer</entry>
1546 </row><row><entry spanname="descr">Sets the "mute" color
1547of the video. The supplied 32-bit integer is interpreted as follows (bit
15480 = least significant bit):</entry>
1549 </row>
1550 <row>
1551 <entrytbl spanname="descr" cols="2">
1552 <tbody valign="top">
1553 <row>
1554 <entry>Bit 0:7</entry>
1555 <entry>V chrominance information</entry>
1556 </row>
1557 <row>
1558 <entry>Bit 8:15</entry>
1559 <entry>U chrominance information</entry>
1560 </row>
1561 <row>
1562 <entry>Bit 16:23</entry>
1563 <entry>Y luminance information</entry>
1564 </row>
1565 <row>
1566 <entry>Bit 24:31</entry>
1567 <entry>Must be zero.</entry>
1568 </row>
1569 </tbody>
1570 </entrytbl>
1571 </row>
1572 <row><entry></entry></row>
1573 <row id="v4l2-mpeg-video-dec-pts">
1574 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DEC_PTS</constant>&nbsp;</entry>
1575 <entry>integer64</entry>
1576 </row><row><entry spanname="descr">This read-only control returns the
157733-bit video Presentation Time Stamp as defined in ITU T-REC-H.222.0 and ISO/IEC 13818-1 of
1578the currently displayed frame. This is the same PTS as is used in &VIDIOC-DECODER-CMD;.</entry>
1579 </row>
1580 <row><entry></entry></row>
1581 <row id="v4l2-mpeg-video-dec-frame">
1582 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DEC_FRAME</constant>&nbsp;</entry>
1583 <entry>integer64</entry>
1584 </row><row><entry spanname="descr">This read-only control returns the
1585frame counter of the frame that is currently displayed (decoded). This value is reset to 0 whenever
1586the decoder is started.</entry>
1587 </row>
1588
1589 <row><entry></entry></row>
1590 <row>
1591 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constant>&nbsp;</entry>
1592 <entry>boolean</entry>
1593 </row>
1594 <row><entry spanname="descr">If enabled the decoder expects to receive a single slice per buffer, otherwise
1595the decoder expects a single frame in per buffer. Applicable to the decoder, all codecs.
1596</entry>
1597 </row>
1598
1599 <row><entry></entry></row>
1600 <row>
1601 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE</constant>&nbsp;</entry>
1602 <entry>boolean</entry>
1603 </row>
1604 <row><entry spanname="descr">Enable writing sample aspect ratio in the Video Usability Information.
1605Applicable to the H264 encoder.</entry>
1606 </row>
1607
1608 <row><entry></entry></row>
1609 <row id="v4l2-mpeg-video-h264-vui-sar-idc">
1610 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant>&nbsp;</entry>
1611 <entry>enum&nbsp;v4l2_mpeg_video_h264_vui_sar_idc</entry>
1612 </row>
1613 <row><entry spanname="descr">VUI sample aspect ratio indicator for H.264 encoding. The value
1614is defined in the table E-1 in the standard. Applicable to the H264 encoder.</entry>
1615 </row>
1616 <row>
1617 <entrytbl spanname="descr" cols="2">
1618 <tbody valign="top">
1619
1620 <row>
1621 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED</constant>&nbsp;</entry>
1622 <entry>Unspecified</entry>
1623 </row>
1624 <row>
1625 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1</constant>&nbsp;</entry>
1626 <entry>1x1</entry>
1627 </row>
1628 <row>
1629 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11</constant>&nbsp;</entry>
1630 <entry>12x11</entry>
1631 </row>
1632 <row>
1633 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11</constant>&nbsp;</entry>
1634 <entry>10x11</entry>
1635 </row>
1636 <row>
1637 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11</constant>&nbsp;</entry>
1638 <entry>16x11</entry>
1639 </row>
1640 <row>
1641 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33</constant>&nbsp;</entry>
1642 <entry>40x33</entry>
1643 </row>
1644 <row>
1645 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11</constant>&nbsp;</entry>
1646 <entry>24x11</entry>
1647 </row>
1648 <row>
1649 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11</constant>&nbsp;</entry>
1650 <entry>20x11</entry>
1651 </row>
1652 <row>
1653 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11</constant>&nbsp;</entry>
1654 <entry>32x11</entry>
1655 </row>
1656 <row>
1657 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33</constant>&nbsp;</entry>
1658 <entry>80x33</entry>
1659 </row>
1660 <row>
1661 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11</constant>&nbsp;</entry>
1662 <entry>18x11</entry>
1663 </row>
1664 <row>
1665 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11</constant>&nbsp;</entry>
1666 <entry>15x11</entry>
1667 </row>
1668 <row>
1669 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33</constant>&nbsp;</entry>
1670 <entry>64x33</entry>
1671 </row>
1672 <row>
1673 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99</constant>&nbsp;</entry>
1674 <entry>160x99</entry>
1675 </row>
1676 <row>
1677 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3</constant>&nbsp;</entry>
1678 <entry>4x3</entry>
1679 </row>
1680 <row>
1681 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2</constant>&nbsp;</entry>
1682 <entry>3x2</entry>
1683 </row>
1684 <row>
1685 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1</constant>&nbsp;</entry>
1686 <entry>2x1</entry>
1687 </row>
1688 <row>
1689 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED</constant>&nbsp;</entry>
1690 <entry>Extended SAR</entry>
1691 </row>
1692 </tbody>
1693 </entrytbl>
1694 </row>
1695
1696 <row><entry></entry></row>
1697 <row>
1698 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH</constant>&nbsp;</entry>
1699 <entry>integer</entry>
1700 </row>
1701 <row><entry spanname="descr">Extended sample aspect ratio width for H.264 VUI encoding.
1702Applicable to the H264 encoder.</entry>
1703 </row>
1704
1705 <row><entry></entry></row>
1706 <row>
1707 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT</constant>&nbsp;</entry>
1708 <entry>integer</entry>
1709 </row>
1710 <row><entry spanname="descr">Extended sample aspect ratio height for H.264 VUI encoding.
1711Applicable to the H264 encoder.</entry>
1712 </row>
1713
1714 <row><entry></entry></row>
1715 <row id="v4l2-mpeg-video-h264-level">
1716 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant>&nbsp;</entry>
1717 <entry>enum&nbsp;v4l2_mpeg_video_h264_level</entry>
1718 </row>
1719 <row><entry spanname="descr">The level information for the H264 video elementary stream.
1720Applicable to the H264 encoder.
1721Possible values are:</entry>
1722 </row>
1723 <row>
1724 <entrytbl spanname="descr" cols="2">
1725 <tbody valign="top">
1726 <row>
1727 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_0</constant>&nbsp;</entry>
1728 <entry>Level 1.0</entry>
1729 </row>
1730 <row>
1731 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1B</constant>&nbsp;</entry>
1732 <entry>Level 1B</entry>
1733 </row>
1734 <row>
1735 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_1</constant>&nbsp;</entry>
1736 <entry>Level 1.1</entry>
1737 </row>
1738 <row>
1739 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_2</constant>&nbsp;</entry>
1740 <entry>Level 1.2</entry>
1741 </row>
1742 <row>
1743 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_3</constant>&nbsp;</entry>
1744 <entry>Level 1.3</entry>
1745 </row>
1746 <row>
1747 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_0</constant>&nbsp;</entry>
1748 <entry>Level 2.0</entry>
1749 </row>
1750 <row>
1751 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_1</constant>&nbsp;</entry>
1752 <entry>Level 2.1</entry>
1753 </row>
1754 <row>
1755 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_2</constant>&nbsp;</entry>
1756 <entry>Level 2.2</entry>
1757 </row>
1758 <row>
1759 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_0</constant>&nbsp;</entry>
1760 <entry>Level 3.0</entry>
1761 </row>
1762 <row>
1763 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_1</constant>&nbsp;</entry>
1764 <entry>Level 3.1</entry>
1765 </row>
1766 <row>
1767 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_2</constant>&nbsp;</entry>
1768 <entry>Level 3.2</entry>
1769 </row>
1770 <row>
1771 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_0</constant>&nbsp;</entry>
1772 <entry>Level 4.0</entry>
1773 </row>
1774 <row>
1775 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_1</constant>&nbsp;</entry>
1776 <entry>Level 4.1</entry>
1777 </row>
1778 <row>
1779 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_2</constant>&nbsp;</entry>
1780 <entry>Level 4.2</entry>
1781 </row>
1782 <row>
1783 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_5_0</constant>&nbsp;</entry>
1784 <entry>Level 5.0</entry>
1785 </row>
1786 <row>
1787 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_5_1</constant>&nbsp;</entry>
1788 <entry>Level 5.1</entry>
1789 </row>
1790 </tbody>
1791 </entrytbl>
1792 </row>
1793
1794 <row><entry></entry></row>
1795 <row id="v4l2-mpeg-video-mpeg4-level">
1796 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant>&nbsp;</entry>
1797 <entry>enum&nbsp;v4l2_mpeg_video_mpeg4_level</entry>
1798 </row>
1799 <row><entry spanname="descr">The level information for the MPEG4 elementary stream.
1800Applicable to the MPEG4 encoder.
1801Possible values are:</entry>
1802 </row>
1803 <row>
1804 <entrytbl spanname="descr" cols="2">
1805 <tbody valign="top">
1806 <row>
1807 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0</constant>&nbsp;</entry>
1808 <entry>Level 0</entry>
1809 </row>
1810 <row>
1811 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0B</constant>&nbsp;</entry>
1812 <entry>Level 0b</entry>
1813 </row>
1814 <row>
1815 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1</constant>&nbsp;</entry>
1816 <entry>Level 1</entry>
1817 </row>
1818 <row>
1819 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_2</constant>&nbsp;</entry>
1820 <entry>Level 2</entry>
1821 </row>
1822 <row>
1823 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3</constant>&nbsp;</entry>
1824 <entry>Level 3</entry>
1825 </row>
1826 <row>
1827 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3B</constant>&nbsp;</entry>
1828 <entry>Level 3b</entry>
1829 </row>
1830 <row>
1831 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_4</constant>&nbsp;</entry>
1832 <entry>Level 4</entry>
1833 </row>
1834 <row>
1835 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_5</constant>&nbsp;</entry>
1836 <entry>Level 5</entry>
1837 </row>
1838 </tbody>
1839 </entrytbl>
1840 </row>
1841
1842 <row><entry></entry></row>
1843 <row id="v4l2-mpeg-video-h264-profile">
1844 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant>&nbsp;</entry>
1845 <entry>enum&nbsp;v4l2_mpeg_video_h264_profile</entry>
1846 </row>
1847 <row><entry spanname="descr">The profile information for H264.
1848Applicable to the H264 encoder.
1849Possible values are:</entry>
1850 </row>
1851 <row>
1852 <entrytbl spanname="descr" cols="2">
1853 <tbody valign="top">
1854 <row>
1855 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE</constant>&nbsp;</entry>
1856 <entry>Baseline profile</entry>
1857 </row>
1858 <row>
1859 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE</constant>&nbsp;</entry>
1860 <entry>Constrained Baseline profile</entry>
1861 </row>
1862 <row>
1863 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MAIN</constant>&nbsp;</entry>
1864 <entry>Main profile</entry>
1865 </row>
1866 <row>
1867 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED</constant>&nbsp;</entry>
1868 <entry>Extended profile</entry>
1869 </row>
1870 <row>
1871 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH</constant>&nbsp;</entry>
1872 <entry>High profile</entry>
1873 </row>
1874 <row>
1875 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10</constant>&nbsp;</entry>
1876 <entry>High 10 profile</entry>
1877 </row>
1878 <row>
1879 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422</constant>&nbsp;</entry>
1880 <entry>High 422 profile</entry>
1881 </row>
1882 <row>
1883 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE</constant>&nbsp;</entry>
1884 <entry>High 444 Predictive profile</entry>
1885 </row>
1886 <row>
1887 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA</constant>&nbsp;</entry>
1888 <entry>High 10 Intra profile</entry>
1889 </row>
1890 <row>
1891 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA</constant>&nbsp;</entry>
1892 <entry>High 422 Intra profile</entry>
1893 </row>
1894 <row>
1895 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA</constant>&nbsp;</entry>
1896 <entry>High 444 Intra profile</entry>
1897 </row>
1898 <row>
1899 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA</constant>&nbsp;</entry>
1900 <entry>CAVLC 444 Intra profile</entry>
1901 </row>
1902 <row>
1903 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE</constant>&nbsp;</entry>
1904 <entry>Scalable Baseline profile</entry>
1905 </row>
1906 <row>
1907 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH</constant>&nbsp;</entry>
1908 <entry>Scalable High profile</entry>
1909 </row>
1910 <row>
1911 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA</constant>&nbsp;</entry>
1912 <entry>Scalable High Intra profile</entry>
1913 </row>
1914 <row>
1915 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH</constant>&nbsp;</entry>
1916 <entry>Stereo High profile</entry>
1917 </row>
1918 <row>
1919 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH</constant>&nbsp;</entry>
1920 <entry>Multiview High profile</entry>
1921 </row>
1922
1923 </tbody>
1924 </entrytbl>
1925 </row>
1926
1927 <row><entry></entry></row>
1928 <row id="v4l2-mpeg-video-mpeg4-profile">
1929 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant>&nbsp;</entry>
1930 <entry>enum&nbsp;v4l2_mpeg_video_mpeg4_profile</entry>
1931 </row>
1932 <row><entry spanname="descr">The profile information for MPEG4.
1933Applicable to the MPEG4 encoder.
1934Possible values are:</entry>
1935 </row>
1936 <row>
1937 <entrytbl spanname="descr" cols="2">
1938 <tbody valign="top">
1939 <row>
1940 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE</constant>&nbsp;</entry>
1941 <entry>Simple profile</entry>
1942 </row>
1943 <row>
1944 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_SIMPLE</constant>&nbsp;</entry>
1945 <entry>Advanced Simple profile</entry>
1946 </row>
1947 <row>
1948 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_CORE</constant>&nbsp;</entry>
1949 <entry>Core profile</entry>
1950 </row>
1951 <row>
1952 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE_SCALABLE</constant>&nbsp;</entry>
1953 <entry>Simple Scalable profile</entry>
1954 </row>
1955 <row>
1956 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY</constant>&nbsp;</entry>
1957 <entry></entry>
1958 </row>
1959 </tbody>
1960 </entrytbl>
1961 </row>
1962
1963 <row><entry></entry></row>
1964 <row>
1965 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MAX_REF_PIC</constant>&nbsp;</entry>
1966 <entry>integer</entry>
1967 </row>
1968 <row><entry spanname="descr">The maximum number of reference pictures used for encoding.
1969Applicable to the encoder.
1970</entry>
1971 </row>
1972
1973 <row><entry></entry></row>
1974 <row id="v4l2-mpeg-video-multi-slice-mode">
1975 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant>&nbsp;</entry>
1976 <entry>enum&nbsp;v4l2_mpeg_video_multi_slice_mode</entry>
1977 </row>
1978 <row><entry spanname="descr">Determines how the encoder should handle division of frame into slices.
1979Applicable to the encoder.
1980Possible values are:</entry>
1981 </row>
1982 <row>
1983 <entrytbl spanname="descr" cols="2">
1984 <tbody valign="top">
1985 <row>
1986 <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE</constant>&nbsp;</entry>
1987 <entry>Single slice per frame.</entry>
1988 </row>
1989 <row>
1990 <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant>&nbsp;</entry>
1991 <entry>Multiple slices with set maximum number of macroblocks per slice.</entry>
1992 </row>
1993 <row>
1994 <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES</constant>&nbsp;</entry>
1995 <entry>Multiple slice with set maximum size in bytes per slice.</entry>
1996 </row>
1997 </tbody>
1998 </entrytbl>
1999 </row>
2000
2001 <row><entry></entry></row>
2002 <row>
2003 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB</constant>&nbsp;</entry>
2004 <entry>integer</entry>
2005 </row>
2006 <row><entry spanname="descr">The maximum number of macroblocks in a slice. Used when
2007<constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> is set to <constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant>.
2008Applicable to the encoder.</entry>
2009 </row>
2010
2011 <row><entry></entry></row>
2012 <row>
2013 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES</constant>&nbsp;</entry>
2014 <entry>integer</entry>
2015 </row>
2016 <row><entry spanname="descr">The maximum size of a slice in bytes. Used when
2017<constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> is set to <constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES</constant>.
2018Applicable to the encoder.</entry>
2019 </row>
2020
2021 <row><entry></entry></row>
2022 <row id="v4l2-mpeg-video-h264-loop-filter-mode">
2023 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant>&nbsp;</entry>
2024 <entry>enum&nbsp;v4l2_mpeg_video_h264_loop_filter_mode</entry>
2025 </row>
2026 <row><entry spanname="descr">Loop filter mode for H264 encoder.
2027Possible values are:</entry>
2028 </row>
2029 <row>
2030 <entrytbl spanname="descr" cols="2">
2031 <tbody valign="top">
2032 <row>
2033 <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED</constant>&nbsp;</entry>
2034 <entry>Loop filter is enabled.</entry>
2035 </row>
2036 <row>
2037 <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED</constant>&nbsp;</entry>
2038 <entry>Loop filter is disabled.</entry>
2039 </row>
2040 <row>
2041 <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY</constant>&nbsp;</entry>
2042 <entry>Loop filter is disabled at the slice boundary.</entry>
2043 </row>
2044 </tbody>
2045 </entrytbl>
2046 </row>
2047
2048 <row><entry></entry></row>
2049 <row>
2050 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA</constant>&nbsp;</entry>
2051 <entry>integer</entry>
2052 </row>
2053 <row><entry spanname="descr">Loop filter alpha coefficient, defined in the H264 standard.
2054Applicable to the H264 encoder.</entry>
2055 </row>
2056
2057 <row><entry></entry></row>
2058 <row>
2059 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA</constant>&nbsp;</entry>
2060 <entry>integer</entry>
2061 </row>
2062 <row><entry spanname="descr">Loop filter beta coefficient, defined in the H264 standard.
2063Applicable to the H264 encoder.</entry>
2064 </row>
2065
2066 <row><entry></entry></row>
2067 <row id="v4l2-mpeg-video-h264-entropy-mode">
2068 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant>&nbsp;</entry>
2069 <entry>enum&nbsp;v4l2_mpeg_video_h264_entropy_mode</entry>
2070 </row>
2071 <row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC.
2072Applicable to the H264 encoder.
2073Possible values are:</entry>
2074 </row>
2075 <row>
2076 <entrytbl spanname="descr" cols="2">
2077 <tbody valign="top">
2078 <row>
2079 <entry><constant>V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC</constant>&nbsp;</entry>
2080 <entry>Use CAVLC entropy coding.</entry>
2081 </row>
2082 <row>
2083 <entry><constant>V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC</constant>&nbsp;</entry>
2084 <entry>Use CABAC entropy coding.</entry>
2085 </row>
2086 </tbody>
2087 </entrytbl>
2088 </row>
2089
2090 <row><entry></entry></row>
2091 <row>
2092 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM</constant>&nbsp;</entry>
2093 <entry>boolean</entry>
2094 </row>
2095 <row><entry spanname="descr">Enable 8X8 transform for H264. Applicable to the H264 encoder.</entry>
2096 </row>
2097
2098 <row><entry></entry></row>
2099 <row>
2100 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB</constant>&nbsp;</entry>
2101 <entry>integer</entry>
2102 </row>
2103 <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks
2104refreshed every frame. Each frame a successive set of macroblocks is refreshed until the cycle completes and starts from the
2105top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry>
2106 </row>
2107
2108 <row><entry></entry></row>
2109 <row>
2110 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE</constant>&nbsp;</entry>
2111 <entry>boolean</entry>
2112 </row>
2113 <row><entry spanname="descr">Frame level rate control enable.
2114If this control is disabled then the quantization parameter for each frame type is constant and set with appropriate controls
2115(e.g. <constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant>).
2116If frame rate control is enabled then quantization parameter is adjusted to meet the chosen bitrate. Minimum and maximum value
2117for the quantization parameter can be set with appropriate controls (e.g. <constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant>).
2118Applicable to encoders.</entry>
2119 </row>
2120
2121 <row><entry></entry></row>
2122 <row>
2123 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>&nbsp;</entry>
2124 <entry>boolean</entry>
2125 </row>
2126 <row><entry spanname="descr">Macroblock level rate control enable.
2127Applicable to the MPEG4 and H264 encoders.</entry>
2128 </row>
2129
2130 <row><entry></entry></row>
2131 <row>
2132 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_QPEL</constant>&nbsp;</entry>
2133 <entry>boolean</entry>
2134 </row>
2135 <row><entry spanname="descr">Quarter pixel motion estimation for MPEG4. Applicable to the MPEG4 encoder.</entry>
2136 </row>
2137
2138 <row><entry></entry></row>
2139 <row>
2140 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant>&nbsp;</entry>
2141 <entry>integer</entry>
2142 </row>
2143 <row><entry spanname="descr">Quantization parameter for an I frame for H263. Valid range: from 1 to 31.</entry>
2144 </row>
2145
2146 <row><entry></entry></row>
2147 <row>
2148 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant>&nbsp;</entry>
2149 <entry>integer</entry>
2150 </row>
2151 <row><entry spanname="descr">Minimum quantization parameter for H263. Valid range: from 1 to 31.</entry>
2152 </row>
2153
2154 <row><entry></entry></row>
2155 <row>
2156 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MAX_QP</constant>&nbsp;</entry>
2157 <entry>integer</entry>
2158 </row>
2159 <row><entry spanname="descr">Maximum quantization parameter for H263. Valid range: from 1 to 31.</entry>
2160 </row>
2161
2162 <row><entry></entry></row>
2163 <row>
2164 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP</constant>&nbsp;</entry>
2165 <entry>integer</entry>
2166 </row>
2167 <row><entry spanname="descr">Quantization parameter for an P frame for H263. Valid range: from 1 to 31.</entry>
2168 </row>
2169
2170 <row><entry></entry></row>
2171 <row>
2172 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP</constant>&nbsp;</entry>
2173 <entry>integer</entry>
2174 </row>
2175 <row><entry spanname="descr">Quantization parameter for an B frame for H263. Valid range: from 1 to 31.</entry>
2176 </row>
2177
2178 <row><entry></entry></row>
2179 <row>
2180 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP</constant>&nbsp;</entry>
2181 <entry>integer</entry>
2182 </row>
2183 <row><entry spanname="descr">Quantization parameter for an I frame for H264. Valid range: from 0 to 51.</entry>
2184 </row>
2185
2186 <row><entry></entry></row>
2187 <row>
2188 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MIN_QP</constant>&nbsp;</entry>
2189 <entry>integer</entry>
2190 </row>
2191 <row><entry spanname="descr">Minimum quantization parameter for H264. Valid range: from 0 to 51.</entry>
2192 </row>
2193
2194 <row><entry></entry></row>
2195 <row>
2196 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MAX_QP</constant>&nbsp;</entry>
2197 <entry>integer</entry>
2198 </row>
2199 <row><entry spanname="descr">Maximum quantization parameter for H264. Valid range: from 0 to 51.</entry>
2200 </row>
2201
2202 <row><entry></entry></row>
2203 <row>
2204 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP</constant>&nbsp;</entry>
2205 <entry>integer</entry>
2206 </row>
2207 <row><entry spanname="descr">Quantization parameter for an P frame for H264. Valid range: from 0 to 51.</entry>
2208 </row>
2209
2210 <row><entry></entry></row>
2211 <row>
2212 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP</constant>&nbsp;</entry>
2213 <entry>integer</entry>
2214 </row>
2215 <row><entry spanname="descr">Quantization parameter for an B frame for H264. Valid range: from 0 to 51.</entry>
2216 </row>
2217
2218 <row><entry></entry></row>
2219 <row>
2220 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP</constant>&nbsp;</entry>
2221 <entry>integer</entry>
2222 </row>
2223 <row><entry spanname="descr">Quantization parameter for an I frame for MPEG4. Valid range: from 1 to 31.</entry>
2224 </row>
2225
2226 <row><entry></entry></row>
2227 <row>
2228 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP</constant>&nbsp;</entry>
2229 <entry>integer</entry>
2230 </row>
2231 <row><entry spanname="descr">Minimum quantization parameter for MPEG4. Valid range: from 1 to 31.</entry>
2232 </row>
2233
2234 <row><entry></entry></row>
2235 <row>
2236 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP</constant>&nbsp;</entry>
2237 <entry>integer</entry>
2238 </row>
2239 <row><entry spanname="descr">Maximum quantization parameter for MPEG4. Valid range: from 1 to 31.</entry>
2240 </row>
2241
2242 <row><entry></entry></row>
2243 <row>
2244 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP</constant>&nbsp;</entry>
2245 <entry>integer</entry>
2246 </row>
2247 <row><entry spanname="descr">Quantization parameter for an P frame for MPEG4. Valid range: from 1 to 31.</entry>
2248 </row>
2249
2250 <row><entry></entry></row>
2251 <row>
2252 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP</constant>&nbsp;</entry>
2253 <entry>integer</entry>
2254 </row>
2255 <row><entry spanname="descr">Quantization parameter for an B frame for MPEG4. Valid range: from 1 to 31.</entry>
2256 </row>
2257
2258 <row><entry></entry></row>
2259 <row>
2260 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_SIZE</constant>&nbsp;</entry>
2261 <entry>integer</entry>
2262 </row>
2263 <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip.
2264The VBV is defined in the standard as a mean to verify that the produced stream will be successfully decoded.
2265The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the
2266output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an
2267encoder or editing process may produce.".
2268Applicable to the MPEG1, MPEG2, MPEG4 encoders.</entry>
2269 </row>
2270
2271 <row><entry></entry></row>
2272 <row id="v4l2-mpeg-video-vbv-delay">
2273 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_DELAY</constant>&nbsp;</entry>
2274 <entry>integer</entry>
2275 </row><row><entry spanname="descr">Sets the initial delay in milliseconds for
2276VBV buffer control.</entry>
2277 </row>
2278
2279 <row><entry></entry></row>
2280 <row>
2281 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE</constant>&nbsp;</entry>
2282 <entry>integer</entry>
2283 </row>
2284 <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip.
2285The CPB is defined in the H264 standard as a mean to verify that the produced stream will be successfully decoded.
2286Applicable to the H264 encoder.</entry>
2287 </row>
2288
2289 <row><entry></entry></row>
2290 <row>
2291 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_PERIOD</constant>&nbsp;</entry>
2292 <entry>integer</entry>
2293 </row>
2294 <row><entry spanname="descr">Period between I-frames in the open GOP for H264. In case of an open GOP
2295this is the period between two I-frames. The period between IDR (Instantaneous Decoding Refresh) frames is taken from the GOP_SIZE control.
2296An IDR frame, which stands for Instantaneous Decoding Refresh is an I-frame after which no prior frames are
2297referenced. This means that a stream can be restarted from an IDR frame without the need to store or decode any
2298previous frames. Applicable to the H264 encoder.</entry>
2299 </row>
2300
2301 <row><entry></entry></row>
2302 <row id="v4l2-mpeg-video-header-mode">
2303 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant>&nbsp;</entry>
2304 <entry>enum&nbsp;v4l2_mpeg_video_header_mode</entry>
2305 </row>
2306 <row><entry spanname="descr">Determines whether the header is returned as the first buffer or is
2307it returned together with the first frame. Applicable to encoders.
2308Possible values are:</entry>
2309 </row>
2310 <row>
2311 <entrytbl spanname="descr" cols="2">
2312 <tbody valign="top">
2313 <row>
2314 <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_SEPARATE</constant>&nbsp;</entry>
2315 <entry>The stream header is returned separately in the first buffer.</entry>
2316 </row>
2317 <row>
2318 <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME</constant>&nbsp;</entry>
2319 <entry>The stream header is returned together with the first encoded frame.</entry>
2320 </row>
2321 </tbody>
2322 </entrytbl>
2323 </row>
2324 <row><entry></entry></row>
2325 <row>
2326 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER</constant>&nbsp;</entry>
2327 <entry>boolean</entry>
2328 </row><row><entry spanname="descr">Enabled the deblocking post processing filter for MPEG4 decoder.
2329Applicable to the MPEG4 decoder.</entry>
2330 </row>
2331 <row><entry></entry></row>
2332 <row>
2333 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_RES</constant>&nbsp;</entry>
2334 <entry>integer</entry>
2335 </row><row><entry spanname="descr">vop_time_increment_resolution value for MPEG4. Applicable to the MPEG4 encoder.</entry>
2336 </row>
2337 <row><entry></entry></row>
2338 <row>
2339 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_INC</constant>&nbsp;</entry>
2340 <entry>integer</entry>
2341 </row><row><entry spanname="descr">vop_time_increment value for MPEG4. Applicable to the MPEG4 encoder.</entry>
2342 </row>
2343
2344 <row><entry></entry></row>
2345 <row>
2346 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING</constant>&nbsp;</entry>
2347 <entry>boolean</entry>
2348 </row>
2349 <row><entry spanname="descr">Enable generation of frame packing supplemental enhancement information in the encoded bitstream.
2350The frame packing SEI message contains the arrangement of L and R planes for 3D viewing. Applicable to the H264 encoder.</entry>
2351 </row>
2352
2353 <row><entry></entry></row>
2354 <row>
2355 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0</constant>&nbsp;</entry>
2356 <entry>boolean</entry>
2357 </row>
2358 <row><entry spanname="descr">Sets current frame as frame0 in frame packing SEI.
2359Applicable to the H264 encoder.</entry>
2360 </row>
2361
2362 <row><entry></entry></row>
2363 <row id="v4l2-mpeg-video-h264-sei-fp-arrangement-type">
2364 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE</constant>&nbsp;</entry>
2365 <entry>enum&nbsp;v4l2_mpeg_video_h264_sei_fp_arrangement_type</entry>
2366 </row>
2367 <row><entry spanname="descr">Frame packing arrangement type for H264 SEI.
2368Applicable to the H264 encoder.
2369Possible values are:</entry>
2370 </row>
2371 <row>
2372 <entrytbl spanname="descr" cols="2">
2373 <tbody valign="top">
2374 <row>
2375 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD</constant>&nbsp;</entry>
2376 <entry>Pixels are alternatively from L and R.</entry>
2377 </row>
2378 <row>
2379 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN</constant>&nbsp;</entry>
2380 <entry>L and R are interlaced by column.</entry>
2381 </row>
2382 <row>
2383 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW</constant>&nbsp;</entry>
2384 <entry>L and R are interlaced by row.</entry>
2385 </row>
2386 <row>
2387 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE</constant>&nbsp;</entry>
2388 <entry>L is on the left, R on the right.</entry>
2389 </row>
2390 <row>
2391 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM</constant>&nbsp;</entry>
2392 <entry>L is on top, R on bottom.</entry>
2393 </row>
2394 <row>
2395 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL</constant>&nbsp;</entry>
2396 <entry>One view per frame.</entry>
2397 </row>
2398 </tbody>
2399 </entrytbl>
2400 </row>
2401
2402 <row><entry></entry></row>
2403 <row>
2404 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO</constant>&nbsp;</entry>
2405 <entry>boolean</entry>
2406 </row>
2407 <row><entry spanname="descr">Enables flexible macroblock ordering in the encoded bitstream. It is a technique
2408used for restructuring the ordering of macroblocks in pictures. Applicable to the H264 encoder.</entry>
2409 </row>
2410
2411 <row><entry></entry></row>
2412 <row id="v4l2-mpeg-video-h264-fmo-map-type">
2413 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE</constant>&nbsp;</entry>
2414 <entry>enum&nbsp;v4l2_mpeg_video_h264_fmo_map_type</entry>
2415 </row>
2416 <row><entry spanname="descr">When using FMO, the map type divides the image in different scan patterns of macroblocks.
2417Applicable to the H264 encoder.
2418Possible values are:</entry>
2419 </row>
2420 <row>
2421 <entrytbl spanname="descr" cols="2">
2422 <tbody valign="top">
2423 <row>
2424 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES</constant>&nbsp;</entry>
2425 <entry>Slices are interleaved one after other with macroblocks in run length order.</entry>
2426 </row>
2427 <row>
2428 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES</constant>&nbsp;</entry>
2429 <entry>Scatters the macroblocks based on a mathematical function known to both encoder and decoder.</entry>
2430 </row>
2431 <row>
2432 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER</constant>&nbsp;</entry>
2433 <entry>Macroblocks arranged in rectangular areas or regions of interest.</entry>
2434 </row>
2435 <row>
2436 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT</constant>&nbsp;</entry>
2437 <entry>Slice groups grow in a cyclic way from centre to outwards.</entry>
2438 </row>
2439 <row>
2440 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN</constant>&nbsp;</entry>
2441 <entry>Slice groups grow in raster scan pattern from left to right.</entry>
2442 </row>
2443 <row>
2444 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN</constant>&nbsp;</entry>
2445 <entry>Slice groups grow in wipe scan pattern from top to bottom.</entry>
2446 </row>
2447 <row>
2448 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT</constant>&nbsp;</entry>
2449 <entry>User defined map type.</entry>
2450 </row>
2451 </tbody>
2452 </entrytbl>
2453 </row>
2454
2455 <row><entry></entry></row>
2456 <row>
2457 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP</constant>&nbsp;</entry>
2458 <entry>integer</entry>
2459 </row>
2460 <row><entry spanname="descr">Number of slice groups in FMO.
2461Applicable to the H264 encoder.</entry>
2462 </row>
2463
2464 <row><entry></entry></row>
2465 <row id="v4l2-mpeg-video-h264-fmo-change-direction">
2466 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION</constant>&nbsp;</entry>
2467 <entry>enum&nbsp;v4l2_mpeg_video_h264_fmo_change_dir</entry>
2468 </row>
2469 <row><entry spanname="descr">Specifies a direction of the slice group change for raster and wipe maps.
2470Applicable to the H264 encoder.
2471Possible values are:</entry>
2472 </row>
2473 <row>
2474 <entrytbl spanname="descr" cols="2">
2475 <tbody valign="top">
2476 <row>
2477 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT</constant>&nbsp;</entry>
2478 <entry>Raster scan or wipe right.</entry>
2479 </row>
2480 <row>
2481 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT</constant>&nbsp;</entry>
2482 <entry>Reverse raster scan or wipe left.</entry>
2483 </row>
2484 </tbody>
2485 </entrytbl>
2486 </row>
2487
2488 <row><entry></entry></row>
2489 <row>
2490 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE</constant>&nbsp;</entry>
2491 <entry>integer</entry>
2492 </row>
2493 <row><entry spanname="descr">Specifies the size of the first slice group for raster and wipe map.
2494Applicable to the H264 encoder.</entry>
2495 </row>
2496
2497 <row><entry></entry></row>
2498 <row>
2499 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH</constant>&nbsp;</entry>
2500 <entry>integer</entry>
2501 </row>
2502 <row><entry spanname="descr">Specifies the number of consecutive macroblocks for the interleaved map.
2503Applicable to the H264 encoder.</entry>
2504 </row>
2505
2506 <row><entry></entry></row>
2507 <row>
2508 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ASO</constant>&nbsp;</entry>
2509 <entry>boolean</entry>
2510 </row>
2511 <row><entry spanname="descr">Enables arbitrary slice ordering in encoded bitstream.
2512Applicable to the H264 encoder.</entry>
2513 </row>
2514
2515 <row><entry></entry></row>
2516 <row>
2517 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER</constant>&nbsp;</entry>
2518 <entry>integer</entry>
2519 </row><row><entry spanname="descr">Specifies the slice order in ASO. Applicable to the H264 encoder.
2520The supplied 32-bit integer is interpreted as follows (bit
25210 = least significant bit):</entry>
2522 </row>
2523 <row>
2524 <entrytbl spanname="descr" cols="2">
2525 <tbody valign="top">
2526 <row>
2527 <entry>Bit 0:15</entry>
2528 <entry>Slice ID</entry>
2529 </row>
2530 <row>
2531 <entry>Bit 16:32</entry>
2532 <entry>Slice position or order</entry>
2533 </row>
2534 </tbody>
2535 </entrytbl>
2536 </row>
2537
2538 <row><entry></entry></row>
2539 <row>
2540 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING</constant>&nbsp;</entry>
2541 <entry>boolean</entry>
2542 </row>
2543 <row><entry spanname="descr">Enables H264 hierarchical coding.
2544Applicable to the H264 encoder.</entry>
2545 </row>
2546
2547 <row><entry></entry></row>
2548 <row id="v4l2-mpeg-video-h264-hierarchical-coding-type">
2549 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE</constant>&nbsp;</entry>
2550 <entry>enum&nbsp;v4l2_mpeg_video_h264_hierarchical_coding_type</entry>
2551 </row>
2552 <row><entry spanname="descr">Specifies the hierarchical coding type.
2553Applicable to the H264 encoder.
2554Possible values are:</entry>
2555 </row>
2556 <row>
2557 <entrytbl spanname="descr" cols="2">
2558 <tbody valign="top">
2559 <row>
2560 <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B</constant>&nbsp;</entry>
2561 <entry>Hierarchical B coding.</entry>
2562 </row>
2563 <row>
2564 <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P</constant>&nbsp;</entry>
2565 <entry>Hierarchical P coding.</entry>
2566 </row>
2567 </tbody>
2568 </entrytbl>
2569 </row>
2570
2571 <row><entry></entry></row>
2572 <row>
2573 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER</constant>&nbsp;</entry>
2574 <entry>integer</entry>
2575 </row>
2576 <row><entry spanname="descr">Specifies the number of hierarchical coding layers.
2577Applicable to the H264 encoder.</entry>
2578 </row>
2579
2580 <row><entry></entry></row>
2581 <row>
2582 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP</constant>&nbsp;</entry>
2583 <entry>integer</entry>
2584 </row><row><entry spanname="descr">Specifies a user defined QP for each layer. Applicable to the H264 encoder.
2585The supplied 32-bit integer is interpreted as follows (bit
25860 = least significant bit):</entry>
2587 </row>
2588 <row>
2589 <entrytbl spanname="descr" cols="2">
2590 <tbody valign="top">
2591 <row>
2592 <entry>Bit 0:15</entry>
2593 <entry>QP value</entry>
2594 </row>
2595 <row>
2596 <entry>Bit 16:32</entry>
2597 <entry>Layer number</entry>
2598 </row>
2599 </tbody>
2600 </entrytbl>
2601 </row>
2602
2603 </tbody>
2604 </tgroup>
2605 </table>
2606 </section>
2607
2608 <section>
2609 <title>MFC 5.1 MPEG Controls</title>
2610
2611 <para>The following MPEG class controls deal with MPEG
2612decoding and encoding settings that are specific to the Multi Format Codec 5.1 device present
2613in the S5P family of SoCs by Samsung.
2614</para>
2615
2616 <table pgwide="1" frame="none" id="mfc51-control-id">
2617 <title>MFC 5.1 Control IDs</title>
2618 <tgroup cols="4">
2619 <colspec colname="c1" colwidth="1*" />
2620 <colspec colname="c2" colwidth="6*" />
2621 <colspec colname="c3" colwidth="2*" />
2622 <colspec colname="c4" colwidth="6*" />
2623 <spanspec namest="c1" nameend="c2" spanname="id" />
2624 <spanspec namest="c2" nameend="c4" spanname="descr" />
2625 <thead>
2626 <row>
2627 <entry spanname="id" align="left">ID</entry>
2628 <entry align="left">Type</entry>
2629 </row><row><entry spanname="descr" align="left">Description</entry>
2630 </row>
2631 </thead>
2632 <tbody valign="top">
2633 <row><entry></entry></row>
2634 <row>
2635 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant>&nbsp;</entry>
2636 <entry>integer</entry>
2637 </row><row><entry spanname="descr">If the display delay is enabled then the decoder has to return a
2638CAPTURE buffer after processing a certain number of OUTPUT buffers. If this number is low, then it may result in
2639buffers not being dequeued in display order. In addition hardware may still use those buffers as reference, thus
2640application should not write to those buffers. This feature can be used for example for generating thumbnails of videos.
2641Applicable to the H264 decoder.
2642 </entry>
2643 </row>
2644 <row><entry></entry></row>
2645 <row>
2646 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>&nbsp;</entry>
2647 <entry>integer</entry>
2648 </row><row><entry spanname="descr">Display delay value for H264 decoder.
2649The decoder is forced to return a decoded frame after the set 'display delay' number of frames. If this number is
2650low it may result in frames returned out of dispaly order, in addition the hardware may still be using the returned buffer
2651as a reference picture for subsequent frames.
2652</entry>
2653 </row>
2654 <row><entry></entry></row>
2655 <row>
2656 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P</constant>&nbsp;</entry>
2657 <entry>integer</entry>
2658 </row><row><entry spanname="descr">The number of reference pictures used for encoding a P picture.
2659Applicable to the H264 encoder.</entry>
2660 </row>
2661 <row><entry></entry></row>
2662 <row>
2663 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING</constant>&nbsp;</entry>
2664 <entry>boolean</entry>
2665 </row><row><entry spanname="descr">Padding enable in the encoder - use a color instead of repeating border pixels.
2666Applicable to encoders.</entry>
2667 </row>
2668 <row><entry></entry></row>
2669 <row>
2670 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV</constant>&nbsp;</entry>
2671 <entry>integer</entry>
2672 </row><row><entry spanname="descr">Padding color in the encoder. Applicable to encoders. The supplied 32-bit integer is interpreted as follows (bit
26730 = least significant bit):</entry>
2674 </row>
2675 <row>
2676 <entrytbl spanname="descr" cols="2">
2677 <tbody valign="top">
2678 <row>
2679 <entry>Bit 0:7</entry>
2680 <entry>V chrominance information</entry>
2681 </row>
2682 <row>
2683 <entry>Bit 8:15</entry>
2684 <entry>U chrominance information</entry>
2685 </row>
2686 <row>
2687 <entry>Bit 16:23</entry>
2688 <entry>Y luminance information</entry>
2689 </row>
2690 <row>
2691 <entry>Bit 24:31</entry>
2692 <entry>Must be zero.</entry>
2693 </row>
2694 </tbody>
2695 </entrytbl>
2696 </row>
2697 <row><entry></entry></row>
2698 <row>
2699 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF</constant>&nbsp;</entry>
2700 <entry>integer</entry>
2701 </row><row><entry spanname="descr">Reaction coefficient for MFC rate control. Applicable to encoders.
2702<para>Note 1: Valid only when the frame level RC is enabled.</para>
2703<para>Note 2: For tight CBR, this field must be small (ex. 2 ~ 10).
2704For VBR, this field must be large (ex. 100 ~ 1000).</para>
2705<para>Note 3: It is not recommended to use the greater number than FRAME_RATE * (10^9 / BIT_RATE).</para>
2706</entry>
2707 </row>
2708 <row><entry></entry></row>
2709 <row>
2710 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK</constant>&nbsp;</entry>
2711 <entry>boolean</entry>
2712 </row><row><entry spanname="descr">Adaptive rate control for dark region.
2713Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2714Applicable to the H264 encoder.</entry>
2715 </row>
2716 <row><entry></entry></row>
2717 <row>
2718 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH</constant>&nbsp;</entry>
2719 <entry>boolean</entry>
2720 </row><row><entry spanname="descr">Adaptive rate control for smooth region.
2721Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2722Applicable to the H264 encoder.</entry>
2723 </row>
2724 <row><entry></entry></row>
2725 <row>
2726 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC</constant>&nbsp;</entry>
2727 <entry>boolean</entry>
2728 </row><row><entry spanname="descr">Adaptive rate control for static region.
2729Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2730Applicable to the H264 encoder.</entry>
2731 </row>
2732 <row><entry></entry></row>
2733 <row>
2734 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY</constant>&nbsp;</entry>
2735 <entry>boolean</entry>
2736 </row><row><entry spanname="descr">Adaptive rate control for activity region.
2737Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2738Applicable to the H264 encoder.</entry>
2739 </row>
2740 <row><entry></entry></row>
2741 <row id="v4l2-mpeg-mfc51-video-frame-skip-mode">
2742 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant>&nbsp;</entry>
2743 <entry>enum&nbsp;v4l2_mpeg_mfc51_video_frame_skip_mode</entry>
2744 </row>
2745 <row><entry spanname="descr">
2746Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then
2747a chosen data limit then the frame will be skipped.
2748Possible values are:</entry>
2749 </row>
2750 <row>
2751 <entrytbl spanname="descr" cols="2">
2752 <tbody valign="top">
2753 <row>
2754 <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED</constant>&nbsp;</entry>
2755 <entry>Frame skip mode is disabled.</entry>
2756 </row>
2757 <row>
2758 <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT</constant>&nbsp;</entry>
2759 <entry>Frame skip mode enabled and buffer limit is set by the chosen level and is defined by the standard.</entry>
2760 </row>
2761 <row>
2762 <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT</constant>&nbsp;</entry>
2763 <entry>Frame skip mode enabled and buffer limit is set by the VBV (MPEG1/2/4) or CPB (H264) buffer size control.</entry>
2764 </row>
2765 </tbody>
2766 </entrytbl>
2767 </row>
2768 <row><entry></entry></row>
2769 <row>
2770 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT</constant>&nbsp;</entry>
2771 <entry>integer</entry>
2772 </row><row><entry spanname="descr">Enable rate-control with fixed target bit.
2773If this setting is enabled, then the rate control logic of the encoder will calculate the average bitrate
2774for a GOP and keep it below or equal the set bitrate target. Otherwise the rate control logic calculates the
2775overall average bitrate for the stream and keeps it below or equal to the set bitrate. In the first case
2776the average bitrate for the whole stream will be smaller then the set bitrate. This is caused because the
2777average is calculated for smaller number of frames, on the other hand enabling this setting will ensure that
2778the stream will meet tight bandwidth contraints. Applicable to encoders.
2779</entry>
2780 </row>
2781 <row><entry></entry></row>
2782 <row id="v4l2-mpeg-mfc51-video-force-frame-type">
2783 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant>&nbsp;</entry>
2784 <entry>enum&nbsp;v4l2_mpeg_mfc51_video_force_frame_type</entry>
2785 </row>
2786 <row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders.
2787Possible values are:</entry>
2788 </row>
2789 <row>
2790 <entrytbl spanname="descr" cols="2">
2791 <tbody valign="top">
2792 <row>
2793 <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED</constant>&nbsp;</entry>
2794 <entry>Forcing a specific frame type disabled.</entry>
2795 </row>
2796 <row>
2797 <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME</constant>&nbsp;</entry>
2798 <entry>Force an I-frame.</entry>
2799 </row>
2800 <row>
2801 <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED</constant>&nbsp;</entry>
2802 <entry>Force a non-coded frame.</entry>
2803 </row>
2804 </tbody>
2805 </entrytbl>
2806 </row>
2807 </tbody>
2808 </tgroup>
2809 </table>
2810 </section>
2811
2812 <section>
2813 <title>CX2341x MPEG Controls</title>
2814
2815 <para>The following MPEG class controls deal with MPEG
2816encoding settings that are specific to the Conexant CX23415 and
2817CX23416 MPEG encoding chips.</para>
2818
2819 <table pgwide="1" frame="none" id="cx2341x-control-id">
2820 <title>CX2341x Control IDs</title>
2821 <tgroup cols="4">
2822 <colspec colname="c1" colwidth="1*" />
2823 <colspec colname="c2" colwidth="6*" />
2824 <colspec colname="c3" colwidth="2*" />
2825 <colspec colname="c4" colwidth="6*" />
2826 <spanspec namest="c1" nameend="c2" spanname="id" />
2827 <spanspec namest="c2" nameend="c4" spanname="descr" />
2828 <thead>
2829 <row>
2830 <entry spanname="id" align="left">ID</entry>
2831 <entry align="left">Type</entry>
2832 </row><row><entry spanname="descr" align="left">Description</entry>
2833 </row>
2834 </thead>
2835 <tbody valign="top">
2836 <row><entry></entry></row>
2837 <row id="v4l2-mpeg-cx2341x-video-spatial-filter-mode">
2838 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE</constant>&nbsp;</entry>
2839 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_spatial_filter_mode</entry>
2840 </row><row><entry spanname="descr">Sets the Spatial
2841Filter mode (default <constant>MANUAL</constant>). Possible values
2842are:</entry>
2843 </row>
2844 <row>
2845 <entrytbl spanname="descr" cols="2">
2846 <tbody valign="top">
2847 <row>
2848 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL</constant>&nbsp;</entry>
2849 <entry>Choose the filter manually</entry>
2850 </row>
2851 <row>
2852 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO</constant>&nbsp;</entry>
2853 <entry>Choose the filter automatically</entry>
2854 </row>
2855 </tbody>
2856 </entrytbl>
2857 </row>
2858 <row><entry></entry></row>
2859 <row>
2860 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER</constant>&nbsp;</entry>
2861 <entry>integer&nbsp;(0-15)</entry>
2862 </row><row><entry spanname="descr">The setting for the
2863Spatial Filter. 0 = off, 15 = maximum. (Default is 0.)</entry>
2864 </row>
2865 <row><entry></entry></row>
2866 <row id="luma-spatial-filter-type">
2867 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE</constant>&nbsp;</entry>
2868 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</entry>
2869 </row><row><entry spanname="descr">Select the algorithm
2870to use for the Luma Spatial Filter (default
2871<constant>1D_HOR</constant>). Possible values:</entry>
2872 </row>
2873 <row>
2874 <entrytbl spanname="descr" cols="2">
2875 <tbody valign="top">
2876 <row>
2877 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF</constant>&nbsp;</entry>
2878 <entry>No filter</entry>
2879 </row>
2880 <row>
2881 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR</constant>&nbsp;</entry>
2882 <entry>One-dimensional horizontal</entry>
2883 </row>
2884 <row>
2885 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT</constant>&nbsp;</entry>
2886 <entry>One-dimensional vertical</entry>
2887 </row>
2888 <row>
2889 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE</constant>&nbsp;</entry>
2890 <entry>Two-dimensional separable</entry>
2891 </row>
2892 <row>
2893 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE</constant>&nbsp;</entry>
2894 <entry>Two-dimensional symmetrical
2895non-separable</entry>
2896 </row>
2897 </tbody>
2898 </entrytbl>
2899 </row>
2900 <row><entry></entry></row>
2901 <row id="chroma-spatial-filter-type">
2902 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE</constant>&nbsp;</entry>
2903 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</entry>
2904 </row><row><entry spanname="descr">Select the algorithm
2905for the Chroma Spatial Filter (default <constant>1D_HOR</constant>).
2906Possible values are:</entry>
2907 </row>
2908 <row>
2909 <entrytbl spanname="descr" cols="2">
2910 <tbody valign="top">
2911 <row>
2912 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF</constant>&nbsp;</entry>
2913 <entry>No filter</entry>
2914 </row>
2915 <row>
2916 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR</constant>&nbsp;</entry>
2917 <entry>One-dimensional horizontal</entry>
2918 </row>
2919 </tbody>
2920 </entrytbl>
2921 </row>
2922 <row><entry></entry></row>
2923 <row id="v4l2-mpeg-cx2341x-video-temporal-filter-mode">
2924 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE</constant>&nbsp;</entry>
2925 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_temporal_filter_mode</entry>
2926 </row><row><entry spanname="descr">Sets the Temporal
2927Filter mode (default <constant>MANUAL</constant>). Possible values
2928are:</entry>
2929 </row>
2930 <row>
2931 <entrytbl spanname="descr" cols="2">
2932 <tbody valign="top">
2933 <row>
2934 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL</constant>&nbsp;</entry>
2935 <entry>Choose the filter manually</entry>
2936 </row>
2937 <row>
2938 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO</constant>&nbsp;</entry>
2939 <entry>Choose the filter automatically</entry>
2940 </row>
2941 </tbody>
2942 </entrytbl>
2943 </row>
2944 <row><entry></entry></row>
2945 <row>
2946 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER</constant>&nbsp;</entry>
2947 <entry>integer&nbsp;(0-31)</entry>
2948 </row><row><entry spanname="descr">The setting for the
2949Temporal Filter. 0 = off, 31 = maximum. (Default is 8 for full-scale
2950capturing and 0 for scaled capturing.)</entry>
2951 </row>
2952 <row><entry></entry></row>
2953 <row id="v4l2-mpeg-cx2341x-video-median-filter-type">
2954 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE</constant>&nbsp;</entry>
2955 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_median_filter_type</entry>
2956 </row><row><entry spanname="descr">Median Filter Type
2957(default <constant>OFF</constant>). Possible values are:</entry>
2958 </row>
2959 <row>
2960 <entrytbl spanname="descr" cols="2">
2961 <tbody valign="top">
2962 <row>
2963 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF</constant>&nbsp;</entry>
2964 <entry>No filter</entry>
2965 </row>
2966 <row>
2967 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR</constant>&nbsp;</entry>
2968 <entry>Horizontal filter</entry>
2969 </row>
2970 <row>
2971 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT</constant>&nbsp;</entry>
2972 <entry>Vertical filter</entry>
2973 </row>
2974 <row>
2975 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT</constant>&nbsp;</entry>
2976 <entry>Horizontal and vertical filter</entry>
2977 </row>
2978 <row>
2979 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG</constant>&nbsp;</entry>
2980 <entry>Diagonal filter</entry>
2981 </row>
2982 </tbody>
2983 </entrytbl>
2984 </row>
2985 <row><entry></entry></row>
2986 <row>
2987 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM</constant>&nbsp;</entry>
2988 <entry>integer&nbsp;(0-255)</entry>
2989 </row><row><entry spanname="descr">Threshold above which
2990the luminance median filter is enabled (default 0)</entry>
2991 </row>
2992 <row><entry></entry></row>
2993 <row>
2994 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP</constant>&nbsp;</entry>
2995 <entry>integer&nbsp;(0-255)</entry>
2996 </row><row><entry spanname="descr">Threshold below which
2997the luminance median filter is enabled (default 255)</entry>
2998 </row>
2999 <row><entry></entry></row>
3000 <row>
3001 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM</constant>&nbsp;</entry>
3002 <entry>integer&nbsp;(0-255)</entry>
3003 </row><row><entry spanname="descr">Threshold above which
3004the chroma median filter is enabled (default 0)</entry>
3005 </row>
3006 <row><entry></entry></row>
3007 <row>
3008 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP</constant>&nbsp;</entry>
3009 <entry>integer&nbsp;(0-255)</entry>
3010 </row><row><entry spanname="descr">Threshold below which
3011the chroma median filter is enabled (default 255)</entry>
3012 </row>
3013 <row><entry></entry></row>
3014 <row>
3015 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS</constant>&nbsp;</entry>
3016 <entry>boolean</entry>
3017 </row>
3018 <row><entry spanname="descr">The CX2341X MPEG encoder
3019can insert one empty MPEG-2 PES packet into the stream between every
3020four video frames. The packet size is 2048 bytes, including the
3021packet_start_code_prefix and stream_id fields. The stream_id is 0xBF
3022(private stream 2). The payload consists of 0x00 bytes, to be filled
3023in by the application. 0 = do not insert, 1 = insert packets.</entry>
3024 </row>
3025 </tbody>
3026 </tgroup>
3027 </table>
3028 </section>
3029 </section>
3030
3031 <section id="camera-controls">
3032 <title>Camera Control Reference</title>
3033
3034 <para>The Camera class includes controls for mechanical (or
3035equivalent digital) features of a device such as controllable lenses
3036or sensors.</para>
3037
3038 <table pgwide="1" frame="none" id="camera-control-id">
3039 <title>Camera Control IDs</title>
3040 <tgroup cols="4">
3041 <colspec colname="c1" colwidth="1*" />
3042 <colspec colname="c2" colwidth="6*" />
3043 <colspec colname="c3" colwidth="2*" />
3044 <colspec colname="c4" colwidth="6*" />
3045 <spanspec namest="c1" nameend="c2" spanname="id" />
3046 <spanspec namest="c2" nameend="c4" spanname="descr" />
3047 <thead>
3048 <row>
3049 <entry spanname="id" align="left">ID</entry>
3050 <entry align="left">Type</entry>
3051 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
3052 </row>
3053 </thead>
3054 <tbody valign="top">
3055 <row><entry></entry></row>
3056 <row>
3057 <entry spanname="id"><constant>V4L2_CID_CAMERA_CLASS</constant>&nbsp;</entry>
3058 <entry>class</entry>
3059 </row><row><entry spanname="descr">The Camera class
3060descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
3061description of this control class.</entry>
3062 </row>
3063 <row><entry></entry></row>
3064
3065 <row id="v4l2-exposure-auto-type">
3066 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO</constant>&nbsp;</entry>
3067 <entry>enum&nbsp;v4l2_exposure_auto_type</entry>
3068 </row><row><entry spanname="descr">Enables automatic
3069adjustments of the exposure time and/or iris aperture. The effect of
3070manual changes of the exposure time or iris aperture while these
3071features are enabled is undefined, drivers should ignore such
3072requests. Possible values are:</entry>
3073 </row>
3074 <row>
3075 <entrytbl spanname="descr" cols="2">
3076 <tbody valign="top">
3077 <row>
3078 <entry><constant>V4L2_EXPOSURE_AUTO</constant>&nbsp;</entry>
3079 <entry>Automatic exposure time, automatic iris
3080aperture.</entry>
3081 </row>
3082 <row>
3083 <entry><constant>V4L2_EXPOSURE_MANUAL</constant>&nbsp;</entry>
3084 <entry>Manual exposure time, manual iris.</entry>
3085 </row>
3086 <row>
3087 <entry><constant>V4L2_EXPOSURE_SHUTTER_PRIORITY</constant>&nbsp;</entry>
3088 <entry>Manual exposure time, auto iris.</entry>
3089 </row>
3090 <row>
3091 <entry><constant>V4L2_EXPOSURE_APERTURE_PRIORITY</constant>&nbsp;</entry>
3092 <entry>Auto exposure time, manual iris.</entry>
3093 </row>
3094 </tbody>
3095 </entrytbl>
3096 </row>
3097 <row><entry></entry></row>
3098
3099 <row>
3100 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_ABSOLUTE</constant>&nbsp;</entry>
3101 <entry>integer</entry>
3102 </row><row><entry spanname="descr">Determines the exposure
3103time of the camera sensor. The exposure time is limited by the frame
3104interval. Drivers should interpret the values as 100 &micro;s units,
3105where the value 1 stands for 1/10000th of a second, 10000 for 1 second
3106and 100000 for 10 seconds.</entry>
3107 </row>
3108 <row><entry></entry></row>
3109
3110 <row>
3111 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO_PRIORITY</constant>&nbsp;</entry>
3112 <entry>boolean</entry>
3113 </row><row><entry spanname="descr">When
3114<constant>V4L2_CID_EXPOSURE_AUTO</constant> is set to
3115<constant>AUTO</constant> or <constant>APERTURE_PRIORITY</constant>,
3116this control determines if the device may dynamically vary the frame
3117rate. By default this feature is disabled (0) and the frame rate must
3118remain constant.</entry>
3119 </row>
3120 <row><entry></entry></row>
3121
3122 <row>
3123 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_BIAS</constant>&nbsp;</entry>
3124 <entry>integer menu</entry>
3125 </row><row><entry spanname="descr"> Determines the automatic
3126exposure compensation, it is effective only when <constant>V4L2_CID_EXPOSURE_AUTO</constant>
3127control is set to <constant>AUTO</constant>, <constant>SHUTTER_PRIORITY </constant>
3128or <constant>APERTURE_PRIORITY</constant>.
3129It is expressed in terms of EV, drivers should interpret the values as 0.001 EV
3130units, where the value 1000 stands for +1 EV.
3131<para>Increasing the exposure compensation value is equivalent to decreasing
3132the exposure value (EV) and will increase the amount of light at the image
3133sensor. The camera performs the exposure compensation by adjusting absolute
3134exposure time and/or aperture.</para></entry>
3135 </row>
3136 <row><entry></entry></row>
3137
3138 <row id="v4l2-exposure-metering">
3139 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant>&nbsp;</entry>
3140 <entry>enum&nbsp;v4l2_exposure_metering</entry>
3141 </row><row><entry spanname="descr">Determines how the camera measures
3142the amount of light available for the frame exposure. Possible values are:</entry>
3143 </row>
3144 <row>
3145 <entrytbl spanname="descr" cols="2">
3146 <tbody valign="top">
3147 <row>
3148 <entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant>&nbsp;</entry>
3149 <entry>Use the light information coming from the entire frame
3150and average giving no weighting to any particular portion of the metered area.
3151 </entry>
3152 </row>
3153 <row>
3154 <entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant>&nbsp;</entry>
3155 <entry>Average the light information coming from the entire frame
3156giving priority to the center of the metered area.</entry>
3157 </row>
3158 <row>
3159 <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry>
3160 <entry>Measure only very small area at the center of the frame.</entry>
3161 </row>
3162 </tbody>
3163 </entrytbl>
3164 </row>
3165 <row><entry></entry></row>
3166
3167 <row>
3168 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry>
3169 <entry>integer</entry>
3170 </row><row><entry spanname="descr">This control turns the
3171camera horizontally by the specified amount. The unit is undefined. A
3172positive value moves the camera to the right (clockwise when viewed
3173from above), a negative value to the left. A value of zero does not
3174cause motion. This is a write-only control.</entry>
3175 </row>
3176 <row><entry></entry></row>
3177
3178 <row>
3179 <entry spanname="id"><constant>V4L2_CID_TILT_RELATIVE</constant>&nbsp;</entry>
3180 <entry>integer</entry>
3181 </row><row><entry spanname="descr">This control turns the
3182camera vertically by the specified amount. The unit is undefined. A
3183positive value moves the camera up, a negative value down. A value of
3184zero does not cause motion. This is a write-only control.</entry>
3185 </row>
3186 <row><entry></entry></row>
3187
3188 <row>
3189 <entry spanname="id"><constant>V4L2_CID_PAN_RESET</constant>&nbsp;</entry>
3190 <entry>button</entry>
3191 </row><row><entry spanname="descr">When this control is set,
3192the camera moves horizontally to the default position.</entry>
3193 </row>
3194 <row><entry></entry></row>
3195
3196 <row>
3197 <entry spanname="id"><constant>V4L2_CID_TILT_RESET</constant>&nbsp;</entry>
3198 <entry>button</entry>
3199 </row><row><entry spanname="descr">When this control is set,
3200the camera moves vertically to the default position.</entry>
3201 </row>
3202 <row><entry></entry></row>
3203
3204 <row>
3205 <entry spanname="id"><constant>V4L2_CID_PAN_ABSOLUTE</constant>&nbsp;</entry>
3206 <entry>integer</entry>
3207 </row><row><entry spanname="descr">This control
3208turns the camera horizontally to the specified position. Positive
3209values move the camera to the right (clockwise when viewed from above),
3210negative values to the left. Drivers should interpret the values as arc
3211seconds, with valid values between -180 * 3600 and +180 * 3600
3212inclusive.</entry>
3213 </row>
3214 <row><entry></entry></row>
3215
3216 <row>
3217 <entry spanname="id"><constant>V4L2_CID_TILT_ABSOLUTE</constant>&nbsp;</entry>
3218 <entry>integer</entry>
3219 </row><row><entry spanname="descr">This control
3220turns the camera vertically to the specified position. Positive values
3221move the camera up, negative values down. Drivers should interpret the
3222values as arc seconds, with valid values between -180 * 3600 and +180
3223* 3600 inclusive.</entry>
3224 </row>
3225 <row><entry></entry></row>
3226
3227 <row>
3228 <entry spanname="id"><constant>V4L2_CID_FOCUS_ABSOLUTE</constant>&nbsp;</entry>
3229 <entry>integer</entry>
3230 </row><row><entry spanname="descr">This control sets the
3231focal point of the camera to the specified position. The unit is
3232undefined. Positive values set the focus closer to the camera,
3233negative values towards infinity.</entry>
3234 </row>
3235 <row><entry></entry></row>
3236
3237 <row>
3238 <entry spanname="id"><constant>V4L2_CID_FOCUS_RELATIVE</constant>&nbsp;</entry>
3239 <entry>integer</entry>
3240 </row><row><entry spanname="descr">This control moves the
3241focal point of the camera by the specified amount. The unit is
3242undefined. Positive values move the focus closer to the camera,
3243negative values towards infinity. This is a write-only control.</entry>
3244 </row>
3245 <row><entry></entry></row>
3246
3247 <row>
3248 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry>
3249 <entry>boolean</entry>
3250 </row><row><entry spanname="descr">Enables continuous automatic
3251focus adjustments. The effect of manual focus adjustments while this feature
3252is enabled is undefined, drivers should ignore such requests.</entry>
3253 </row>
3254 <row><entry></entry></row>
3255
3256 <row>
3257 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_START</constant>&nbsp;</entry>
3258 <entry>button</entry>
3259 </row><row><entry spanname="descr">Starts single auto focus process.
3260The effect of setting this control when <constant>V4L2_CID_FOCUS_AUTO</constant>
3261is set to <constant>TRUE</constant> (1) is undefined, drivers should ignore
3262such requests.</entry>
3263 </row>
3264 <row><entry></entry></row>
3265
3266 <row>
3267 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_STOP</constant>&nbsp;</entry>
3268 <entry>button</entry>
3269 </row><row><entry spanname="descr">Aborts automatic focusing
3270started with <constant>V4L2_CID_AUTO_FOCUS_START</constant> control. It is
3271effective only when the continuous autofocus is disabled, that is when
3272<constant>V4L2_CID_FOCUS_AUTO</constant> control is set to <constant>FALSE
3273</constant> (0).</entry>
3274 </row>
3275 <row><entry></entry></row>
3276
3277 <row id="v4l2-auto-focus-status">
3278 <entry spanname="id">
3279 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>&nbsp;</entry>
3280 <entry>bitmask</entry>
3281 </row>
3282 <row><entry spanname="descr">The automatic focus status. This is a read-only
3283 control.</entry>
3284 </row>
3285 <row>
3286 <entrytbl spanname="descr" cols="2">
3287 <tbody valign="top">
3288 <row>
3289 <entry><constant>V4L2_AUTO_FOCUS_STATUS_IDLE</constant>&nbsp;</entry>
3290 <entry>Automatic focus is not active.</entry>
3291 </row>
3292 <row>
3293 <entry><constant>V4L2_AUTO_FOCUS_STATUS_BUSY</constant>&nbsp;</entry>
3294 <entry>Automatic focusing is in progress.</entry>
3295 </row>
3296 <row>
3297 <entry><constant>V4L2_AUTO_FOCUS_STATUS_REACHED</constant>&nbsp;</entry>
3298 <entry>Focus has been reached.</entry>
3299 </row>
3300 <row>
3301 <entry><constant>V4L2_AUTO_FOCUS_STATUS_FAILED</constant>&nbsp;</entry>
3302 <entry>Automatic focus has failed, the driver will not
3303 transition from this state until another action is
3304 performed by an application.</entry>
3305 </row>
3306 </tbody>
3307 </entrytbl>
3308 </row>
3309 <row><entry spanname="descr">
3310Setting <constant>V4L2_LOCK_FOCUS</constant> lock bit of the <constant>V4L2_CID_3A_LOCK
3311</constant> control may stop updates of the <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>
3312control value.</entry>
3313 </row>
3314 <row><entry></entry></row>
3315
3316 <row id="v4l2-auto-focus-range">
3317 <entry spanname="id">
3318 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>&nbsp;</entry>
3319 <entry>enum&nbsp;v4l2_auto_focus_range</entry>
3320 </row>
3321 <row><entry spanname="descr">Determines auto focus distance range
3322for which lens may be adjusted. </entry>
3323 </row>
3324 <row>
3325 <entrytbl spanname="descr" cols="2">
3326 <tbody valign="top">
3327 <row>
3328 <entry><constant>V4L2_AUTO_FOCUS_RANGE_AUTO</constant>&nbsp;</entry>
3329 <entry>The camera automatically selects the focus range.</entry>
3330 </row>
3331 <row>
3332 <entry><constant>V4L2_AUTO_FOCUS_RANGE_NORMAL</constant>&nbsp;</entry>
3333 <entry>Normal distance range, limited for best automatic focus
3334performance.</entry>
3335 </row>
3336 <row>
3337 <entry><constant>V4L2_AUTO_FOCUS_RANGE_MACRO</constant>&nbsp;</entry>
3338 <entry>Macro (close-up) auto focus. The camera will
3339use its minimum possible distance for auto focus.</entry>
3340 </row>
3341 <row>
3342 <entry><constant>V4L2_AUTO_FOCUS_RANGE_INFINITY</constant>&nbsp;</entry>
3343 <entry>The lens is set to focus on an object at infinite distance.</entry>
3344 </row>
3345 </tbody>
3346 </entrytbl>
3347 </row>
3348 <row><entry></entry></row>
3349
3350 <row>
3351 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry>
3352 <entry>integer</entry>
3353 </row><row><entry spanname="descr">Specify the objective lens
3354focal length as an absolute value. The zoom unit is driver-specific and its
3355value should be a positive integer.</entry>
3356 </row>
3357 <row><entry></entry></row>
3358
3359 <row>
3360 <entry spanname="id"><constant>V4L2_CID_ZOOM_RELATIVE</constant>&nbsp;</entry>
3361 <entry>integer</entry>
3362 </row><row><entry spanname="descr">Specify the objective lens
3363focal length relatively to the current value. Positive values move the zoom
3364lens group towards the telephoto direction, negative values towards the
3365wide-angle direction. The zoom unit is driver-specific. This is a write-only control.</entry>
3366 </row>
3367 <row><entry></entry></row>
3368
3369 <row>
3370 <entry spanname="id"><constant>V4L2_CID_ZOOM_CONTINUOUS</constant>&nbsp;</entry>
3371 <entry>integer</entry>
3372 </row><row><entry spanname="descr">Move the objective lens group
3373at the specified speed until it reaches physical device limits or until an
3374explicit request to stop the movement. A positive value moves the zoom lens
3375group towards the telephoto direction. A value of zero stops the zoom lens
3376group movement. A negative value moves the zoom lens group towards the
3377wide-angle direction. The zoom speed unit is driver-specific.</entry>
3378 </row>
3379 <row><entry></entry></row>
3380
3381 <row>
3382 <entry spanname="id"><constant>V4L2_CID_IRIS_ABSOLUTE</constant>&nbsp;</entry>
3383 <entry>integer</entry>
3384 </row><row><entry spanname="descr">This control sets the
3385camera's aperture to the specified value. The unit is undefined.
3386Larger values open the iris wider, smaller values close it.</entry>
3387 </row>
3388 <row><entry></entry></row>
3389
3390 <row>
3391 <entry spanname="id"><constant>V4L2_CID_IRIS_RELATIVE</constant>&nbsp;</entry>
3392 <entry>integer</entry>
3393 </row><row><entry spanname="descr">This control modifies the
3394camera's aperture by the specified amount. The unit is undefined.
3395Positive values open the iris one step further, negative values close
3396it one step further. This is a write-only control.</entry>
3397 </row>
3398 <row><entry></entry></row>
3399
3400 <row>
3401 <entry spanname="id"><constant>V4L2_CID_PRIVACY</constant>&nbsp;</entry>
3402 <entry>boolean</entry>
3403 </row><row><entry spanname="descr">Prevent video from being acquired
3404by the camera. When this control is set to <constant>TRUE</constant> (1), no
3405image can be captured by the camera. Common means to enforce privacy are
3406mechanical obturation of the sensor and firmware image processing, but the
3407device is not restricted to these methods. Devices that implement the privacy
3408control must support read access and may support write access.</entry>
3409 </row>
3410
3411 <row>
3412 <entry spanname="id"><constant>V4L2_CID_BAND_STOP_FILTER</constant>&nbsp;</entry>
3413 <entry>integer</entry>
3414 </row><row><entry spanname="descr">Switch the band-stop filter of a
3415camera sensor on or off, or specify its strength. Such band-stop filters can
3416be used, for example, to filter out the fluorescent light component.</entry>
3417 </row>
3418 <row><entry></entry></row>
3419
3420 <row id="v4l2-auto-n-preset-white-balance">
3421 <entry spanname="id"><constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>&nbsp;</entry>
3422 <entry>enum&nbsp;v4l2_auto_n_preset_white_balance</entry>
3423 </row><row><entry spanname="descr">Sets white balance to automatic,
3424manual or a preset. The presets determine color temperature of the light as
3425a hint to the camera for white balance adjustments resulting in most accurate
3426color representation. The following white balance presets are listed in order
3427of increasing color temperature.</entry>
3428 </row>
3429 <row>
3430 <entrytbl spanname="descr" cols="2">
3431 <tbody valign="top">
3432 <row>
3433 <entry><constant>V4L2_WHITE_BALANCE_MANUAL</constant>&nbsp;</entry>
3434 <entry>Manual white balance.</entry>
3435 </row>
3436 <row>
3437 <entry><constant>V4L2_WHITE_BALANCE_AUTO</constant>&nbsp;</entry>
3438 <entry>Automatic white balance adjustments.</entry>
3439 </row>
3440 <row>
3441 <entry><constant>V4L2_WHITE_BALANCE_INCANDESCENT</constant>&nbsp;</entry>
3442 <entry>White balance setting for incandescent (tungsten) lighting.
3443It generally cools down the colors and corresponds approximately to 2500...3500 K
3444color temperature range.</entry>
3445 </row>
3446 <row>
3447 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT</constant>&nbsp;</entry>
3448 <entry>White balance preset for fluorescent lighting.
3449It corresponds approximately to 4000...5000 K color temperature.</entry>
3450 </row>
3451 <row>
3452 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT_H</constant>&nbsp;</entry>
3453 <entry>With this setting the camera will compensate for
3454fluorescent H lighting.</entry>
3455 </row>
3456 <row>
3457 <entry><constant>V4L2_WHITE_BALANCE_HORIZON</constant>&nbsp;</entry>
3458 <entry>White balance setting for horizon daylight.
3459It corresponds approximately to 5000 K color temperature.</entry>
3460 </row>
3461 <row>
3462 <entry><constant>V4L2_WHITE_BALANCE_DAYLIGHT</constant>&nbsp;</entry>
3463 <entry>White balance preset for daylight (with clear sky).
3464It corresponds approximately to 5000...6500 K color temperature.</entry>
3465 </row>
3466 <row>
3467 <entry><constant>V4L2_WHITE_BALANCE_FLASH</constant>&nbsp;</entry>
3468 <entry>With this setting the camera will compensate for the flash
3469light. It slightly warms up the colors and corresponds roughly to 5000...5500 K
3470color temperature.</entry>
3471 </row>
3472 <row>
3473 <entry><constant>V4L2_WHITE_BALANCE_CLOUDY</constant>&nbsp;</entry>
3474 <entry>White balance preset for moderately overcast sky.
3475This option corresponds approximately to 6500...8000 K color temperature
3476range.</entry>
3477 </row>
3478 <row>
3479 <entry><constant>V4L2_WHITE_BALANCE_SHADE</constant>&nbsp;</entry>
3480 <entry>White balance preset for shade or heavily overcast
3481sky. It corresponds approximately to 9000...10000 K color temperature.
3482</entry>
3483 </row>
3484 </tbody>
3485 </entrytbl>
3486 </row>
3487 <row><entry></entry></row>
3488
3489 <row id="v4l2-wide-dynamic-range">
3490 <entry spanname="id"><constant>V4L2_CID_WIDE_DYNAMIC_RANGE</constant></entry>
3491 <entry>boolean</entry>
3492 </row>
3493 <row>
3494 <entry spanname="descr">Enables or disables the camera's wide dynamic
3495range feature. This feature allows to obtain clear images in situations where
3496intensity of the illumination varies significantly throughout the scene, i.e.
3497there are simultaneously very dark and very bright areas. It is most commonly
3498realized in cameras by combining two subsequent frames with different exposure
3499times. <footnote id="ctypeconv"><para> This control may be changed to a menu
3500control in the future, if more options are required.</para></footnote></entry>
3501 </row>
3502 <row><entry></entry></row>
3503
3504 <row id="v4l2-image-stabilization">
3505 <entry spanname="id"><constant>V4L2_CID_IMAGE_STABILIZATION</constant></entry>
3506 <entry>boolean</entry>
3507 </row>
3508 <row>
3509 <entry spanname="descr">Enables or disables image stabilization.
3510 <footnoteref linkend="ctypeconv"/></entry>
3511 </row>
3512 <row><entry></entry></row>
3513
3514 <row>
3515 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant>&nbsp;</entry>
3516 <entry>integer menu</entry>
3517 </row><row><entry spanname="descr">Determines ISO equivalent of an
3518image sensor indicating the sensor's sensitivity to light. The numbers are
3519expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard,
3520where doubling the sensor sensitivity is represented by doubling the numerical
3521ISO value. Applications should interpret the values as standard ISO values
3522multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
3523usually support only a subset of standard ISO values. The effect of setting
3524this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>
3525control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL
3526</constant> is undefined, drivers should ignore such requests.</entry>
3527 </row>
3528 <row><entry></entry></row>
3529
3530 <row id="v4l2-iso-sensitivity-auto-type">
3531 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3532 <entry>enum&nbsp;v4l2_iso_sensitivity_type</entry>
3533 </row><row><entry spanname="descr">Enables or disables automatic ISO
3534sensitivity adjustments.</entry>
3535 </row>
3536 <row>
3537 <entrytbl spanname="descr" cols="2">
3538 <tbody valign="top">
3539 <row>
3540 <entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant>&nbsp;</entry>
3541 <entry>Manual ISO sensitivity.</entry>
3542 </row>
3543 <row>
3544 <entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3545 <entry>Automatic ISO sensitivity adjustments.</entry>
3546 </row>
3547 </tbody>
3548 </entrytbl>
3549 </row>
3550 <row><entry></entry></row>
3551
3552 <row id="v4l2-scene-mode">
3553 <entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant>&nbsp;</entry>
3554 <entry>enum&nbsp;v4l2_scene_mode</entry>
3555 </row><row><entry spanname="descr">This control allows to select
3556scene programs as the camera automatic modes optimized for common shooting
3557scenes. Within these modes the camera determines best exposure, aperture,
3558focusing, light metering, white balance and equivalent sensitivity. The
3559controls of those parameters are influenced by the scene mode control.
3560An exact behavior in each mode is subject to the camera specification.
3561
3562<para>When the scene mode feature is not used, this control should be set to
3563<constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly
3564related controls are accessible. The following scene programs are defined:
3565</para>
3566</entry>
3567 </row>
3568 <row>
3569 <entrytbl spanname="descr" cols="2">
3570 <tbody valign="top">
3571 <row>
3572 <entry><constant>V4L2_SCENE_MODE_NONE</constant>&nbsp;</entry>
3573 <entry>The scene mode feature is disabled.</entry>
3574 </row>
3575 <row>
3576 <entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant>&nbsp;</entry>
3577 <entry>Backlight. Compensates for dark shadows when light is
3578 coming from behind a subject, also by automatically turning
3579 on the flash.</entry>
3580 </row>
3581 <row>
3582 <entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant>&nbsp;</entry>
3583 <entry>Beach and snow. This mode compensates for all-white or
3584bright scenes, which tend to look gray and low contrast, when camera's automatic
3585exposure is based on an average scene brightness. To compensate, this mode
3586automatically slightly overexposes the frames. The white balance may also be
3587adjusted to compensate for the fact that reflected snow looks bluish rather
3588than white.</entry>
3589 </row>
3590 <row>
3591 <entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant>&nbsp;</entry>
3592 <entry>Candle light. The camera generally raises the ISO
3593sensitivity and lowers the shutter speed. This mode compensates for relatively
3594close subject in the scene. The flash is disabled in order to preserve the
3595ambiance of the light.</entry>
3596 </row>
3597 <row>
3598 <entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant>&nbsp;</entry>
3599 <entry>Dawn and dusk. Preserves the colors seen in low
3600natural light before dusk and after down. The camera may turn off the flash,
3601and automatically focus at infinity. It will usually boost saturation and
3602lower the shutter speed.</entry>
3603 </row>
3604 <row>
3605 <entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant>&nbsp;</entry>
3606 <entry>Fall colors. Increases saturation and adjusts white
3607balance for color enhancement. Pictures of autumn leaves get saturated reds
3608and yellows.</entry>
3609 </row>
3610 <row>
3611 <entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant>&nbsp;</entry>
3612 <entry>Fireworks. Long exposure times are used to capture
3613the expanding burst of light from a firework. The camera may invoke image
3614stabilization.</entry>
3615 </row>
3616 <row>
3617 <entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant>&nbsp;</entry>
3618 <entry>Landscape. The camera may choose a small aperture to
3619provide deep depth of field and long exposure duration to help capture detail
3620in dim light conditions. The focus is fixed at infinity. Suitable for distant
3621and wide scenery.</entry>
3622 </row>
3623 <row>
3624 <entry><constant>V4L2_SCENE_MODE_NIGHT</constant>&nbsp;</entry>
3625 <entry>Night, also known as Night Landscape. Designed for low
3626light conditions, it preserves detail in the dark areas without blowing out bright
3627objects. The camera generally sets itself to a medium-to-high ISO sensitivity,
3628with a relatively long exposure time, and turns flash off. As such, there will be
3629increased image noise and the possibility of blurred image.</entry>
3630 </row>
3631 <row>
3632 <entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant>&nbsp;</entry>
3633 <entry>Party and indoor. Designed to capture indoor scenes
3634that are lit by indoor background lighting as well as the flash. The camera
3635usually increases ISO sensitivity, and adjusts exposure for the low light
3636conditions.</entry>
3637 </row>
3638 <row>
3639 <entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant>&nbsp;</entry>
3640 <entry>Portrait. The camera adjusts the aperture so that the
3641depth of field is reduced, which helps to isolate the subject against a smooth
3642background. Most cameras recognize the presence of faces in the scene and focus
3643on them. The color hue is adjusted to enhance skin tones. The intensity of the
3644flash is often reduced.</entry>
3645 </row>
3646 <row>
3647 <entry><constant>V4L2_SCENE_MODE_SPORTS</constant>&nbsp;</entry>
3648 <entry>Sports. Significantly increases ISO and uses a fast
3649shutter speed to freeze motion of rapidly-moving subjects. Increased image
3650noise may be seen in this mode.</entry>
3651 </row>
3652 <row>
3653 <entry><constant>V4L2_SCENE_MODE_SUNSET</constant>&nbsp;</entry>
3654 <entry>Sunset. Preserves deep hues seen in sunsets and
3655sunrises. It bumps up the saturation.</entry>
3656 </row>
3657 <row>
3658 <entry><constant>V4L2_SCENE_MODE_TEXT</constant>&nbsp;</entry>
3659 <entry>Text. It applies extra contrast and sharpness, it is
3660typically a black-and-white mode optimized for readability. Automatic focus
3661may be switched to close-up mode and this setting may also involve some
3662lens-distortion correction.</entry>
3663 </row>
3664 </tbody>
3665 </entrytbl>
3666 </row>
3667 <row><entry></entry></row>
3668
3669 <row>
3670 <entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
3671 <entry>bitmask</entry>
3672 </row>
3673 <row>
3674 <entry spanname="descr">This control locks or unlocks the automatic
3675focus, exposure and white balance. The automatic adjustments can be paused
3676independently by setting the corresponding lock bit to 1. The camera then retains
3677the settings until the lock bit is cleared. The following lock bits are defined:
3678</entry>
3679 </row>
3680 <row>
3681 <entrytbl spanname="descr" cols="2">
3682 <tbody valign="top">
3683 <row>
3684 <entry><constant>V4L2_LOCK_EXPOSURE</constant></entry>
3685 <entry>Automatic exposure adjustments lock.</entry>
3686 </row>
3687 <row>
3688 <entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry>
3689 <entry>Automatic white balance adjustments lock.</entry>
3690 </row>
3691 <row>
3692 <entry><constant>V4L2_LOCK_FOCUS</constant></entry>
3693 <entry>Automatic focus lock.</entry>
3694 </row>
3695 </tbody>
3696 </entrytbl>
3697 </row>
3698 <row><entry spanname="descr">
3699When a given algorithm is not enabled, drivers should ignore requests
3700to lock it and should return no error. An example might be an application
3701setting bit <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the
3702<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
3703<constant>FALSE</constant>. The value of this control may be changed
3704by exposure, white balance or focus controls.</entry>
3705 </row>
3706 <row><entry></entry></row>
3707
3708 </tbody>
3709 </tgroup>
3710 </table>
3711 </section>
3712
3713 <section id="fm-tx-controls">
3714 <title>FM Transmitter Control Reference</title>
3715
3716 <para>The FM Transmitter (FM_TX) class includes controls for common features of
3717FM transmissions capable devices. Currently this class includes parameters for audio
3718compression, pilot tone generation, audio deviation limiter, RDS transmission and
3719tuning power features.</para>
3720
3721 <table pgwide="1" frame="none" id="fm-tx-control-id">
3722 <title>FM_TX Control IDs</title>
3723
3724 <tgroup cols="4">
3725 <colspec colname="c1" colwidth="1*" />
3726 <colspec colname="c2" colwidth="6*" />
3727 <colspec colname="c3" colwidth="2*" />
3728 <colspec colname="c4" colwidth="6*" />
3729 <spanspec namest="c1" nameend="c2" spanname="id" />
3730 <spanspec namest="c2" nameend="c4" spanname="descr" />
3731 <thead>
3732 <row>
3733 <entry spanname="id" align="left">ID</entry>
3734 <entry align="left">Type</entry>
3735 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
3736 </row>
3737 </thead>
3738 <tbody valign="top">
3739 <row><entry></entry></row>
3740 <row>
3741 <entry spanname="id"><constant>V4L2_CID_FM_TX_CLASS</constant>&nbsp;</entry>
3742 <entry>class</entry>
3743 </row><row><entry spanname="descr">The FM_TX class
3744descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
3745description of this control class.</entry>
3746 </row>
3747 <row>
3748 <entry spanname="id"><constant>V4L2_CID_RDS_TX_DEVIATION</constant>&nbsp;</entry>
3749 <entry>integer</entry>
3750 </row>
3751 <row><entry spanname="descr">Configures RDS signal frequency deviation level in Hz.
3752The range and step are driver-specific.</entry>
3753 </row>
3754 <row>
3755 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PI</constant>&nbsp;</entry>
3756 <entry>integer</entry>
3757 </row>
3758 <row><entry spanname="descr">Sets the RDS Programme Identification field
3759for transmission.</entry>
3760 </row>
3761 <row>
3762 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PTY</constant>&nbsp;</entry>
3763 <entry>integer</entry>
3764 </row>
3765 <row><entry spanname="descr">Sets the RDS Programme Type field for transmission.
3766This encodes up to 31 pre-defined programme types.</entry>
3767 </row>
3768 <row>
3769 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PS_NAME</constant>&nbsp;</entry>
3770 <entry>string</entry>
3771 </row>
3772 <row><entry spanname="descr">Sets the Programme Service name (PS_NAME) for transmission.
3773It is intended for static display on a receiver. It is the primary aid to listeners in programme service
3774identification and selection. In Annex E of <xref linkend="iec62106" />, the RDS specification,
3775there is a full description of the correct character encoding for Programme Service name strings.
3776Also from RDS specification, PS is usually a single eight character text. However, it is also possible
3777to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured
3778with steps of 8 characters. The result is it must always contain a string with size multiple of 8.</entry>
3779 </row>
3780 <row>
3781 <entry spanname="id"><constant>V4L2_CID_RDS_TX_RADIO_TEXT</constant>&nbsp;</entry>
3782 <entry>string</entry>
3783 </row>
3784 <row><entry spanname="descr">Sets the Radio Text info for transmission. It is a textual description of
3785what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names,
3786programme-related information or any other text. In these cases, RadioText should be used in addition to
3787<constant>V4L2_CID_RDS_TX_PS_NAME</constant>. The encoding for Radio Text strings is also fully described
3788in Annex E of <xref linkend="iec62106" />. The length of Radio Text strings depends on which RDS Block is being
3789used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible
3790to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured
3791with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry>
3792 </row>
3793 <row>
3794 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_ENABLED</constant>&nbsp;</entry>
3795 <entry>boolean</entry>
3796 </row>
3797 <row><entry spanname="descr">Enables or disables the audio deviation limiter feature.
3798The limiter is useful when trying to maximize the audio volume, minimize receiver-generated
3799distortion and prevent overmodulation.
3800</entry>
3801 </row>
3802 <row>
3803 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_RELEASE_TIME</constant>&nbsp;</entry>
3804 <entry>integer</entry>
3805 </row>
3806 <row><entry spanname="descr">Sets the audio deviation limiter feature release time.
3807Unit is in useconds. Step and range are driver-specific.</entry>
3808 </row>
3809 <row>
3810 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_DEVIATION</constant>&nbsp;</entry>
3811 <entry>integer</entry>
3812 </row>
3813 <row><entry spanname="descr">Configures audio frequency deviation level in Hz.
3814The range and step are driver-specific.</entry>
3815 </row>
3816 <row>
3817 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ENABLED</constant>&nbsp;</entry>
3818 <entry>boolean</entry>
3819 </row>
3820 <row><entry spanname="descr">Enables or disables the audio compression feature.
3821This feature amplifies signals below the threshold by a fixed gain and compresses audio
3822signals above the threshold by the ratio of Threshold/(Gain + Threshold).</entry>
3823 </row>
3824 <row>
3825 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_GAIN</constant>&nbsp;</entry>
3826 <entry>integer</entry>
3827 </row>
3828 <row><entry spanname="descr">Sets the gain for audio compression feature. It is
3829a dB value. The range and step are driver-specific.</entry>
3830 </row>
3831 <row>
3832 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_THRESHOLD</constant>&nbsp;</entry>
3833 <entry>integer</entry>
3834 </row>
3835 <row><entry spanname="descr">Sets the threshold level for audio compression freature.
3836It is a dB value. The range and step are driver-specific.</entry>
3837 </row>
3838 <row>
3839 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME</constant>&nbsp;</entry>
3840 <entry>integer</entry>
3841 </row>
3842 <row><entry spanname="descr">Sets the attack time for audio compression feature.
3843It is a useconds value. The range and step are driver-specific.</entry>
3844 </row>
3845 <row>
3846 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME</constant>&nbsp;</entry>
3847 <entry>integer</entry>
3848 </row>
3849 <row><entry spanname="descr">Sets the release time for audio compression feature.
3850It is a useconds value. The range and step are driver-specific.</entry>
3851 </row>
3852 <row>
3853 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_ENABLED</constant>&nbsp;</entry>
3854 <entry>boolean</entry>
3855 </row>
3856 <row><entry spanname="descr">Enables or disables the pilot tone generation feature.</entry>
3857 </row>
3858 <row>
3859 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_DEVIATION</constant>&nbsp;</entry>
3860 <entry>integer</entry>
3861 </row>
3862 <row><entry spanname="descr">Configures pilot tone frequency deviation level. Unit is
3863in Hz. The range and step are driver-specific.</entry>
3864 </row>
3865 <row>
3866 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_FREQUENCY</constant>&nbsp;</entry>
3867 <entry>integer</entry>
3868 </row>
3869 <row><entry spanname="descr">Configures pilot tone frequency value. Unit is
3870in Hz. The range and step are driver-specific.</entry>
3871 </row>
3872 <row>
3873 <entry spanname="id"><constant>V4L2_CID_TUNE_PREEMPHASIS</constant>&nbsp;</entry>
3874 <entry>integer</entry>
3875 </row>
3876 <row id="v4l2-preemphasis"><entry spanname="descr">Configures the pre-emphasis value for broadcasting.
3877A pre-emphasis filter is applied to the broadcast to accentuate the high audio frequencies.
3878Depending on the region, a time constant of either 50 or 75 useconds is used. The enum&nbsp;v4l2_preemphasis
3879defines possible values for pre-emphasis. Here they are:</entry>
3880 </row><row>
3881 <entrytbl spanname="descr" cols="2">
3882 <tbody valign="top">
3883 <row>
3884 <entry><constant>V4L2_PREEMPHASIS_DISABLED</constant>&nbsp;</entry>
3885 <entry>No pre-emphasis is applied.</entry>
3886 </row>
3887 <row>
3888 <entry><constant>V4L2_PREEMPHASIS_50_uS</constant>&nbsp;</entry>
3889 <entry>A pre-emphasis of 50 uS is used.</entry>
3890 </row>
3891 <row>
3892 <entry><constant>V4L2_PREEMPHASIS_75_uS</constant>&nbsp;</entry>
3893 <entry>A pre-emphasis of 75 uS is used.</entry>
3894 </row>
3895 </tbody>
3896 </entrytbl>
3897
3898 </row>
3899 <row>
3900 <entry spanname="id"><constant>V4L2_CID_TUNE_POWER_LEVEL</constant>&nbsp;</entry>
3901 <entry>integer</entry>
3902 </row>
3903 <row><entry spanname="descr">Sets the output power level for signal transmission.
3904Unit is in dBuV. Range and step are driver-specific.</entry>
3905 </row>
3906 <row>
3907 <entry spanname="id"><constant>V4L2_CID_TUNE_ANTENNA_CAPACITOR</constant>&nbsp;</entry>
3908 <entry>integer</entry>
3909 </row>
3910 <row><entry spanname="descr">This selects the value of antenna tuning capacitor
3911manually or automatically if set to zero. Unit, range and step are driver-specific.</entry>
3912 </row>
3913 <row><entry></entry></row>
3914 </tbody>
3915 </tgroup>
3916 </table>
3917
3918<para>For more details about RDS specification, refer to
3919<xref linkend="iec62106" /> document, from CENELEC.</para>
3920 </section>
3921
3922 <section id="flash-controls">
3923 <title>Flash Control Reference</title>
3924
3925 <note>
3926 <title>Experimental</title>
3927
3928 <para>This is an <link linkend="experimental">experimental</link>
3929interface and may change in the future.</para>
3930 </note>
3931
3932 <para>
3933 The V4L2 flash controls are intended to provide generic access
3934 to flash controller devices. Flash controller devices are
3935 typically used in digital cameras.
3936 </para>
3937
3938 <para>
3939 The interface can support both LED and xenon flash devices. As
3940 of writing this, there is no xenon flash driver using this
3941 interface.
3942 </para>
3943
3944 <section id="flash-controls-use-cases">
3945 <title>Supported use cases</title>
3946
3947 <section>
3948 <title>Unsynchronised LED flash (software strobe)</title>
3949
3950 <para>
3951 Unsynchronised LED flash is controlled directly by the
3952 host as the sensor. The flash must be enabled by the host
3953 before the exposure of the image starts and disabled once
3954 it ends. The host is fully responsible for the timing of
3955 the flash.
3956 </para>
3957
3958 <para>Example of such device: Nokia N900.</para>
3959 </section>
3960
3961 <section>
3962 <title>Synchronised LED flash (hardware strobe)</title>
3963
3964 <para>
3965 The synchronised LED flash is pre-programmed by the host
3966 (power and timeout) but controlled by the sensor through a
3967 strobe signal from the sensor to the flash.
3968 </para>
3969
3970 <para>
3971 The sensor controls the flash duration and timing. This
3972 information typically must be made available to the
3973 sensor.
3974 </para>
3975
3976 </section>
3977
3978 <section>
3979 <title>LED flash as torch</title>
3980
3981 <para>
3982 LED flash may be used as torch in conjunction with another
3983 use case involving camera or individually.
3984 </para>
3985
3986
3987 <table pgwide="1" frame="none" id="flash-control-id">
3988 <title>Flash Control IDs</title>
3989
3990 <tgroup cols="4">
3991 <colspec colname="c1" colwidth="1*" />
3992 <colspec colname="c2" colwidth="6*" />
3993 <colspec colname="c3" colwidth="2*" />
3994 <colspec colname="c4" colwidth="6*" />
3995 <spanspec namest="c1" nameend="c2" spanname="id" />
3996 <spanspec namest="c2" nameend="c4" spanname="descr" />
3997 <thead>
3998 <row>
3999 <entry spanname="id" align="left">ID</entry>
4000 <entry align="left">Type</entry>
4001 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4002 </row>
4003 </thead>
4004 <tbody valign="top">
4005 <row><entry></entry></row>
4006 <row>
4007 <entry spanname="id"><constant>V4L2_CID_FLASH_CLASS</constant></entry>
4008 <entry>class</entry>
4009 </row>
4010 <row>
4011 <entry spanname="descr">The FLASH class descriptor.</entry>
4012 </row>
4013 <row>
4014 <entry spanname="id"><constant>V4L2_CID_FLASH_LED_MODE</constant></entry>
4015 <entry>menu</entry>
4016 </row>
4017 <row id="v4l2-flash-led-mode">
4018 <entry spanname="descr">Defines the mode of the flash LED,
4019 the high-power white LED attached to the flash controller.
4020 Setting this control may not be possible in presence of
4021 some faults. See V4L2_CID_FLASH_FAULT.</entry>
4022 </row>
4023 <row>
4024 <entrytbl spanname="descr" cols="2">
4025 <tbody valign="top">
4026 <row>
4027 <entry><constant>V4L2_FLASH_LED_MODE_NONE</constant></entry>
4028 <entry>Off.</entry>
4029 </row>
4030 <row>
4031 <entry><constant>V4L2_FLASH_LED_MODE_FLASH</constant></entry>
4032 <entry>Flash mode.</entry>
4033 </row>
4034 <row>
4035 <entry><constant>V4L2_FLASH_LED_MODE_TORCH</constant></entry>
4036 <entry>Torch mode. See V4L2_CID_FLASH_TORCH_INTENSITY.</entry>
4037 </row>
4038 </tbody>
4039 </entrytbl>
4040 </row>
4041 <row>
4042 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_SOURCE</constant></entry>
4043 <entry>menu</entry>
4044 </row>
4045 <row id="v4l2-flash-strobe-source"><entry
4046 spanname="descr">Defines the source of the flash LED
4047 strobe.</entry>
4048 </row>
4049 <row>
4050 <entrytbl spanname="descr" cols="2">
4051 <tbody valign="top">
4052 <row>
4053 <entry><constant>V4L2_FLASH_STROBE_SOURCE_SOFTWARE</constant></entry>
4054 <entry>The flash strobe is triggered by using
4055 the V4L2_CID_FLASH_STROBE control.</entry>
4056 </row>
4057 <row>
4058 <entry><constant>V4L2_FLASH_STROBE_SOURCE_EXTERNAL</constant></entry>
4059 <entry>The flash strobe is triggered by an
4060 external source. Typically this is a sensor,
4061 which makes it possible to synchronises the
4062 flash strobe start to exposure start.</entry>
4063 </row>
4064 </tbody>
4065 </entrytbl>
4066 </row>
4067 <row>
4068 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE</constant></entry>
4069 <entry>button</entry>
4070 </row>
4071 <row>
4072 <entry spanname="descr">Strobe flash. Valid when
4073 V4L2_CID_FLASH_LED_MODE is set to
4074 V4L2_FLASH_LED_MODE_FLASH and V4L2_CID_FLASH_STROBE_SOURCE
4075 is set to V4L2_FLASH_STROBE_SOURCE_SOFTWARE. Setting this
4076 control may not be possible in presence of some faults.
4077 See V4L2_CID_FLASH_FAULT.</entry>
4078 </row>
4079 <row>
4080 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_STOP</constant></entry>
4081 <entry>button</entry>
4082 </row>
4083 <row><entry spanname="descr">Stop flash strobe immediately.</entry>
4084 </row>
4085 <row>
4086 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_STATUS</constant></entry>
4087 <entry>boolean</entry>
4088 </row>
4089 <row>
4090 <entry spanname="descr">Strobe status: whether the flash
4091 is strobing at the moment or not. This is a read-only
4092 control.</entry>
4093 </row>
4094 <row>
4095 <entry spanname="id"><constant>V4L2_CID_FLASH_TIMEOUT</constant></entry>
4096 <entry>integer</entry>
4097 </row>
4098 <row>
4099 <entry spanname="descr">Hardware timeout for flash. The
4100 flash strobe is stopped after this period of time has
4101 passed from the start of the strobe.</entry>
4102 </row>
4103 <row>
4104 <entry spanname="id"><constant>V4L2_CID_FLASH_INTENSITY</constant></entry>
4105 <entry>integer</entry>
4106 </row>
4107 <row>
4108 <entry spanname="descr">Intensity of the flash strobe when
4109 the flash LED is in flash mode
4110 (V4L2_FLASH_LED_MODE_FLASH). The unit should be milliamps
4111 (mA) if possible.</entry>
4112 </row>
4113 <row>
4114 <entry spanname="id"><constant>V4L2_CID_FLASH_TORCH_INTENSITY</constant></entry>
4115 <entry>integer</entry>
4116 </row>
4117 <row>
4118 <entry spanname="descr">Intensity of the flash LED in
4119 torch mode (V4L2_FLASH_LED_MODE_TORCH). The unit should be
4120 milliamps (mA) if possible. Setting this control may not
4121 be possible in presence of some faults. See
4122 V4L2_CID_FLASH_FAULT.</entry>
4123 </row>
4124 <row>
4125 <entry spanname="id"><constant>V4L2_CID_FLASH_INDICATOR_INTENSITY</constant></entry>
4126 <entry>integer</entry>
4127 </row>
4128 <row>
4129 <entry spanname="descr">Intensity of the indicator LED.
4130 The indicator LED may be fully independent of the flash
4131 LED. The unit should be microamps (uA) if possible.</entry>
4132 </row>
4133 <row>
4134 <entry spanname="id"><constant>V4L2_CID_FLASH_FAULT</constant></entry>
4135 <entry>bitmask</entry>
4136 </row>
4137 <row>
4138 <entry spanname="descr">Faults related to the flash. The
4139 faults tell about specific problems in the flash chip
4140 itself or the LEDs attached to it. Faults may prevent
4141 further use of some of the flash controls. In particular,
4142 V4L2_CID_FLASH_LED_MODE is set to V4L2_FLASH_LED_MODE_NONE
4143 if the fault affects the flash LED. Exactly which faults
4144 have such an effect is chip dependent. Reading the faults
4145 resets the control and returns the chip to a usable state
4146 if possible.</entry>
4147 </row>
4148 <row>
4149 <entrytbl spanname="descr" cols="2">
4150 <tbody valign="top">
4151 <row>
4152 <entry><constant>V4L2_FLASH_FAULT_OVER_VOLTAGE</constant></entry>
4153 <entry>Flash controller voltage to the flash LED
4154 has exceeded the limit specific to the flash
4155 controller.</entry>
4156 </row>
4157 <row>
4158 <entry><constant>V4L2_FLASH_FAULT_TIMEOUT</constant></entry>
4159 <entry>The flash strobe was still on when
4160 the timeout set by the user ---
4161 V4L2_CID_FLASH_TIMEOUT control --- has expired.
4162 Not all flash controllers may set this in all
4163 such conditions.</entry>
4164 </row>
4165 <row>
4166 <entry><constant>V4L2_FLASH_FAULT_OVER_TEMPERATURE</constant></entry>
4167 <entry>The flash controller has overheated.</entry>
4168 </row>
4169 <row>
4170 <entry><constant>V4L2_FLASH_FAULT_SHORT_CIRCUIT</constant></entry>
4171 <entry>The short circuit protection of the flash
4172 controller has been triggered.</entry>
4173 </row>
4174 <row>
4175 <entry><constant>V4L2_FLASH_FAULT_OVER_CURRENT</constant></entry>
4176 <entry>Current in the LED power supply has exceeded the limit
4177 specific to the flash controller.</entry>
4178 </row>
4179 <row>
4180 <entry><constant>V4L2_FLASH_FAULT_INDICATOR</constant></entry>
4181 <entry>The flash controller has detected a short or open
4182 circuit condition on the indicator LED.</entry>
4183 </row>
4184 </tbody>
4185 </entrytbl>
4186 </row>
4187 <row>
4188 <entry spanname="id"><constant>V4L2_CID_FLASH_CHARGE</constant></entry>
4189 <entry>boolean</entry>
4190 </row>
4191 <row><entry spanname="descr">Enable or disable charging of the xenon
4192 flash capacitor.</entry>
4193 </row>
4194 <row>
4195 <entry spanname="id"><constant>V4L2_CID_FLASH_READY</constant></entry>
4196 <entry>boolean</entry>
4197 </row>
4198 <row>
4199 <entry spanname="descr">Is the flash ready to strobe?
4200 Xenon flashes require their capacitors charged before
4201 strobing. LED flashes often require a cooldown period
4202 after strobe during which another strobe will not be
4203 possible. This is a read-only control.</entry>
4204 </row>
4205 <row><entry></entry></row>
4206 </tbody>
4207 </tgroup>
4208 </table>
4209 </section>
4210 </section>
4211 </section>
4212
4213 <section id="jpeg-controls">
4214 <title>JPEG Control Reference</title>
4215 <para>The JPEG class includes controls for common features of JPEG
4216 encoders and decoders. Currently it includes features for codecs
4217 implementing progressive baseline DCT compression process with
4218 Huffman entrophy coding.</para>
4219 <table pgwide="1" frame="none" id="jpeg-control-id">
4220 <title>JPEG Control IDs</title>
4221
4222 <tgroup cols="4">
4223 <colspec colname="c1" colwidth="1*" />
4224 <colspec colname="c2" colwidth="6*" />
4225 <colspec colname="c3" colwidth="2*" />
4226 <colspec colname="c4" colwidth="6*" />
4227 <spanspec namest="c1" nameend="c2" spanname="id" />
4228 <spanspec namest="c2" nameend="c4" spanname="descr" />
4229 <thead>
4230 <row>
4231 <entry spanname="id" align="left">ID</entry>
4232 <entry align="left">Type</entry>
4233 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4234 </row>
4235 </thead>
4236 <tbody valign="top">
4237 <row><entry></entry></row>
4238 <row>
4239 <entry spanname="id"><constant>V4L2_CID_JPEG_CLASS</constant>&nbsp;</entry>
4240 <entry>class</entry>
4241 </row><row><entry spanname="descr">The JPEG class descriptor. Calling
4242 &VIDIOC-QUERYCTRL; for this control will return a description of this
4243 control class.
4244
4245 </entry>
4246 </row>
4247 <row>
4248 <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry>
4249 <entry>menu</entry>
4250 </row>
4251 <row id="v4l2-jpeg-chroma-subsampling">
4252 <entry spanname="descr">The chroma subsampling factors describe how
4253 each component of an input image is sampled, in respect to maximum
4254 sample rate in each spatial dimension. See <xref linkend="itu-t81"/>,
4255 clause A.1.1. for more details. The <constant>
4256 V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant> control determines how
4257 Cb and Cr components are downsampled after coverting an input image
4258 from RGB to Y'CbCr color space.
4259 </entry>
4260 </row>
4261 <row>
4262 <entrytbl spanname="descr" cols="2">
4263 <tbody valign="top">
4264 <row>
4265 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_444</constant>
4266 </entry><entry>No chroma subsampling, each pixel has
4267 Y, Cr and Cb values.</entry>
4268 </row>
4269 <row>
4270 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_422</constant>
4271 </entry><entry>Horizontally subsample Cr, Cb components
4272 by a factor of 2.</entry>
4273 </row>
4274 <row>
4275 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_420</constant>
4276 </entry><entry>Subsample Cr, Cb components horizontally
4277 and vertically by 2.</entry>
4278 </row>
4279 <row>
4280 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_411</constant>
4281 </entry><entry>Horizontally subsample Cr, Cb components
4282 by a factor of 4.</entry>
4283 </row>
4284 <row>
4285 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_410</constant>
4286 </entry><entry>Subsample Cr, Cb components horizontally
4287 by 4 and vertically by 2.</entry>
4288 </row>
4289 <row>
4290 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY</constant>
4291 </entry><entry>Use only luminance component.</entry>
4292 </row>
4293 </tbody>
4294 </entrytbl>
4295 </row>
4296 <row>
4297 <entry spanname="id"><constant>V4L2_CID_JPEG_RESTART_INTERVAL</constant>
4298 </entry><entry>integer</entry>
4299 </row>
4300 <row><entry spanname="descr">
4301 The restart interval determines an interval of inserting RSTm
4302 markers (m = 0..7). The purpose of these markers is to additionally
4303 reinitialize the encoder process, in order to process blocks of
4304 an image independently.
4305 For the lossy compression processes the restart interval unit is
4306 MCU (Minimum Coded Unit) and its value is contained in DRI
4307 (Define Restart Interval) marker. If <constant>
4308 V4L2_CID_JPEG_RESTART_INTERVAL</constant> control is set to 0,
4309 DRI and RSTm markers will not be inserted.
4310 </entry>
4311 </row>
4312 <row id="jpeg-quality-control">
4313 <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></entry>
4314 <entry>integer</entry>
4315 </row>
4316 <row>
4317 <entry spanname="descr">
4318 <constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control
4319 determines trade-off between image quality and size.
4320 It provides simpler method for applications to control image quality,
4321 without a need for direct reconfiguration of luminance and chrominance
4322 quantization tables.
4323
4324 In cases where a driver uses quantization tables configured directly
4325 by an application, using interfaces defined elsewhere, <constant>
4326 V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control should be set
4327 by driver to 0.
4328
4329 <para>The value range of this control is driver-specific. Only
4330 positive, non-zero values are meaningful. The recommended range
4331 is 1 - 100, where larger values correspond to better image quality.
4332 </para>
4333 </entry>
4334 </row>
4335 <row id="jpeg-active-marker-control">
4336 <entry spanname="id"><constant>V4L2_CID_JPEG_ACTIVE_MARKER</constant></entry>
4337 <entry>bitmask</entry>
4338 </row>
4339 <row>
4340 <entry spanname="descr">Specify which JPEG markers are included
4341 in compressed stream. This control is valid only for encoders.
4342 </entry>
4343 </row>
4344 <row>
4345 <entrytbl spanname="descr" cols="2">
4346 <tbody valign="top">
4347 <row>
4348 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_APP0</constant></entry>
4349 <entry>Application data segment APP<subscript>0</subscript>.</entry>
4350 </row><row>
4351 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_APP1</constant></entry>
4352 <entry>Application data segment APP<subscript>1</subscript>.</entry>
4353 </row><row>
4354 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_COM</constant></entry>
4355 <entry>Comment segment.</entry>
4356 </row><row>
4357 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_DQT</constant></entry>
4358 <entry>Quantization tables segment.</entry>
4359 </row><row>
4360 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_DHT</constant></entry>
4361 <entry>Huffman tables segment.</entry>
4362 </row>
4363 </tbody>
4364 </entrytbl>
4365 </row>
4366 <row><entry></entry></row>
4367 </tbody>
4368 </tgroup>
4369 </table>
4370 <para>For more details about JPEG specification, refer
4371 to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>,
4372 <xref linkend="w3c-jpeg-jfif"/>.</para>
4373 </section>
4374
4375 <section id="image-source-controls">
4376 <title>Image Source Control Reference</title>
4377
4378 <note>
4379 <title>Experimental</title>
4380
4381 <para>This is an <link
4382 linkend="experimental">experimental</link> interface and may
4383 change in the future.</para>
4384 </note>
4385
4386 <para>
4387 The Image Source control class is intended for low-level
4388 control of image source devices such as image sensors. The
4389 devices feature an analogue to digital converter and a bus
4390 transmitter to transmit the image data out of the device.
4391 </para>
4392
4393 <table pgwide="1" frame="none" id="image-source-control-id">
4394 <title>Image Source Control IDs</title>
4395
4396 <tgroup cols="4">
4397 <colspec colname="c1" colwidth="1*" />
4398 <colspec colname="c2" colwidth="6*" />
4399 <colspec colname="c3" colwidth="2*" />
4400 <colspec colname="c4" colwidth="6*" />
4401 <spanspec namest="c1" nameend="c2" spanname="id" />
4402 <spanspec namest="c2" nameend="c4" spanname="descr" />
4403 <thead>
4404 <row>
4405 <entry spanname="id" align="left">ID</entry>
4406 <entry align="left">Type</entry>
4407 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4408 </row>
4409 </thead>
4410 <tbody valign="top">
4411 <row><entry></entry></row>
4412 <row>
4413 <entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry>
4414 <entry>class</entry>
4415 </row>
4416 <row>
4417 <entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry>
4418 </row>
4419 <row>
4420 <entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry>
4421 <entry>integer</entry>
4422 </row>
4423 <row>
4424 <entry spanname="descr">Vertical blanking. The idle period
4425 after every frame during which no image data is produced.
4426 The unit of vertical blanking is a line. Every line has
4427 length of the image width plus horizontal blanking at the
4428 pixel rate defined by
4429 <constant>V4L2_CID_PIXEL_RATE</constant> control in the
4430 same sub-device.</entry>
4431 </row>
4432 <row>
4433 <entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry>
4434 <entry>integer</entry>
4435 </row>
4436 <row>
4437 <entry spanname="descr">Horizontal blanking. The idle
4438 period after every line of image data during which no
4439 image data is produced. The unit of horizontal blanking is
4440 pixels.</entry>
4441 </row>
4442 <row>
4443 <entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry>
4444 <entry>integer</entry>
4445 </row>
4446 <row>
4447 <entry spanname="descr">Analogue gain is gain affecting
4448 all colour components in the pixel matrix. The gain
4449 operation is performed in the analogue domain before A/D
4450 conversion.
4451 </entry>
4452 </row>
4453 <row><entry></entry></row>
4454 </tbody>
4455 </tgroup>
4456 </table>
4457
4458 </section>
4459
4460 <section id="image-process-controls">
4461 <title>Image Process Control Reference</title>
4462
4463 <note>
4464 <title>Experimental</title>
4465
4466 <para>This is an <link
4467 linkend="experimental">experimental</link> interface and may
4468 change in the future.</para>
4469 </note>
4470
4471 <para>
4472 The Image Source control class is intended for low-level control of
4473 image processing functions. Unlike
4474 <constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in
4475 this class affect processing the image, and do not control capturing
4476 of it.
4477 </para>
4478
4479 <table pgwide="1" frame="none" id="image-process-control-id">
4480 <title>Image Source Control IDs</title>
4481
4482 <tgroup cols="4">
4483 <colspec colname="c1" colwidth="1*" />
4484 <colspec colname="c2" colwidth="6*" />
4485 <colspec colname="c3" colwidth="2*" />
4486 <colspec colname="c4" colwidth="6*" />
4487 <spanspec namest="c1" nameend="c2" spanname="id" />
4488 <spanspec namest="c2" nameend="c4" spanname="descr" />
4489 <thead>
4490 <row>
4491 <entry spanname="id" align="left">ID</entry>
4492 <entry align="left">Type</entry>
4493 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4494 </row>
4495 </thead>
4496 <tbody valign="top">
4497 <row><entry></entry></row>
4498 <row>
4499 <entry spanname="id"><constant>V4L2_CID_IMAGE_PROC_CLASS</constant></entry>
4500 <entry>class</entry>
4501 </row>
4502 <row>
4503 <entry spanname="descr">The IMAGE_PROC class descriptor.</entry>
4504 </row>
4505 <row>
4506 <entry spanname="id"><constant>V4L2_CID_LINK_FREQ</constant></entry>
4507 <entry>integer menu</entry>
4508 </row>
4509 <row>
4510 <entry spanname="descr">Data bus frequency. Together with the
4511 media bus pixel code, bus type (clock cycles per sample), the
4512 data bus frequency defines the pixel rate
4513 (<constant>V4L2_CID_PIXEL_RATE</constant>) in the
4514 pixel array (or possibly elsewhere, if the device is not an
4515 image sensor). The frame rate can be calculated from the pixel
4516 clock, image width and height and horizontal and vertical
4517 blanking. While the pixel rate control may be defined elsewhere
4518 than in the subdev containing the pixel array, the frame rate
4519 cannot be obtained from that information. This is because only
4520 on the pixel array it can be assumed that the vertical and
4521 horizontal blanking information is exact: no other blanking is
4522 allowed in the pixel array. The selection of frame rate is
4523 performed by selecting the desired horizontal and vertical
4524 blanking. The unit of this control is Hz. </entry>
4525 </row>
4526 <row>
4527 <entry spanname="id"><constant>V4L2_CID_PIXEL_RATE</constant></entry>
4528 <entry>64-bit integer</entry>
4529 </row>
4530 <row>
4531 <entry spanname="descr">Pixel rate in the source pads of
4532 the subdev. This control is read-only and its unit is
4533 pixels / second.
4534 </entry>
4535 </row>
4536 <row>
4537 <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
4538 <entry>menu</entry>
4539 </row>
4540 <row id="v4l2-test-pattern">
4541 <entry spanname="descr"> Some capture/display/sensor devices have
4542 the capability to generate test pattern images. These hardware
4543 specific test patterns can be used to test if a device is working
4544 properly.</entry>
4545 </row>
4546 <row><entry></entry></row>
4547 </tbody>
4548 </tgroup>
4549 </table>
4550
4551 </section>
4552
4553 <section id="dv-controls">
4554 <title>Digital Video Control Reference</title>
4555
4556 <note>
4557 <title>Experimental</title>
4558
4559 <para>This is an <link
4560 linkend="experimental">experimental</link> interface and may
4561 change in the future.</para>
4562 </note>
4563
4564 <para>
4565 The Digital Video control class is intended to control receivers
4566 and transmitters for <ulink url="http://en.wikipedia.org/wiki/Vga">VGA</ulink>,
4567 <ulink url="http://en.wikipedia.org/wiki/Digital_Visual_Interface">DVI</ulink>
4568 (Digital Visual Interface), HDMI (<xref linkend="hdmi" />) and DisplayPort (<xref linkend="dp" />).
4569 These controls are generally expected to be private to the receiver or transmitter
4570 subdevice that implements them, so they are only exposed on the
4571 <filename>/dev/v4l-subdev*</filename> device node.
4572 </para>
4573
4574 <para>Note that these devices can have multiple input or output pads which are
4575 hooked up to e.g. HDMI connectors. Even though the subdevice will receive or
4576 transmit video from/to only one of those pads, the other pads can still be
4577 active when it comes to EDID (Extended Display Identification Data,
4578 <xref linkend="vesaedid" />) and HDCP (High-bandwidth Digital Content
4579 Protection System, <xref linkend="hdcp" />) processing, allowing the device
4580 to do the fairly slow EDID/HDCP handling in advance. This allows for quick
4581 switching between connectors.</para>
4582
4583 <para>These pads appear in several of the controls in this section as
4584 bitmasks, one bit for each pad. Bit 0 corresponds to pad 0, bit 1 to pad 1,
4585 etc. The maximum value of the control is the set of valid pads.</para>
4586
4587 <table pgwide="1" frame="none" id="dv-control-id">
4588 <title>Digital Video Control IDs</title>
4589
4590 <tgroup cols="4">
4591 <colspec colname="c1" colwidth="1*" />
4592 <colspec colname="c2" colwidth="6*" />
4593 <colspec colname="c3" colwidth="2*" />
4594 <colspec colname="c4" colwidth="6*" />
4595 <spanspec namest="c1" nameend="c2" spanname="id" />
4596 <spanspec namest="c2" nameend="c4" spanname="descr" />
4597 <thead>
4598 <row>
4599 <entry spanname="id" align="left">ID</entry>
4600 <entry align="left">Type</entry>
4601 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4602 </row>
4603 </thead>
4604 <tbody valign="top">
4605 <row><entry></entry></row>
4606 <row>
4607 <entry spanname="id"><constant>V4L2_CID_DV_CLASS</constant></entry>
4608 <entry>class</entry>
4609 </row>
4610 <row>
4611 <entry spanname="descr">The Digital Video class descriptor.</entry>
4612 </row>
4613 <row>
4614 <entry spanname="id"><constant>V4L2_CID_DV_TX_HOTPLUG</constant></entry>
4615 <entry>bitmask</entry>
4616 </row>
4617 <row>
4618 <entry spanname="descr">Many connectors have a hotplug pin which is high
4619 if EDID information is available from the source. This control shows the
4620 state of the hotplug pin as seen by the transmitter.
4621 Each bit corresponds to an output pad on the transmitter. If an output pad
4622 does not have an associated hotplug pin, then the bit for that pad will be 0.
4623 This read-only control is applicable to DVI-D, HDMI and DisplayPort connectors.
4624 </entry>
4625 </row>
4626 <row>
4627 <entry spanname="id"><constant>V4L2_CID_DV_TX_RXSENSE</constant></entry>
4628 <entry>bitmask</entry>
4629 </row>
4630 <row>
4631 <entry spanname="descr">Rx Sense is the detection of pull-ups on the TMDS
4632 clock lines. This normally means that the sink has left/entered standby (i.e.
4633 the transmitter can sense that the receiver is ready to receive video).
4634 Each bit corresponds to an output pad on the transmitter. If an output pad
4635 does not have an associated Rx Sense, then the bit for that pad will be 0.
4636 This read-only control is applicable to DVI-D and HDMI devices.
4637 </entry>
4638 </row>
4639 <row>
4640 <entry spanname="id"><constant>V4L2_CID_DV_TX_EDID_PRESENT</constant></entry>
4641 <entry>bitmask</entry>
4642 </row>
4643 <row>
4644 <entry spanname="descr">When the transmitter sees the hotplug signal from the
4645 receiver it will attempt to read the EDID. If set, then the transmitter has read
4646 at least the first block (= 128 bytes).
4647 Each bit corresponds to an output pad on the transmitter. If an output pad
4648 does not support EDIDs, then the bit for that pad will be 0.
4649 This read-only control is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
4650 </entry>
4651 </row>
4652 <row>
4653 <entry spanname="id"><constant>V4L2_CID_DV_TX_MODE</constant></entry>
4654 <entry id="v4l2-dv-tx-mode">enum v4l2_dv_tx_mode</entry>
4655 </row>
4656 <row>
4657 <entry spanname="descr">HDMI transmitters can transmit in DVI-D mode (just video)
4658 or in HDMI mode (video + audio + auxiliary data). This control selects which mode
4659 to use: V4L2_DV_TX_MODE_DVI_D or V4L2_DV_TX_MODE_HDMI.
4660 This control is applicable to HDMI connectors.
4661 </entry>
4662 </row>
4663 <row>
4664 <entry spanname="id"><constant>V4L2_CID_DV_TX_RGB_RANGE</constant></entry>
4665 <entry id="v4l2-dv-rgb-range">enum v4l2_dv_rgb_range</entry>
4666 </row>
4667 <row>
4668 <entry spanname="descr">Select the quantization range for RGB output. V4L2_DV_RANGE_AUTO
4669 follows the RGB quantization range specified in the standard for the video interface
4670 (ie. <xref linkend="cea861" /> for HDMI). V4L2_DV_RANGE_LIMITED and V4L2_DV_RANGE_FULL override the standard
4671 to be compatible with sinks that have not implemented the standard correctly
4672 (unfortunately quite common for HDMI and DVI-D). Full range allows all possible values to be
4673 used whereas limited range sets the range to (16 &lt;&lt; (N-8)) - (235 &lt;&lt; (N-8))
4674 where N is the number of bits per component.
4675 This control is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
4676 </entry>
4677 </row>
4678 <row>
4679 <entry spanname="id"><constant>V4L2_CID_DV_RX_POWER_PRESENT</constant></entry>
4680 <entry>bitmask</entry>
4681 </row>
4682 <row>
4683 <entry spanname="descr">Detects whether the receiver receives power from the source
4684 (e.g. HDMI carries 5V on one of the pins). This is often used to power an eeprom
4685 which contains EDID information, such that the source can read the EDID even if
4686 the sink is in standby/power off.
4687 Each bit corresponds to an input pad on the transmitter. If an input pad
4688 cannot detect whether power is present, then the bit for that pad will be 0.
4689 This read-only control is applicable to DVI-D, HDMI and DisplayPort connectors.
4690 </entry>
4691 </row>
4692 <row>
4693 <entry spanname="id"><constant>V4L2_CID_DV_RX_RGB_RANGE</constant></entry>
4694 <entry>enum v4l2_dv_rgb_range</entry>
4695 </row>
4696 <row>
4697 <entry spanname="descr">Select the quantization range for RGB input. V4L2_DV_RANGE_AUTO
4698 follows the RGB quantization range specified in the standard for the video interface
4699 (ie. <xref linkend="cea861" /> for HDMI). V4L2_DV_RANGE_LIMITED and V4L2_DV_RANGE_FULL override the standard
4700 to be compatible with sources that have not implemented the standard correctly
4701 (unfortunately quite common for HDMI and DVI-D). Full range allows all possible values to be
4702 used whereas limited range sets the range to (16 &lt;&lt; (N-8)) - (235 &lt;&lt; (N-8))
4703 where N is the number of bits per component.
4704 This control is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
4705 </entry>
4706 </row>
4707 <row><entry></entry></row>
4708 </tbody>
4709 </tgroup>
4710 </table>
4711
4712 </section>
4713</section>
diff --git a/Documentation/DocBook/v4l/crop.pdf b/Documentation/DocBook/media/v4l/crop.pdf
index c9fb81cd32f..c9fb81cd32f 100644
--- a/Documentation/DocBook/v4l/crop.pdf
+++ b/Documentation/DocBook/media/v4l/crop.pdf
Binary files differ
diff --git a/Documentation/DocBook/v4l/dev-capture.xml b/Documentation/DocBook/media/v4l/dev-capture.xml
index 2237c661f26..e1c5f9406d6 100644
--- a/Documentation/DocBook/v4l/dev-capture.xml
+++ b/Documentation/DocBook/media/v4l/dev-capture.xml
@@ -108,11 +108,3 @@ linkend="mmap">memory mapping</link> or <link
108linkend="userp">user pointer</link>) I/O. See <xref 108linkend="userp">user pointer</link>) I/O. See <xref
109linkend="io" /> for details.</para> 109linkend="io" /> for details.</para>
110 </section> 110 </section>
111
112 <!--
113Local Variables:
114mode: sgml
115sgml-parent-document: "v4l2.sgml"
116indent-tabs-mode: nil
117End:
118 -->
diff --git a/Documentation/DocBook/v4l/dev-codec.xml b/Documentation/DocBook/media/v4l/dev-codec.xml
index 6e156dc45b9..dca0ecd54dc 100644
--- a/Documentation/DocBook/v4l/dev-codec.xml
+++ b/Documentation/DocBook/media/v4l/dev-codec.xml
@@ -16,11 +16,3 @@ Applications send data to be converted to the driver through a
16I/O.</para> 16I/O.</para>
17 17
18 <para>[to do]</para> 18 <para>[to do]</para>
19
20 <!--
21Local Variables:
22mode: sgml
23sgml-parent-document: "v4l2.sgml"
24indent-tabs-mode: nil
25End:
26 -->
diff --git a/Documentation/DocBook/v4l/dev-effect.xml b/Documentation/DocBook/media/v4l/dev-effect.xml
index 9c243beba0e..2350a67c071 100644
--- a/Documentation/DocBook/v4l/dev-effect.xml
+++ b/Documentation/DocBook/media/v4l/dev-effect.xml
@@ -15,11 +15,3 @@ receive the result data either with &func-read; and &func-write;
15functions, or through the streaming I/O mechanism.</para> 15functions, or through the streaming I/O mechanism.</para>
16 16
17 <para>[to do]</para> 17 <para>[to do]</para>
18
19 <!--
20Local Variables:
21mode: sgml
22sgml-parent-document: "v4l2.sgml"
23indent-tabs-mode: nil
24End:
25 -->
diff --git a/Documentation/DocBook/media/v4l/dev-event.xml b/Documentation/DocBook/media/v4l/dev-event.xml
new file mode 100644
index 00000000000..19f4becfae3
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/dev-event.xml
@@ -0,0 +1,43 @@
1 <title>Event Interface</title>
2
3 <para>The V4L2 event interface provides a means for a user to get
4 immediately notified on certain conditions taking place on a device.
5 This might include start of frame or loss of signal events, for
6 example. Changes in the value or state of a V4L2 control can also be
7 reported through events.
8 </para>
9
10 <para>To receive events, the events the user is interested in first must
11 be subscribed using the &VIDIOC-SUBSCRIBE-EVENT; ioctl. Once an event is
12 subscribed, the events of subscribed types are dequeueable using the
13 &VIDIOC-DQEVENT; ioctl. Events may be unsubscribed using
14 VIDIOC_UNSUBSCRIBE_EVENT ioctl. The special event type V4L2_EVENT_ALL may
15 be used to unsubscribe all the events the driver supports.</para>
16
17 <para>The event subscriptions and event queues are specific to file
18 handles. Subscribing an event on one file handle does not affect
19 other file handles.</para>
20
21 <para>The information on dequeueable events is obtained by using select or
22 poll system calls on video devices. The V4L2 events use POLLPRI events on
23 poll system call and exceptions on select system call.</para>
24
25 <para>Starting with kernel 3.1 certain guarantees can be given with
26 regards to events:<orderedlist>
27 <listitem>
28 <para>Each subscribed event has its own internal dedicated event queue.
29This means that flooding of one event type will not interfere with other
30event types.</para>
31 </listitem>
32 <listitem>
33 <para>If the internal event queue for a particular subscribed event
34becomes full, then the oldest event in that queue will be dropped.</para>
35 </listitem>
36 <listitem>
37 <para>Where applicable, certain event types can ensure that the payload
38of the oldest event that is about to be dropped will be merged with the payload
39of the next oldest event. Thus ensuring that no information is lost, but only an
40intermediate step leading up to that information. See the documentation for the
41event you want to subscribe to whether this is applicable for that event or not.</para>
42 </listitem>
43 </orderedlist></para>
diff --git a/Documentation/DocBook/v4l/dev-osd.xml b/Documentation/DocBook/media/v4l/dev-osd.xml
index c9a68a2ccd3..dd91d6134e8 100644
--- a/Documentation/DocBook/v4l/dev-osd.xml
+++ b/Documentation/DocBook/media/v4l/dev-osd.xml
@@ -1,13 +1,6 @@
1 <title>Video Output Overlay Interface</title> 1 <title>Video Output Overlay Interface</title>
2 <subtitle>Also known as On-Screen Display (OSD)</subtitle> 2 <subtitle>Also known as On-Screen Display (OSD)</subtitle>
3 3
4 <note>
5 <title>Experimental</title>
6
7 <para>This is an <link linkend="experimental">experimental</link>
8interface and may change in the future.</para>
9 </note>
10
11 <para>Some video output devices can overlay a framebuffer image onto 4 <para>Some video output devices can overlay a framebuffer image onto
12the outgoing video signal. Applications can set up such an overlay 5the outgoing video signal. Applications can set up such an overlay
13using this interface, which borrows structures and ioctls of the <link 6using this interface, which borrows structures and ioctls of the <link
@@ -154,11 +147,3 @@ data flow. For more information see <xref linkend="crop" />.</para>
154however the framebuffer interface of the driver may support the 147however the framebuffer interface of the driver may support the
155<constant>FBIOBLANK</constant> ioctl.</para> 148<constant>FBIOBLANK</constant> ioctl.</para>
156 </section> 149 </section>
157
158 <!--
159Local Variables:
160mode: sgml
161sgml-parent-document: "v4l2.sgml"
162indent-tabs-mode: nil
163End:
164 -->
diff --git a/Documentation/DocBook/v4l/dev-output.xml b/Documentation/DocBook/media/v4l/dev-output.xml
index 919e22c5385..9130a3dc788 100644
--- a/Documentation/DocBook/v4l/dev-output.xml
+++ b/Documentation/DocBook/media/v4l/dev-output.xml
@@ -104,11 +104,3 @@ linkend="mmap">memory mapping</link> or <link
104linkend="userp">user pointer</link>) I/O. See <xref 104linkend="userp">user pointer</link>) I/O. See <xref
105linkend="io" /> for details.</para> 105linkend="io" /> for details.</para>
106 </section> 106 </section>
107
108 <!--
109Local Variables:
110mode: sgml
111sgml-parent-document: "v4l2.sgml"
112indent-tabs-mode: nil
113End:
114 -->
diff --git a/Documentation/DocBook/v4l/dev-overlay.xml b/Documentation/DocBook/media/v4l/dev-overlay.xml
index 92513cf7915..40d1d768143 100644
--- a/Documentation/DocBook/v4l/dev-overlay.xml
+++ b/Documentation/DocBook/media/v4l/dev-overlay.xml
@@ -369,11 +369,3 @@ reasons. <!-- video4linux-list@redhat.com on 22 Oct 2002 subject
369 <para>To start or stop the frame buffer overlay applications call 369 <para>To start or stop the frame buffer overlay applications call
370the &VIDIOC-OVERLAY; ioctl.</para> 370the &VIDIOC-OVERLAY; ioctl.</para>
371 </section> 371 </section>
372
373 <!--
374Local Variables:
375mode: sgml
376sgml-parent-document: "v4l2.sgml"
377indent-tabs-mode: nil
378End:
379 -->
diff --git a/Documentation/DocBook/v4l/dev-radio.xml b/Documentation/DocBook/media/v4l/dev-radio.xml
index 73aa90b45b3..3e6ac73b36a 100644
--- a/Documentation/DocBook/v4l/dev-radio.xml
+++ b/Documentation/DocBook/media/v4l/dev-radio.xml
@@ -47,11 +47,3 @@ depending on the selected frequency. The &VIDIOC-G-TUNER; or
47&VIDIOC-G-MODULATOR; ioctl 47&VIDIOC-G-MODULATOR; ioctl
48reports the supported frequency range.</para> 48reports the supported frequency range.</para>
49 </section> 49 </section>
50
51<!--
52Local Variables:
53mode: sgml
54sgml-parent-document: "v4l2.sgml"
55indent-tabs-mode: nil
56End:
57 -->
diff --git a/Documentation/DocBook/v4l/dev-raw-vbi.xml b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml
index c5a70bdfaf2..b788c72c885 100644
--- a/Documentation/DocBook/v4l/dev-raw-vbi.xml
+++ b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml
@@ -337,11 +337,3 @@ an &EBUSY; if the required hardware resources are temporarily
337unavailable, for example the device is already in use by another 337unavailable, for example the device is already in use by another
338process.</para> 338process.</para>
339 </section> 339 </section>
340
341 <!--
342Local Variables:
343mode: sgml
344sgml-parent-document: "v4l2.sgml"
345indent-tabs-mode: nil
346End:
347 -->
diff --git a/Documentation/DocBook/v4l/dev-rds.xml b/Documentation/DocBook/media/v4l/dev-rds.xml
index 2427f54397e..be2f3373732 100644
--- a/Documentation/DocBook/v4l/dev-rds.xml
+++ b/Documentation/DocBook/media/v4l/dev-rds.xml
@@ -6,7 +6,7 @@ information, on an inaudible audio subcarrier of a radio program. This
6interface is aimed at devices capable of receiving and/or transmitting RDS 6interface is aimed at devices capable of receiving and/or transmitting RDS
7information.</para> 7information.</para>
8 8
9 <para>For more information see the core RDS standard <xref linkend="en50067" /> 9 <para>For more information see the core RDS standard <xref linkend="iec62106" />
10and the RBDS standard <xref linkend="nrsc4" />.</para> 10and the RBDS standard <xref linkend="nrsc4" />.</para>
11 11
12 <para>Note that the RBDS standard as is used in the USA is almost identical 12 <para>Note that the RBDS standard as is used in the USA is almost identical
@@ -29,10 +29,10 @@ returned by the &VIDIOC-QUERYCAP; ioctl. Any tuner that supports RDS
29will set the <constant>V4L2_TUNER_CAP_RDS</constant> flag in 29will set the <constant>V4L2_TUNER_CAP_RDS</constant> flag in
30the <structfield>capability</structfield> field of &v4l2-tuner;. If 30the <structfield>capability</structfield> field of &v4l2-tuner;. If
31the driver only passes RDS blocks without interpreting the data 31the driver only passes RDS blocks without interpreting the data
32the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be 32the <constant>V4L2_TUNER_CAP_RDS_BLOCK_IO</constant> flag has to be
33set, see <link linkend="reading-rds-data">Reading RDS data</link>. 33set, see <link linkend="reading-rds-data">Reading RDS data</link>.
34For future use the 34For future use the
35flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> has also been 35flag <constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant> has also been
36defined. However, a driver for a radio tuner with this capability does 36defined. However, a driver for a radio tuner with this capability does
37not yet exist, so if you are planning to write such a driver you 37not yet exist, so if you are planning to write such a driver you
38should discuss this on the linux-media mailing list: &v4l-ml;.</para> 38should discuss this on the linux-media mailing list: &v4l-ml;.</para>
@@ -52,9 +52,9 @@ field of &v4l2-modulator;.
52In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant> 52In order to enable the RDS transmission one must set the <constant>V4L2_TUNER_SUB_RDS</constant>
53bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;. 53bit in the <structfield>txsubchans</structfield> field of &v4l2-modulator;.
54If the driver only passes RDS blocks without interpreting the data 54If the driver only passes RDS blocks without interpreting the data
55the <constant>V4L2_TUNER_SUB_RDS_BLOCK_IO</constant> flag has to be set. If the 55the <constant>V4L2_TUNER_CAP_RDS_BLOCK_IO</constant> flag has to be set. If the
56tuner is capable of handling RDS entities like program identification codes and radio 56tuner is capable of handling RDS entities like program identification codes and radio
57text, the flag <constant>V4L2_TUNER_SUB_RDS_CONTROLS</constant> should be set, 57text, the flag <constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant> should be set,
58see <link linkend="writing-rds-data">Writing RDS data</link> and 58see <link linkend="writing-rds-data">Writing RDS data</link> and
59<link linkend="fm-tx-controls">FM Transmitter Control Reference</link>.</para> 59<link linkend="fm-tx-controls">FM Transmitter Control Reference</link>.</para>
60 </section> 60 </section>
@@ -194,11 +194,3 @@ as follows:</para>
194 </tgroup> 194 </tgroup>
195 </table> 195 </table>
196 </section> 196 </section>
197
198<!--
199Local Variables:
200mode: sgml
201sgml-parent-document: "v4l2.sgml"
202indent-tabs-mode: nil
203End:
204 -->
diff --git a/Documentation/DocBook/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
index 69e789fa7f7..548f8ea28de 100644
--- a/Documentation/DocBook/v4l/dev-sliced-vbi.xml
+++ b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
@@ -697,12 +697,3 @@ Sliced VBI services</link> for a description of the line payload.</entry>
697 697
698 </section> 698 </section>
699 </section> 699 </section>
700
701
702<!--
703Local Variables:
704mode: sgml
705sgml-parent-document: "v4l2.sgml"
706indent-tabs-mode: nil
707End:
708 -->
diff --git a/Documentation/DocBook/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml
index 05c8fefcbcb..d15aaf83f56 100644
--- a/Documentation/DocBook/v4l/dev-subdev.xml
+++ b/Documentation/DocBook/media/v4l/dev-subdev.xml
@@ -76,11 +76,12 @@
76 <wordasword>format</wordasword> means the combination of media bus data 76 <wordasword>format</wordasword> means the combination of media bus data
77 format, frame width and frame height.</para></note> 77 format, frame width and frame height.</para></note>
78 78
79 <para>Image formats are typically negotiated on video capture and output 79 <para>Image formats are typically negotiated on video capture and
80 devices using the <link linkend="crop">cropping and scaling</link> ioctls. 80 output devices using the format and <link
81 The driver is responsible for configuring every block in the video pipeline 81 linkend="vidioc-subdev-g-selection">selection</link> ioctls. The
82 according to the requested format at the pipeline input and/or 82 driver is responsible for configuring every block in the video
83 output.</para> 83 pipeline according to the requested format at the pipeline input
84 and/or output.</para>
84 85
85 <para>For complex devices, such as often found in embedded systems, 86 <para>For complex devices, such as often found in embedded systems,
86 identical image sizes at the output of a pipeline can be achieved using 87 identical image sizes at the output of a pipeline can be achieved using
@@ -266,7 +267,7 @@
266 267
267 <para>When satisfied with the try results, applications can set the active 268 <para>When satisfied with the try results, applications can set the active
268 formats by setting the <structfield>which</structfield> argument to 269 formats by setting the <structfield>which</structfield> argument to
269 <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. Active formats are changed 270 <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. Active formats are changed
270 exactly as try formats by drivers. To avoid modifying the hardware state 271 exactly as try formats by drivers. To avoid modifying the hardware state
271 during format negotiation, applications should negotiate try formats first 272 during format negotiation, applications should negotiate try formats first
272 and then modify the active settings using the try formats returned during 273 and then modify the active settings using the try formats returned during
@@ -275,12 +276,12 @@
275 </para> 276 </para>
276 </section> 277 </section>
277 278
278 <section> 279 <section id="v4l2-subdev-selections">
279 <title>Cropping and scaling</title> 280 <title>Selections: cropping, scaling and composition</title>
280 281
281 <para>Many sub-devices support cropping frames on their input or output 282 <para>Many sub-devices support cropping frames on their input or output
282 pads (or possible even on both). Cropping is used to select the area of 283 pads (or possible even on both). Cropping is used to select the area of
283 interest in an image, typically on a video sensor or video decoder. It can 284 interest in an image, typically on an image sensor or a video decoder. It can
284 also be used as part of digital zoom implementations to select the area of 285 also be used as part of digital zoom implementations to select the area of
285 the image that will be scaled up.</para> 286 the image that will be scaled up.</para>
286 287
@@ -288,26 +289,179 @@
288 &v4l2-rect; by the coordinates of the top left corner and the rectangle 289 &v4l2-rect; by the coordinates of the top left corner and the rectangle
289 size. Both the coordinates and sizes are expressed in pixels.</para> 290 size. Both the coordinates and sizes are expressed in pixels.</para>
290 291
291 <para>The crop rectangle is retrieved and set using the 292 <para>As for pad formats, drivers store try and active
292 &VIDIOC-SUBDEV-G-CROP; and &VIDIOC-SUBDEV-S-CROP; ioctls. Like for pad 293 rectangles for the selection targets <xref
293 formats, drivers store try and active crop rectangles. The format 294 linkend="v4l2-selections-common" />.</para>
294 negotiation mechanism applies to crop settings as well.</para> 295
295 296 <para>On sink pads, cropping is applied relative to the
296 <para>On input pads, cropping is applied relatively to the current pad 297 current pad format. The pad format represents the image size as
297 format. The pad format represents the image size as received by the 298 received by the sub-device from the previous block in the
298 sub-device from the previous block in the pipeline, and the crop rectangle 299 pipeline, and the crop rectangle represents the sub-image that
299 represents the sub-image that will be transmitted further inside the 300 will be transmitted further inside the sub-device for
300 sub-device for processing. The crop rectangle be entirely containted 301 processing.</para>
301 inside the input image size.</para> 302
302 303 <para>The scaling operation changes the size of the image by
303 <para>Input crop rectangle are reset to their default value when the input 304 scaling it to new dimensions. The scaling ratio isn't specified
304 image format is modified. Drivers should use the input image size as the 305 explicitly, but is implied from the original and scaled image
305 crop rectangle default value, but hardware requirements may prevent this. 306 sizes. Both sizes are represented by &v4l2-rect;.</para>
306 </para> 307
308 <para>Scaling support is optional. When supported by a subdev,
309 the crop rectangle on the subdev's sink pad is scaled to the
310 size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
311 using <constant>V4L2_SEL_TGT_COMPOSE</constant>
312 selection target on the same pad. If the subdev supports scaling
313 but not composing, the top and left values are not used and must
314 always be set to zero.</para>
315
316 <para>On source pads, cropping is similar to sink pads, with the
317 exception that the source size from which the cropping is
318 performed, is the COMPOSE rectangle on the sink pad. In both
319 sink and source pads, the crop rectangle must be entirely
320 contained inside the source image size for the crop
321 operation.</para>
322
323 <para>The drivers should always use the closest possible
324 rectangle the user requests on all selection targets, unless
325 specifically told otherwise.
326 <constant>V4L2_SEL_FLAG_GE</constant> and
327 <constant>V4L2_SEL_FLAG_LE</constant> flags may be
328 used to round the image size either up or down. <xref
329 linkend="v4l2-selection-flags" /></para>
330 </section>
331
332 <section>
333 <title>Types of selection targets</title>
307 334
308 <para>Cropping behaviour on output pads is not defined.</para> 335 <section>
336 <title>Actual targets</title>
337
338 <para>Actual targets (without a postfix) reflect the actual
339 hardware configuration at any point of time. There is a BOUNDS
340 target corresponding to every actual target.</para>
341 </section>
342
343 <section>
344 <title>BOUNDS targets</title>
345
346 <para>BOUNDS targets is the smallest rectangle that contains all
347 valid actual rectangles. It may not be possible to set the actual
348 rectangle as large as the BOUNDS rectangle, however. This may be
349 because e.g. a sensor's pixel array is not rectangular but
350 cross-shaped or round. The maximum size may also be smaller than the
351 BOUNDS rectangle.</para>
352 </section>
309 353
310 </section> 354 </section>
355
356 <section>
357 <title>Order of configuration and format propagation</title>
358
359 <para>Inside subdevs, the order of image processing steps will
360 always be from the sink pad towards the source pad. This is also
361 reflected in the order in which the configuration must be
362 performed by the user: the changes made will be propagated to
363 any subsequent stages. If this behaviour is not desired, the
364 user must set
365 <constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant> flag. This
366 flag causes no propagation of the changes are allowed in any
367 circumstances. This may also cause the accessed rectangle to be
368 adjusted by the driver, depending on the properties of the
369 underlying hardware.</para>
370
371 <para>The coordinates to a step always refer to the actual size
372 of the previous step. The exception to this rule is the source
373 compose rectangle, which refers to the sink compose bounds
374 rectangle --- if it is supported by the hardware.</para>
375
376 <orderedlist>
377 <listitem><para>Sink pad format. The user configures the sink pad
378 format. This format defines the parameters of the image the
379 entity receives through the pad for further processing.</para></listitem>
380
381 <listitem><para>Sink pad actual crop selection. The sink pad crop
382 defines the crop performed to the sink pad format.</para></listitem>
383
384 <listitem><para>Sink pad actual compose selection. The size of the
385 sink pad compose rectangle defines the scaling ratio compared
386 to the size of the sink pad crop rectangle. The location of
387 the compose rectangle specifies the location of the actual
388 sink compose rectangle in the sink compose bounds
389 rectangle.</para></listitem>
390
391 <listitem><para>Source pad actual crop selection. Crop on the source
392 pad defines crop performed to the image in the sink compose
393 bounds rectangle.</para></listitem>
394
395 <listitem><para>Source pad format. The source pad format defines the
396 output pixel format of the subdev, as well as the other
397 parameters with the exception of the image width and height.
398 Width and height are defined by the size of the source pad
399 actual crop selection.</para></listitem>
400 </orderedlist>
401
402 <para>Accessing any of the above rectangles not supported by the
403 subdev will return <constant>EINVAL</constant>. Any rectangle
404 referring to a previous unsupported rectangle coordinates will
405 instead refer to the previous supported rectangle. For example,
406 if sink crop is not supported, the compose selection will refer
407 to the sink pad format dimensions instead.</para>
408
409 <figure id="subdev-image-processing-crop">
410 <title>Image processing in subdevs: simple crop example</title>
411 <mediaobject>
412 <imageobject>
413 <imagedata fileref="subdev-image-processing-crop.svg"
414 format="SVG" scale="200" />
415 </imageobject>
416 </mediaobject>
417 </figure>
418
419 <para>In the above example, the subdev supports cropping on its
420 sink pad. To configure it, the user sets the media bus format on
421 the subdev's sink pad. Now the actual crop rectangle can be set
422 on the sink pad --- the location and size of this rectangle
423 reflect the location and size of a rectangle to be cropped from
424 the sink format. The size of the sink crop rectangle will also
425 be the size of the format of the subdev's source pad.</para>
426
427 <figure id="subdev-image-processing-scaling-multi-source">
428 <title>Image processing in subdevs: scaling with multiple sources</title>
429 <mediaobject>
430 <imageobject>
431 <imagedata fileref="subdev-image-processing-scaling-multi-source.svg"
432 format="SVG" scale="200" />
433 </imageobject>
434 </mediaobject>
435 </figure>
436
437 <para>In this example, the subdev is capable of first cropping,
438 then scaling and finally cropping for two source pads
439 individually from the resulting scaled image. The location of
440 the scaled image in the cropped image is ignored in sink compose
441 target. Both of the locations of the source crop rectangles
442 refer to the sink scaling rectangle, independently cropping an
443 area at location specified by the source crop rectangle from
444 it.</para>
445
446 <figure id="subdev-image-processing-full">
447 <title>Image processing in subdevs: scaling and composition
448 with multiple sinks and sources</title>
449 <mediaobject>
450 <imageobject>
451 <imagedata fileref="subdev-image-processing-full.svg"
452 format="SVG" scale="200" />
453 </imageobject>
454 </mediaobject>
455 </figure>
456
457 <para>The subdev driver supports two sink pads and two source
458 pads. The images from both of the sink pads are individually
459 cropped, then scaled and further composed on the composition
460 bounds rectangle. From that, two independent streams are cropped
461 and sent out of the subdev from the source pads.</para>
462
463 </section>
464
311 </section> 465 </section>
312 466
313 &sub-subdev-formats; 467 &sub-subdev-formats;
diff --git a/Documentation/DocBook/v4l/dev-teletext.xml b/Documentation/DocBook/media/v4l/dev-teletext.xml
index 414b1cfff9f..bd21c64d70f 100644
--- a/Documentation/DocBook/v4l/dev-teletext.xml
+++ b/Documentation/DocBook/media/v4l/dev-teletext.xml
@@ -27,11 +27,3 @@ kernel 2.6.37.</para>
27 27
28 <para>Modern devices all use the <link linkend="raw-vbi">raw</link> or 28 <para>Modern devices all use the <link linkend="raw-vbi">raw</link> or
29<link linkend="sliced">sliced</link> VBI API.</para> 29<link linkend="sliced">sliced</link> VBI API.</para>
30
31 <!--
32Local Variables:
33mode: sgml
34sgml-parent-document: "v4l2.sgml"
35indent-tabs-mode: nil
36End:
37 -->
diff --git a/Documentation/DocBook/v4l/driver.xml b/Documentation/DocBook/media/v4l/driver.xml
index 1f7eea5c4ec..7c6638baced 100644
--- a/Documentation/DocBook/v4l/driver.xml
+++ b/Documentation/DocBook/media/v4l/driver.xml
@@ -116,7 +116,7 @@ my_suspend (struct pci_dev * pci_dev,
116 return 0; /* a negative value on error, 0 on success. */ 116 return 0; /* a negative value on error, 0 on success. */
117} 117}
118 118
119static void __devexit 119static void
120my_remove (struct pci_dev * pci_dev) 120my_remove (struct pci_dev * pci_dev)
121{ 121{
122 my_device *my = pci_get_drvdata (pci_dev); 122 my_device *my = pci_get_drvdata (pci_dev);
@@ -124,7 +124,7 @@ my_remove (struct pci_dev * pci_dev)
124 /* Describe me. */ 124 /* Describe me. */
125} 125}
126 126
127static int __devinit 127static int
128my_probe (struct pci_dev * pci_dev, 128my_probe (struct pci_dev * pci_dev,
129 const struct pci_device_id * pci_id) 129 const struct pci_device_id * pci_id)
130{ 130{
@@ -157,7 +157,7 @@ my_pci_driver = {
157 .id_table = my_pci_device_ids, 157 .id_table = my_pci_device_ids,
158 158
159 .probe = my_probe, 159 .probe = my_probe,
160 .remove = __devexit_p (my_remove), 160 .remove = my_remove,
161 161
162 /* Power management functions. */ 162 /* Power management functions. */
163 .suspend = my_suspend, 163 .suspend = my_suspend,
@@ -198,11 +198,3 @@ devices with the videodev module.</para>
198 <para>to do</para> 198 <para>to do</para>
199 </section> 199 </section>
200--> 200-->
201
202<!--
203Local Variables:
204mode: sgml
205sgml-parent-document: "v4l2.sgml"
206indent-tabs-mode: nil
207End:
208-->
diff --git a/Documentation/DocBook/v4l/fdl-appendix.xml b/Documentation/DocBook/media/v4l/fdl-appendix.xml
index ae22394ba99..ae22394ba99 100644
--- a/Documentation/DocBook/v4l/fdl-appendix.xml
+++ b/Documentation/DocBook/media/v4l/fdl-appendix.xml
diff --git a/Documentation/DocBook/v4l/fieldseq_bt.pdf b/Documentation/DocBook/media/v4l/fieldseq_bt.pdf
index 26598b23f80..26598b23f80 100644
--- a/Documentation/DocBook/v4l/fieldseq_bt.pdf
+++ b/Documentation/DocBook/media/v4l/fieldseq_bt.pdf
Binary files differ
diff --git a/Documentation/DocBook/v4l/fieldseq_tb.pdf b/Documentation/DocBook/media/v4l/fieldseq_tb.pdf
index 4965b22ddb3..4965b22ddb3 100644
--- a/Documentation/DocBook/v4l/fieldseq_tb.pdf
+++ b/Documentation/DocBook/media/v4l/fieldseq_tb.pdf
Binary files differ
diff --git a/Documentation/DocBook/v4l/func-close.xml b/Documentation/DocBook/media/v4l/func-close.xml
index dfb41cbbbec..232920d2f3c 100644
--- a/Documentation/DocBook/v4l/func-close.xml
+++ b/Documentation/DocBook/media/v4l/func-close.xml
@@ -60,11 +60,3 @@ descriptor.</para>
60 </variablelist> 60 </variablelist>
61 </refsect1> 61 </refsect1>
62</refentry> 62</refentry>
63
64<!--
65Local Variables:
66mode: sgml
67sgml-parent-document: "v4l2.sgml"
68indent-tabs-mode: nil
69End:
70-->
diff --git a/Documentation/DocBook/media/v4l/func-ioctl.xml b/Documentation/DocBook/media/v4l/func-ioctl.xml
new file mode 100644
index 00000000000..4394184a1a6
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/func-ioctl.xml
@@ -0,0 +1,71 @@
1<refentry id="func-ioctl">
2 <refmeta>
3 <refentrytitle>V4L2 ioctl()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-ioctl</refname>
9 <refpurpose>Program a V4L2 device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;sys/ioctl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>void *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>V4L2 ioctl request code as defined in the <filename>videodev2.h</filename> header file, for example
38VIDIOC_QUERYCAP.</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para>Pointer to a function parameter, usually a structure.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>The <function>ioctl()</function> function is used to program
54V4L2 devices. The argument <parameter>fd</parameter> must be an open
55file descriptor. An ioctl <parameter>request</parameter> has encoded
56in it whether the argument is an input, output or read/write
57parameter, and the size of the argument <parameter>argp</parameter> in
58bytes. Macros and defines specifying V4L2 ioctl requests are located
59in the <filename>videodev2.h</filename> header file.
60Applications should use their own copy, not include the version in the
61kernel sources on the system they compile on. All V4L2 ioctl requests,
62their respective function and parameters are specified in <xref
63 linkend="user-func" />.</para>
64 </refsect1>
65
66 <refsect1>
67 &return-value;
68 <para>When an ioctl that takes an output or read/write parameter fails,
69 the parameter remains unmodified.</para>
70 </refsect1>
71</refentry>
diff --git a/Documentation/DocBook/v4l/func-mmap.xml b/Documentation/DocBook/media/v4l/func-mmap.xml
index 786732b64bb..f31ad71bf30 100644
--- a/Documentation/DocBook/v4l/func-mmap.xml
+++ b/Documentation/DocBook/media/v4l/func-mmap.xml
@@ -181,11 +181,3 @@ complete the request.</para>
181 </variablelist> 181 </variablelist>
182 </refsect1> 182 </refsect1>
183</refentry> 183</refentry>
184
185<!--
186Local Variables:
187mode: sgml
188sgml-parent-document: "v4l2.sgml"
189indent-tabs-mode: nil
190End:
191-->
diff --git a/Documentation/DocBook/v4l/func-munmap.xml b/Documentation/DocBook/media/v4l/func-munmap.xml
index e2c4190f9bb..860d49ca54a 100644
--- a/Documentation/DocBook/v4l/func-munmap.xml
+++ b/Documentation/DocBook/media/v4l/func-munmap.xml
@@ -74,11 +74,3 @@ mapped yet.</para>
74 </variablelist> 74 </variablelist>
75 </refsect1> 75 </refsect1>
76</refentry> 76</refentry>
77
78<!--
79Local Variables:
80mode: sgml
81sgml-parent-document: "v4l2.sgml"
82indent-tabs-mode: nil
83End:
84-->
diff --git a/Documentation/DocBook/v4l/func-open.xml b/Documentation/DocBook/media/v4l/func-open.xml
index 7595d07a8c7..cf64e207c3e 100644
--- a/Documentation/DocBook/v4l/func-open.xml
+++ b/Documentation/DocBook/media/v4l/func-open.xml
@@ -111,11 +111,3 @@ system has been reached.</para>
111 </variablelist> 111 </variablelist>
112 </refsect1> 112 </refsect1>
113</refentry> 113</refentry>
114
115<!--
116Local Variables:
117mode: sgml
118sgml-parent-document: "v4l2.sgml"
119indent-tabs-mode: nil
120End:
121-->
diff --git a/Documentation/DocBook/v4l/func-poll.xml b/Documentation/DocBook/media/v4l/func-poll.xml
index ec3c718f596..85cad8bff5b 100644
--- a/Documentation/DocBook/v4l/func-poll.xml
+++ b/Documentation/DocBook/media/v4l/func-poll.xml
@@ -117,11 +117,3 @@ than <constant>OPEN_MAX</constant>.</para>
117 </variablelist> 117 </variablelist>
118 </refsect1> 118 </refsect1>
119</refentry> 119</refentry>
120
121<!--
122Local Variables:
123mode: sgml
124sgml-parent-document: "v4l2.sgml"
125indent-tabs-mode: nil
126End:
127-->
diff --git a/Documentation/DocBook/v4l/func-read.xml b/Documentation/DocBook/media/v4l/func-read.xml
index a5089bf8873..e218bbfbd36 100644
--- a/Documentation/DocBook/v4l/func-read.xml
+++ b/Documentation/DocBook/media/v4l/func-read.xml
@@ -179,11 +179,3 @@ type of device.</para>
179 </variablelist> 179 </variablelist>
180 </refsect1> 180 </refsect1>
181</refentry> 181</refentry>
182
183<!--
184Local Variables:
185mode: sgml
186sgml-parent-document: "v4l2.sgml"
187indent-tabs-mode: nil
188End:
189-->
diff --git a/Documentation/DocBook/v4l/func-select.xml b/Documentation/DocBook/media/v4l/func-select.xml
index b6713623181..e12a60d9bd8 100644
--- a/Documentation/DocBook/v4l/func-select.xml
+++ b/Documentation/DocBook/media/v4l/func-select.xml
@@ -128,11 +128,3 @@ zero or greater than <constant>FD_SETSIZE</constant>.</para>
128 </variablelist> 128 </variablelist>
129 </refsect1> 129 </refsect1>
130</refentry> 130</refentry>
131
132<!--
133Local Variables:
134mode: sgml
135sgml-parent-document: "v4l2.sgml"
136indent-tabs-mode: nil
137End:
138-->
diff --git a/Documentation/DocBook/v4l/func-write.xml b/Documentation/DocBook/media/v4l/func-write.xml
index 2c09c09371c..57520788572 100644
--- a/Documentation/DocBook/v4l/func-write.xml
+++ b/Documentation/DocBook/media/v4l/func-write.xml
@@ -126,11 +126,3 @@ type of device.</para>
126 </variablelist> 126 </variablelist>
127 </refsect1> 127 </refsect1>
128</refentry> 128</refentry>
129
130<!--
131Local Variables:
132mode: sgml
133sgml-parent-document: "v4l2.sgml"
134indent-tabs-mode: nil
135End:
136-->
diff --git a/Documentation/DocBook/media/v4l/gen-errors.xml b/Documentation/DocBook/media/v4l/gen-errors.xml
new file mode 100644
index 00000000000..7e29a4e1f69
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/gen-errors.xml
@@ -0,0 +1,77 @@
1<title>Generic Error Codes</title>
2
3<table frame="none" pgwide="1" id="gen-errors">
4 <title>Generic error codes</title>
5 <tgroup cols="2">
6 &cs-str;
7 <tbody valign="top">
8 <!-- Keep it ordered alphabetically -->
9 <row>
10 <entry>EAGAIN (aka EWOULDBLOCK)</entry>
11 <entry>The ioctl can't be handled because the device is in state where
12 it can't perform it. This could happen for example in case where
13 device is sleeping and ioctl is performed to query statistics.
14 It is also returned when the ioctl would need to wait
15 for an event, but the device was opened in non-blocking mode.
16 </entry>
17 </row>
18 <row>
19 <entry>EBADF</entry>
20 <entry>The file descriptor is not a valid.</entry>
21 </row>
22 <row>
23 <entry>EBUSY</entry>
24 <entry>The ioctl can't be handled because the device is busy. This is
25 typically return while device is streaming, and an ioctl tried to
26 change something that would affect the stream, or would require the
27 usage of a hardware resource that was already allocated. The ioctl
28 must not be retried without performing another action to fix the
29 problem first (typically: stop the stream before retrying).</entry>
30 </row>
31 <row>
32 <entry>EFAULT</entry>
33 <entry>There was a failure while copying data from/to userspace,
34 probably caused by an invalid pointer reference.</entry>
35 </row>
36 <row>
37 <entry>EINVAL</entry>
38 <entry>One or more of the ioctl parameters are invalid or out of the
39 allowed range. This is a widely used error code. See the individual
40 ioctl requests for specific causes.</entry>
41 </row>
42 <row>
43 <entry>ENODEV</entry>
44 <entry>Device not found or was removed.</entry>
45 </row>
46 <row>
47 <entry>ENOMEM</entry>
48 <entry>There's not enough memory to handle the desired operation.</entry>
49 </row>
50 <row>
51 <entry>ENOTTY</entry>
52 <entry>The ioctl is not supported by the driver, actually meaning that
53 the required functionality is not available, or the file
54 descriptor is not for a media device.</entry>
55 </row>
56 <row>
57 <entry>ENOSPC</entry>
58 <entry>On USB devices, the stream ioctl's can return this error, meaning
59 that this request would overcommit the usb bandwidth reserved
60 for periodic transfers (up to 80% of the USB bandwidth).</entry>
61 </row>
62 <row>
63 <entry>EPERM</entry>
64 <entry>Permission denied. Can be returned if the device needs write
65 permission, or some special capabilities is needed
66 (e. g. root)</entry>
67 </row>
68 </tbody>
69 </tgroup>
70</table>
71
72<para>Note 1: ioctls may return other error codes. Since errors may have side
73effects such as a driver reset, applications should abort on unexpected errors.
74</para>
75
76<para>Note 2: Request-specific error codes are listed in the individual
77requests descriptions.</para>
diff --git a/Documentation/DocBook/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml
index 227e7ac45a0..388a3403265 100644
--- a/Documentation/DocBook/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -210,7 +210,7 @@ for (i = 0; i &lt; reqbuf.count; i++)
210 <programlisting> 210 <programlisting>
211&v4l2-requestbuffers; reqbuf; 211&v4l2-requestbuffers; reqbuf;
212/* Our current format uses 3 planes per buffer */ 212/* Our current format uses 3 planes per buffer */
213#define FMT_NUM_PLANES = 3; 213#define FMT_NUM_PLANES = 3
214 214
215struct { 215struct {
216 void *start[FMT_NUM_PLANES]; 216 void *start[FMT_NUM_PLANES];
@@ -331,7 +331,7 @@ application until one or more buffers can be dequeued. By default
331outgoing queue. When the <constant>O_NONBLOCK</constant> flag was 331outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
332given to the &func-open; function, <constant>VIDIOC_DQBUF</constant> 332given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
333returns immediately with an &EAGAIN; when no buffer is available. The 333returns immediately with an &EAGAIN; when no buffer is available. The
334&func-select; or &func-poll; function are always available.</para> 334&func-select; or &func-poll; functions are always available.</para>
335 335
336 <para>To start and stop capturing or output applications call the 336 <para>To start and stop capturing or output applications call the
337&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note 337&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note
@@ -472,6 +472,165 @@ rest should be evident.</para>
472 </footnote></para> 472 </footnote></para>
473 </section> 473 </section>
474 474
475 <section id="dmabuf">
476 <title>Streaming I/O (DMA buffer importing)</title>
477
478 <note>
479 <title>Experimental</title>
480 <para>This is an <link linkend="experimental"> experimental </link>
481 interface and may change in the future.</para>
482 </note>
483
484<para>The DMABUF framework provides a generic method for sharing buffers
485between multiple devices. Device drivers that support DMABUF can export a DMA
486buffer to userspace as a file descriptor (known as the exporter role), import a
487DMA buffer from userspace using a file descriptor previously exported for a
488different or the same device (known as the importer role), or both. This
489section describes the DMABUF importer role API in V4L2.</para>
490
491 <para>Refer to <link linked="vidioc-expbuf"> DMABUF exporting </link> for
492details about exporting V4L2 buffers as DMABUF file descriptors.</para>
493
494<para>Input and output devices support the streaming I/O method when the
495<constant>V4L2_CAP_STREAMING</constant> flag in the
496<structfield>capabilities</structfield> field of &v4l2-capability; returned by
497the &VIDIOC-QUERYCAP; ioctl is set. Whether importing DMA buffers through
498DMABUF file descriptors is supported is determined by calling the
499&VIDIOC-REQBUFS; ioctl with the memory type set to
500<constant>V4L2_MEMORY_DMABUF</constant>.</para>
501
502 <para>This I/O method is dedicated to sharing DMA buffers between different
503devices, which may be V4L devices or other video-related devices (e.g. DRM).
504Buffers (planes) are allocated by a driver on behalf of an application. Next,
505these buffers are exported to the application as file descriptors using an API
506which is specific for an allocator driver. Only such file descriptor are
507exchanged. The descriptors and meta-information are passed in &v4l2-buffer; (or
508in &v4l2-plane; in the multi-planar API case). The driver must be switched
509into DMABUF I/O mode by calling the &VIDIOC-REQBUFS; with the desired buffer
510type.</para>
511
512 <example>
513 <title>Initiating streaming I/O with DMABUF file descriptors</title>
514
515 <programlisting>
516&v4l2-requestbuffers; reqbuf;
517
518memset(&amp;reqbuf, 0, sizeof (reqbuf));
519reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
520reqbuf.memory = V4L2_MEMORY_DMABUF;
521reqbuf.count = 1;
522
523if (ioctl(fd, &VIDIOC-REQBUFS;, &amp;reqbuf) == -1) {
524 if (errno == EINVAL)
525 printf("Video capturing or DMABUF streaming is not supported\n");
526 else
527 perror("VIDIOC_REQBUFS");
528
529 exit(EXIT_FAILURE);
530}
531 </programlisting>
532 </example>
533
534 <para>The buffer (plane) file descriptor is passed on the fly with the
535&VIDIOC-QBUF; ioctl. In case of multiplanar buffers, every plane can be
536associated with a different DMABUF descriptor. Although buffers are commonly
537cycled, applications can pass a different DMABUF descriptor at each
538<constant>VIDIOC_QBUF</constant> call.</para>
539
540 <example>
541 <title>Queueing DMABUF using single plane API</title>
542
543 <programlisting>
544int buffer_queue(int v4lfd, int index, int dmafd)
545{
546 &v4l2-buffer; buf;
547
548 memset(&amp;buf, 0, sizeof buf);
549 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
550 buf.memory = V4L2_MEMORY_DMABUF;
551 buf.index = index;
552 buf.m.fd = dmafd;
553
554 if (ioctl(v4lfd, &VIDIOC-QBUF;, &amp;buf) == -1) {
555 perror("VIDIOC_QBUF");
556 return -1;
557 }
558
559 return 0;
560}
561 </programlisting>
562 </example>
563
564 <example>
565 <title>Queueing DMABUF using multi plane API</title>
566
567 <programlisting>
568int buffer_queue_mp(int v4lfd, int index, int dmafd[], int n_planes)
569{
570 &v4l2-buffer; buf;
571 &v4l2-plane; planes[VIDEO_MAX_PLANES];
572 int i;
573
574 memset(&amp;buf, 0, sizeof buf);
575 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
576 buf.memory = V4L2_MEMORY_DMABUF;
577 buf.index = index;
578 buf.m.planes = planes;
579 buf.length = n_planes;
580
581 memset(&amp;planes, 0, sizeof planes);
582
583 for (i = 0; i &lt; n_planes; ++i)
584 buf.m.planes[i].m.fd = dmafd[i];
585
586 if (ioctl(v4lfd, &VIDIOC-QBUF;, &amp;buf) == -1) {
587 perror("VIDIOC_QBUF");
588 return -1;
589 }
590
591 return 0;
592}
593 </programlisting>
594 </example>
595
596 <para>Captured or displayed buffers are dequeued with the
597&VIDIOC-DQBUF; ioctl. The driver can unlock the buffer at any
598time between the completion of the DMA and this ioctl. The memory is
599also unlocked when &VIDIOC-STREAMOFF; is called, &VIDIOC-REQBUFS;, or
600when the device is closed.</para>
601
602 <para>For capturing applications it is customary to enqueue a
603number of empty buffers, to start capturing and enter the read loop.
604Here the application waits until a filled buffer can be dequeued, and
605re-enqueues the buffer when the data is no longer needed. Output
606applications fill and enqueue buffers, when enough buffers are stacked
607up output is started. In the write loop, when the application
608runs out of free buffers it must wait until an empty buffer can be
609dequeued and reused. Two methods exist to suspend execution of the
610application until one or more buffers can be dequeued. By default
611<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the
612outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
613given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
614returns immediately with an &EAGAIN; when no buffer is available. The
615&func-select; and &func-poll; functions are always available.</para>
616
617 <para>To start and stop capturing or displaying applications call the
618&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctls. Note that
619<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both queues and
620unlocks all buffers as a side effect. Since there is no notion of doing
621anything "now" on a multitasking system, if an application needs to synchronize
622with another event it should examine the &v4l2-buffer;
623<structfield>timestamp</structfield> of captured buffers, or set the field
624before enqueuing buffers for output.</para>
625
626 <para>Drivers implementing DMABUF importing I/O must support the
627<constant>VIDIOC_REQBUFS</constant>, <constant>VIDIOC_QBUF</constant>,
628<constant>VIDIOC_DQBUF</constant>, <constant>VIDIOC_STREAMON</constant> and
629<constant>VIDIOC_STREAMOFF</constant> ioctls, and the
630<function>select()</function> and <function>poll()</function> functions.</para>
631
632 </section>
633
475 <section id="async"> 634 <section id="async">
476 <title>Asynchronous I/O</title> 635 <title>Asynchronous I/O</title>
477 636
@@ -543,12 +702,13 @@ and can range from zero to the number of buffers allocated
543with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry> 702with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry>
544 </row> 703 </row>
545 <row> 704 <row>
546 <entry>&v4l2-buf-type;</entry> 705 <entry>__u32</entry>
547 <entry><structfield>type</structfield></entry> 706 <entry><structfield>type</structfield></entry>
548 <entry></entry> 707 <entry></entry>
549 <entry>Type of the buffer, same as &v4l2-format; 708 <entry>Type of the buffer, same as &v4l2-format;
550<structfield>type</structfield> or &v4l2-requestbuffers; 709<structfield>type</structfield> or &v4l2-requestbuffers;
551<structfield>type</structfield>, set by the application.</entry> 710<structfield>type</structfield>, set by the application. See <xref
711linkend="v4l2-buf-type" /></entry>
552 </row> 712 </row>
553 <row> 713 <row>
554 <entry>__u32</entry> 714 <entry>__u32</entry>
@@ -568,7 +728,7 @@ refers to an input stream, applications when an output stream.</entry>
568linkend="buffer-flags" />.</entry> 728linkend="buffer-flags" />.</entry>
569 </row> 729 </row>
570 <row> 730 <row>
571 <entry>&v4l2-field;</entry> 731 <entry>__u32</entry>
572 <entry><structfield>field</structfield></entry> 732 <entry><structfield>field</structfield></entry>
573 <entry></entry> 733 <entry></entry>
574 <entry>Indicates the field order of the image in the 734 <entry>Indicates the field order of the image in the
@@ -612,8 +772,8 @@ field is independent of the <structfield>timestamp</structfield> and
612 <entry>__u32</entry> 772 <entry>__u32</entry>
613 <entry><structfield>sequence</structfield></entry> 773 <entry><structfield>sequence</structfield></entry>
614 <entry></entry> 774 <entry></entry>
615 <entry>Set by the driver, counting the frames in the 775 <entry>Set by the driver, counting the frames (not fields!) in
616sequence.</entry> 776sequence. This field is set for both input and output devices.</entry>
617 </row> 777 </row>
618 <row> 778 <row>
619 <entry spanname="hspan"><para>In <link 779 <entry spanname="hspan"><para>In <link
@@ -630,11 +790,12 @@ bandwidth. These devices identify by not enumerating any video
630standards, see <xref linkend="standard" />.</para></entry> 790standards, see <xref linkend="standard" />.</para></entry>
631 </row> 791 </row>
632 <row> 792 <row>
633 <entry>&v4l2-memory;</entry> 793 <entry>__u32</entry>
634 <entry><structfield>memory</structfield></entry> 794 <entry><structfield>memory</structfield></entry>
635 <entry></entry> 795 <entry></entry>
636 <entry>This field must be set by applications and/or drivers 796 <entry>This field must be set by applications and/or drivers
637in accordance with the selected I/O method.</entry> 797in accordance with the selected I/O method. See <xref linkend="v4l2-memory"
798 /></entry>
638 </row> 799 </row>
639 <row> 800 <row>
640 <entry>union</entry> 801 <entry>union</entry>
@@ -671,32 +832,36 @@ memory, set by the application. See <xref linkend="userp" /> for details.
671 <structname>v4l2_buffer</structname> structure.</entry> 832 <structname>v4l2_buffer</structname> structure.</entry>
672 </row> 833 </row>
673 <row> 834 <row>
835 <entry></entry>
836 <entry>int</entry>
837 <entry><structfield>fd</structfield></entry>
838 <entry>For the single-plane API and when
839<structfield>memory</structfield> is <constant>V4L2_MEMORY_DMABUF</constant> this
840is the file descriptor associated with a DMABUF buffer.</entry>
841 </row>
842 <row>
674 <entry>__u32</entry> 843 <entry>__u32</entry>
675 <entry><structfield>length</structfield></entry> 844 <entry><structfield>length</structfield></entry>
676 <entry></entry> 845 <entry></entry>
677 <entry>Size of the buffer (not the payload) in bytes for the 846 <entry>Size of the buffer (not the payload) in bytes for the
678 single-planar API. For the multi-planar API should contain the 847 single-planar API. For the multi-planar API the application sets
679 number of elements in the <structfield>planes</structfield> array. 848 this to the number of elements in the <structfield>planes</structfield>
849 array. The driver will fill in the actual number of valid elements in
850 that array.
680 </entry> 851 </entry>
681 </row> 852 </row>
682 <row> 853 <row>
683 <entry>__u32</entry> 854 <entry>__u32</entry>
684 <entry><structfield>input</structfield></entry> 855 <entry><structfield>reserved2</structfield></entry>
685 <entry></entry> 856 <entry></entry>
686 <entry>Some video capture drivers support rapid and 857 <entry>A place holder for future extensions. Applications
687synchronous video input changes, a function useful for example in 858should set this to 0.</entry>
688video surveillance applications. For this purpose applications set the
689<constant>V4L2_BUF_FLAG_INPUT</constant> flag, and this field to the
690number of a video input as in &v4l2-input; field
691<structfield>index</structfield>.</entry>
692 </row> 859 </row>
693 <row> 860 <row>
694 <entry>__u32</entry> 861 <entry>__u32</entry>
695 <entry><structfield>reserved</structfield></entry> 862 <entry><structfield>reserved</structfield></entry>
696 <entry></entry> 863 <entry></entry>
697 <entry>A place holder for future extensions and custom 864 <entry>A place holder for future extensions. Applications
698(driver defined) buffer types
699<constant>V4L2_BUF_TYPE_PRIVATE</constant> and higher. Applications
700should set this to 0.</entry> 865should set this to 0.</entry>
701 </row> 866 </row>
702 </tbody> 867 </tbody>
@@ -746,6 +911,15 @@ should set this to 0.</entry>
746 </entry> 911 </entry>
747 </row> 912 </row>
748 <row> 913 <row>
914 <entry></entry>
915 <entry>int</entry>
916 <entry><structfield>fd</structfield></entry>
917 <entry>When the memory type in the containing &v4l2-buffer; is
918 <constant>V4L2_MEMORY_DMABUF</constant>, this is a file
919 descriptor associated with a DMABUF buffer, similar to the
920 <structfield>fd</structfield> field in &v4l2-buffer;.</entry>
921 </row>
922 <row>
749 <entry>__u32</entry> 923 <entry>__u32</entry>
750 <entry><structfield>data_offset</structfield></entry> 924 <entry><structfield>data_offset</structfield></entry>
751 <entry></entry> 925 <entry></entry>
@@ -827,14 +1001,7 @@ should set this to 0.</entry>
827 <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant></entry> 1001 <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant></entry>
828 <entry>8</entry> 1002 <entry>8</entry>
829 <entry>Buffer for video output overlay (OSD), see <xref 1003 <entry>Buffer for video output overlay (OSD), see <xref
830 linkend="osd" />. Status: <link 1004 linkend="osd" />.</entry>
831linkend="experimental">Experimental</link>.</entry>
832 </row>
833 <row>
834 <entry><constant>V4L2_BUF_TYPE_PRIVATE</constant></entry>
835 <entry>0x80</entry>
836 <entry>This and higher values are reserved for custom
837(driver defined) buffer types.</entry>
838 </row> 1005 </row>
839 </tbody> 1006 </tbody>
840 </tgroup> 1007 </tgroup>
@@ -921,11 +1088,31 @@ Drivers set or clear this flag when the <constant>VIDIOC_DQBUF</constant>
921ioctl is called.</entry> 1088ioctl is called.</entry>
922 </row> 1089 </row>
923 <row> 1090 <row>
924 <entry><constant>V4L2_BUF_FLAG_INPUT</constant></entry> 1091 <entry><constant>V4L2_BUF_FLAG_PREPARED</constant></entry>
925 <entry>0x0200</entry> 1092 <entry>0x0400</entry>
926 <entry>The <structfield>input</structfield> field is valid. 1093 <entry>The buffer has been prepared for I/O and can be queued by the
927Applications set or clear this flag before calling the 1094application. Drivers set or clear this flag when the
928<constant>VIDIOC_QBUF</constant> ioctl.</entry> 1095<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link>, <link
1096 linkend="vidioc-qbuf">VIDIOC_PREPARE_BUF</link>, <link
1097 linkend="vidioc-qbuf">VIDIOC_QBUF</link> or <link
1098 linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called.</entry>
1099 </row>
1100 <row>
1101 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_INVALIDATE</constant></entry>
1102 <entry>0x0800</entry>
1103 <entry>Caches do not have to be invalidated for this buffer.
1104Typically applications shall use this flag if the data captured in the buffer
1105is not going to be touched by the CPU, instead the buffer will, probably, be
1106passed on to a DMA-capable hardware unit for further processing or output.
1107</entry>
1108 </row>
1109 <row>
1110 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_CLEAN</constant></entry>
1111 <entry>0x1000</entry>
1112 <entry>Caches do not have to be cleaned for this buffer.
1113Typically applications shall use this flag for output buffers if the data
1114in this buffer has not been created by the CPU but by some DMA-capable unit,
1115in which case caches have not been used.</entry>
929 </row> 1116 </row>
930 </tbody> 1117 </tbody>
931 </tgroup> 1118 </tgroup>
@@ -953,6 +1140,12 @@ pointer</link> I/O.</entry>
953 <entry>3</entry> 1140 <entry>3</entry>
954 <entry>[to do]</entry> 1141 <entry>[to do]</entry>
955 </row> 1142 </row>
1143 <row>
1144 <entry><constant>V4L2_MEMORY_DMABUF</constant></entry>
1145 <entry>4</entry>
1146 <entry>The buffer is used for <link linkend="dmabuf">DMA shared
1147buffer</link> I/O.</entry>
1148 </row>
956 </tbody> 1149 </tbody>
957 </tgroup> 1150 </tgroup>
958 </table> 1151 </table>
@@ -1255,11 +1448,3 @@ line, top field first. The bottom field is transmitted first.</entry>
1255 </mediaobject> 1448 </mediaobject>
1256 </figure> 1449 </figure>
1257 </section> 1450 </section>
1258
1259 <!--
1260Local Variables:
1261mode: sgml
1262sgml-parent-document: "v4l2.sgml"
1263indent-tabs-mode: nil
1264End:
1265 -->
diff --git a/Documentation/DocBook/v4l/keytable.c.xml b/Documentation/DocBook/media/v4l/keytable.c.xml
index d53254a3be1..d53254a3be1 100644
--- a/Documentation/DocBook/v4l/keytable.c.xml
+++ b/Documentation/DocBook/media/v4l/keytable.c.xml
diff --git a/Documentation/DocBook/v4l/libv4l.xml b/Documentation/DocBook/media/v4l/libv4l.xml
index 3cb10ec5192..d3b71e20003 100644
--- a/Documentation/DocBook/v4l/libv4l.xml
+++ b/Documentation/DocBook/media/v4l/libv4l.xml
@@ -158,10 +158,3 @@ still don't use libv4l.</para>
158 </section> 158 </section>
159 159
160</section> 160</section>
161<!--
162Local Variables:
163mode: sgml
164sgml-parent-document: "v4l2.sgml"
165indent-tabs-mode: nil
166End:
167-->
diff --git a/Documentation/DocBook/v4l/lirc_device_interface.xml b/Documentation/DocBook/media/v4l/lirc_device_interface.xml
index 0e0453f39e7..8d7eb6bf631 100644
--- a/Documentation/DocBook/v4l/lirc_device_interface.xml
+++ b/Documentation/DocBook/media/v4l/lirc_device_interface.xml
@@ -246,6 +246,8 @@ on working with the default settings initially.</para>
246 </listitem> 246 </listitem>
247 </varlistentry> 247 </varlistentry>
248</variablelist> 248</variablelist>
249 249<section id="lirc_dev_errors">
250 &return-value;
251</section>
250</section> 252</section>
251</section> 253</section>
diff --git a/Documentation/DocBook/v4l/media-controller.xml b/Documentation/DocBook/media/v4l/media-controller.xml
index 873ac3a621f..873ac3a621f 100644
--- a/Documentation/DocBook/v4l/media-controller.xml
+++ b/Documentation/DocBook/media/v4l/media-controller.xml
diff --git a/Documentation/DocBook/v4l/media-func-close.xml b/Documentation/DocBook/media/v4l/media-func-close.xml
index be149c802ae..be149c802ae 100644
--- a/Documentation/DocBook/v4l/media-func-close.xml
+++ b/Documentation/DocBook/media/v4l/media-func-close.xml
diff --git a/Documentation/DocBook/v4l/media-func-ioctl.xml b/Documentation/DocBook/media/v4l/media-func-ioctl.xml
index bda8604de15..39478d0fbca 100644
--- a/Documentation/DocBook/v4l/media-func-ioctl.xml
+++ b/Documentation/DocBook/media/v4l/media-func-ioctl.xml
@@ -63,54 +63,11 @@
63 </refsect1> 63 </refsect1>
64 64
65 <refsect1> 65 <refsect1>
66 <title>Return Value</title> 66 &return-value;
67 67
68 <para><function>ioctl()</function> returns <returnvalue>0</returnvalue> on 68 <para>Request-specific error codes are listed in the
69 success. On failure, <returnvalue>-1</returnvalue> is returned, and the
70 <varname>errno</varname> variable is set appropriately. Generic error codes
71 are listed below, and request-specific error codes are listed in the
72 individual requests descriptions.</para> 69 individual requests descriptions.</para>
73 <para>When an ioctl that takes an output or read/write parameter fails, 70 <para>When an ioctl that takes an output or read/write parameter fails,
74 the parameter remains unmodified.</para> 71 the parameter remains unmodified.</para>
75
76 <variablelist>
77 <varlistentry>
78 <term><errorcode>EBADF</errorcode></term>
79 <listitem>
80 <para><parameter>fd</parameter> is not a valid open file descriptor.
81 </para>
82 </listitem>
83 </varlistentry>
84 <varlistentry>
85 <term><errorcode>EFAULT</errorcode></term>
86 <listitem>
87 <para><parameter>argp</parameter> references an inaccessible memory
88 area.</para>
89 </listitem>
90 </varlistentry>
91 <varlistentry>
92 <term><errorcode>EINVAL</errorcode></term>
93 <listitem>
94 <para>The <parameter>request</parameter> or the data pointed to by
95 <parameter>argp</parameter> is not valid. This is a very common error
96 code, see the individual ioctl requests listed in
97 <xref linkend="media-user-func" /> for actual causes.</para>
98 </listitem>
99 </varlistentry>
100 <varlistentry>
101 <term><errorcode>ENOMEM</errorcode></term>
102 <listitem>
103 <para>Insufficient kernel memory was available to complete the
104 request.</para>
105 </listitem>
106 </varlistentry>
107 <varlistentry>
108 <term><errorcode>ENOTTY</errorcode></term>
109 <listitem>
110 <para><parameter>fd</parameter> is not associated with a character
111 special device.</para>
112 </listitem>
113 </varlistentry>
114 </variablelist>
115 </refsect1> 72 </refsect1>
116</refentry> 73</refentry>
diff --git a/Documentation/DocBook/v4l/media-func-open.xml b/Documentation/DocBook/media/v4l/media-func-open.xml
index f7df034dc9e..f7df034dc9e 100644
--- a/Documentation/DocBook/v4l/media-func-open.xml
+++ b/Documentation/DocBook/media/v4l/media-func-open.xml
diff --git a/Documentation/DocBook/v4l/media-ioc-device-info.xml b/Documentation/DocBook/media/v4l/media-ioc-device-info.xml
index 1f3237351bb..2ce521419e6 100644
--- a/Documentation/DocBook/v4l/media-ioc-device-info.xml
+++ b/Documentation/DocBook/media/v4l/media-ioc-device-info.xml
@@ -127,7 +127,6 @@
127 </refsect1> 127 </refsect1>
128 128
129 <refsect1> 129 <refsect1>
130 <title>Return value</title> 130 &return-value;
131 <para>This function doesn't return specific error codes.</para>
132 </refsect1> 131 </refsect1>
133</refentry> 132</refentry>
diff --git a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
index 576b68b33f2..576b68b33f2 100644
--- a/Documentation/DocBook/v4l/media-ioc-enum-entities.xml
+++ b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
diff --git a/Documentation/DocBook/v4l/media-ioc-enum-links.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml
index d2fc73ef8d5..355df43badc 100644
--- a/Documentation/DocBook/v4l/media-ioc-enum-links.xml
+++ b/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml
@@ -139,7 +139,7 @@
139 </table> 139 </table>
140 140
141 <table pgwide="1" frame="none" id="media-link-desc"> 141 <table pgwide="1" frame="none" id="media-link-desc">
142 <title>struct <structname>media_links_desc</structname></title> 142 <title>struct <structname>media_link_desc</structname></title>
143 <tgroup cols="3"> 143 <tgroup cols="3">
144 &cs-str; 144 &cs-str;
145 <tbody valign="top"> 145 <tbody valign="top">
diff --git a/Documentation/DocBook/v4l/media-ioc-setup-link.xml b/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml
index cec97af4dab..fc2e522ee65 100644
--- a/Documentation/DocBook/v4l/media-ioc-setup-link.xml
+++ b/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml
@@ -72,15 +72,6 @@
72 72
73 <variablelist> 73 <variablelist>
74 <varlistentry> 74 <varlistentry>
75 <term><errorcode>EBUSY</errorcode></term>
76 <listitem>
77 <para>The link properties can't be changed because the link is
78 currently busy. This can be caused, for instance, by an active media
79 stream (audio or video) on the link. The ioctl shouldn't be retried if
80 no other action is performed before to fix the problem.</para>
81 </listitem>
82 </varlistentry>
83 <varlistentry>
84 <term><errorcode>EINVAL</errorcode></term> 75 <term><errorcode>EINVAL</errorcode></term>
85 <listitem> 76 <listitem>
86 <para>The &media-link-desc; references a non-existing link, or the 77 <para>The &media-link-desc; references a non-existing link, or the
diff --git a/Documentation/DocBook/v4l/pipeline.pdf b/Documentation/DocBook/media/v4l/pipeline.pdf
index ee3e37f04b6..ee3e37f04b6 100644
--- a/Documentation/DocBook/v4l/pipeline.pdf
+++ b/Documentation/DocBook/media/v4l/pipeline.pdf
Binary files differ
diff --git a/Documentation/DocBook/v4l/pixfmt-grey.xml b/Documentation/DocBook/media/v4l/pixfmt-grey.xml
index 3b72bc6b2de..bee970d3f76 100644
--- a/Documentation/DocBook/v4l/pixfmt-grey.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-grey.xml
@@ -60,11 +60,3 @@ pixel image</title>
60 </example> 60 </example>
61 </refsect1> 61 </refsect1>
62 </refentry> 62 </refentry>
63
64 <!--
65Local Variables:
66mode: sgml
67sgml-parent-document: "pixfmt.sgml"
68indent-tabs-mode: nil
69End:
70 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-m420.xml b/Documentation/DocBook/media/v4l/pixfmt-m420.xml
index ce4bc019e5c..aadae92c5d0 100644
--- a/Documentation/DocBook/v4l/pixfmt-m420.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-m420.xml
@@ -137,11 +137,3 @@ pixel image</title>
137 </example> 137 </example>
138 </refsect1> 138 </refsect1>
139 </refentry> 139 </refentry>
140
141 <!--
142Local Variables:
143mode: sgml
144sgml-parent-document: "pixfmt.sgml"
145indent-tabs-mode: nil
146End:
147 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12.xml
index 873f6703518..84dd4fd7cb8 100644
--- a/Documentation/DocBook/v4l/pixfmt-nv12.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv12.xml
@@ -141,11 +141,3 @@ pixel image</title>
141 </example> 141 </example>
142 </refsect1> 142 </refsect1>
143 </refentry> 143 </refentry>
144
145 <!--
146Local Variables:
147mode: sgml
148sgml-parent-document: "pixfmt.sgml"
149indent-tabs-mode: nil
150End:
151 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml
index c9e166d9ded..a990b34d911 100644
--- a/Documentation/DocBook/v4l/pixfmt-nv12m.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml
@@ -1,11 +1,13 @@
1 <refentry id="V4L2-PIX-FMT-NV12M"> 1 <refentry>
2 <refmeta> 2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV12M ('NV12M')</refentrytitle> 3 <refentrytitle>V4L2_PIX_FMT_NV12M ('NM12'), V4L2_PIX_FMT_NV21M ('NM21'), V4L2_PIX_FMT_NV12MT_16X16</refentrytitle>
4 &manvol; 4 &manvol;
5 </refmeta> 5 </refmeta>
6 <refnamediv> 6 <refnamediv>
7 <refname> <constant>V4L2_PIX_FMT_NV12M</constant></refname> 7 <refname id="V4L2-PIX-FMT-NV12M"><constant>V4L2_PIX_FMT_NV12M</constant></refname>
8 <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV12</constant> with planes 8 <refname id="V4L2-PIX-FMT-NV21M"><constant>V4L2_PIX_FMT_NV21M</constant></refname>
9 <refname id="V4L2-PIX-FMT-NV12MT_16X16"><constant>V4L2_PIX_FMT_NV12MT_16X16</constant></refname>
10 <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV12</constant> and <constant>V4L2_PIX_FMT_NV21</constant> with planes
9 non contiguous in memory. </refpurpose> 11 non contiguous in memory. </refpurpose>
10 </refnamediv> 12 </refnamediv>
11 <refsect1> 13 <refsect1>
@@ -22,7 +24,12 @@ The CbCr plane is the same width, in bytes, as the Y plane (and of the image),
22but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example, 24but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example,
23Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to 25Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
24Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, 26Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
25Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. </para> 27Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.
28<constant>V4L2_PIX_FMT_NV12MT_16X16</constant> is the tiled version of
29<constant>V4L2_PIX_FMT_NV12M</constant> with 16x16 macroblock tiles. Here pixels
30are arranged in 16x16 2D tiles and tiles are arranged in linear order in memory.
31<constant>V4L2_PIX_FMT_NV21M</constant> is the same as <constant>V4L2_PIX_FMT_NV12M</constant>
32except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para>
26 33
27 <para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be 34 <para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be
28used only in drivers and applications that support the multi-planar API, 35used only in drivers and applications that support the multi-planar API,
@@ -144,11 +151,3 @@ CbCr plane has as many pad bytes after its rows.</para>
144 </example> 151 </example>
145 </refsect1> 152 </refsect1>
146 </refentry> 153 </refentry>
147
148 <!--
149Local Variables:
150mode: sgml
151sgml-parent-document: "pixfmt.sgml"
152indent-tabs-mode: nil
153End:
154 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml
index 7a2855a526c..2f82b1da8df 100644
--- a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml
@@ -64,11 +64,3 @@ layout of macroblocks</title>
64 </example> 64 </example>
65 </refsect1> 65 </refsect1>
66 </refentry> 66 </refentry>
67
68 <!--
69Local Variables:
70mode: sgml
71sgml-parent-document: "pixfmt.sgml"
72indent-tabs-mode: nil
73End:
74 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-nv16.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16.xml
index 26094035fc0..8ae1f8a810d 100644
--- a/Documentation/DocBook/v4l/pixfmt-nv16.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv16.xml
@@ -164,11 +164,3 @@ pixel image</title>
164 </example> 164 </example>
165 </refsect1> 165 </refsect1>
166 </refentry> 166 </refentry>
167
168 <!--
169Local Variables:
170mode: sgml
171sgml-parent-document: "pixfmt.sgml"
172indent-tabs-mode: nil
173End:
174 -->
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv24.xml b/Documentation/DocBook/media/v4l/pixfmt-nv24.xml
new file mode 100644
index 00000000000..fb255f2ca9d
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-nv24.xml
@@ -0,0 +1,121 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV24 ('NV24'), V4L2_PIX_FMT_NV42 ('NV42')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV24"><constant>V4L2_PIX_FMT_NV24</constant></refname>
8 <refname id="V4L2-PIX-FMT-NV42"><constant>V4L2_PIX_FMT_NV42</constant></refname>
9 <refpurpose>Formats with full horizontal and vertical
10chroma resolutions, also known as YUV 4:4:4. One luminance and one
11chrominance plane with alternating chroma samples as opposed to
12<constant>V4L2_PIX_FMT_YVU420</constant></refpurpose>
13 </refnamediv>
14 <refsect1>
15 <title>Description</title>
16
17 <para>These are two-plane versions of the YUV 4:4:4 format. The three
18 components are separated into two sub-images or planes. The Y plane is
19 first, with each Y sample stored in one byte per pixel. For
20 <constant>V4L2_PIX_FMT_NV24</constant>, a combined CbCr plane
21 immediately follows the Y plane in memory. The CbCr plane has the same
22 width and height, in pixels, as the Y plane (and the image). Each line
23 contains one CbCr pair per pixel, with each Cb and Cr sample stored in
24 one byte. <constant>V4L2_PIX_FMT_NV42</constant> is the same except that
25 the Cb and Cr samples are swapped, the CrCb plane starts with a Cr
26 sample.</para>
27
28 <para>If the Y plane has pad bytes after each row, then the CbCr plane
29 has twice as many pad bytes after its rows.</para>
30
31 <example>
32 <title><constant>V4L2_PIX_FMT_NV24</constant> 4 &times; 4
33pixel image</title>
34
35 <formalpara>
36 <title>Byte Order.</title>
37 <para>Each cell is one byte.
38 <informaltable frame="none">
39 <tgroup cols="9" align="center">
40 <colspec align="left" colwidth="2*" />
41 <tbody valign="top">
42 <row>
43 <entry>start&nbsp;+&nbsp;0:</entry>
44 <entry>Y'<subscript>00</subscript></entry>
45 <entry>Y'<subscript>01</subscript></entry>
46 <entry>Y'<subscript>02</subscript></entry>
47 <entry>Y'<subscript>03</subscript></entry>
48 </row>
49 <row>
50 <entry>start&nbsp;+&nbsp;4:</entry>
51 <entry>Y'<subscript>10</subscript></entry>
52 <entry>Y'<subscript>11</subscript></entry>
53 <entry>Y'<subscript>12</subscript></entry>
54 <entry>Y'<subscript>13</subscript></entry>
55 </row>
56 <row>
57 <entry>start&nbsp;+&nbsp;8:</entry>
58 <entry>Y'<subscript>20</subscript></entry>
59 <entry>Y'<subscript>21</subscript></entry>
60 <entry>Y'<subscript>22</subscript></entry>
61 <entry>Y'<subscript>23</subscript></entry>
62 </row>
63 <row>
64 <entry>start&nbsp;+&nbsp;12:</entry>
65 <entry>Y'<subscript>30</subscript></entry>
66 <entry>Y'<subscript>31</subscript></entry>
67 <entry>Y'<subscript>32</subscript></entry>
68 <entry>Y'<subscript>33</subscript></entry>
69 </row>
70 <row>
71 <entry>start&nbsp;+&nbsp;16:</entry>
72 <entry>Cb<subscript>00</subscript></entry>
73 <entry>Cr<subscript>00</subscript></entry>
74 <entry>Cb<subscript>01</subscript></entry>
75 <entry>Cr<subscript>01</subscript></entry>
76 <entry>Cb<subscript>02</subscript></entry>
77 <entry>Cr<subscript>02</subscript></entry>
78 <entry>Cb<subscript>03</subscript></entry>
79 <entry>Cr<subscript>03</subscript></entry>
80 </row>
81 <row>
82 <entry>start&nbsp;+&nbsp;24:</entry>
83 <entry>Cb<subscript>10</subscript></entry>
84 <entry>Cr<subscript>10</subscript></entry>
85 <entry>Cb<subscript>11</subscript></entry>
86 <entry>Cr<subscript>11</subscript></entry>
87 <entry>Cb<subscript>12</subscript></entry>
88 <entry>Cr<subscript>12</subscript></entry>
89 <entry>Cb<subscript>13</subscript></entry>
90 <entry>Cr<subscript>13</subscript></entry>
91 </row>
92 <row>
93 <entry>start&nbsp;+&nbsp;32:</entry>
94 <entry>Cb<subscript>20</subscript></entry>
95 <entry>Cr<subscript>20</subscript></entry>
96 <entry>Cb<subscript>21</subscript></entry>
97 <entry>Cr<subscript>21</subscript></entry>
98 <entry>Cb<subscript>22</subscript></entry>
99 <entry>Cr<subscript>22</subscript></entry>
100 <entry>Cb<subscript>23</subscript></entry>
101 <entry>Cr<subscript>23</subscript></entry>
102 </row>
103 <row>
104 <entry>start&nbsp;+&nbsp;40:</entry>
105 <entry>Cb<subscript>30</subscript></entry>
106 <entry>Cr<subscript>30</subscript></entry>
107 <entry>Cb<subscript>31</subscript></entry>
108 <entry>Cr<subscript>31</subscript></entry>
109 <entry>Cb<subscript>32</subscript></entry>
110 <entry>Cr<subscript>32</subscript></entry>
111 <entry>Cb<subscript>33</subscript></entry>
112 <entry>Cr<subscript>33</subscript></entry>
113 </row>
114 </tbody>
115 </tgroup>
116 </informaltable>
117 </para>
118 </formalpara>
119 </example>
120 </refsect1>
121 </refentry>
diff --git a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
index 4db272b8a0d..166c8d65e4f 100644
--- a/Documentation/DocBook/v4l/pixfmt-packed-rgb.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
@@ -428,8 +428,11 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
428 <para>Bit 7 is the most significant bit. The value of a = alpha 428 <para>Bit 7 is the most significant bit. The value of a = alpha
429bits is undefined when reading from the driver, ignored when writing 429bits is undefined when reading from the driver, ignored when writing
430to the driver, except when alpha blending has been negotiated for a 430to the driver, except when alpha blending has been negotiated for a
431<link linkend="overlay">Video Overlay</link> or <link 431<link linkend="overlay">Video Overlay</link> or <link linkend="osd">
432linkend="osd">Video Output Overlay</link>.</para> 432Video Output Overlay</link> or when alpha component has been configured
433for a <link linkend="capture">Video Capture</link> by means of <link
434linkend="v4l2-alpha-component"> <constant>V4L2_CID_ALPHA_COMPONENT
435</constant> </link> control.</para>
433 436
434 <example> 437 <example>
435 <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 &times; 4 pixel 438 <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 &times; 4 pixel
@@ -930,11 +933,3 @@ See &v4l-dvb; for access instructions.</para>
930 933
931 </refsect1> 934 </refsect1>
932 </refentry> 935 </refentry>
933
934 <!--
935Local Variables:
936mode: sgml
937sgml-parent-document: "pixfmt.sgml"
938indent-tabs-mode: nil
939End:
940 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml
index 3cab5d0ca75..33fa5a47a86 100644
--- a/Documentation/DocBook/v4l/pixfmt-packed-yuv.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml
@@ -234,11 +234,3 @@ linkend="osd">Video Output Overlay</link>.</para>
234 234
235 </refsect1> 235 </refsect1>
236 </refentry> 236 </refentry>
237
238 <!--
239Local Variables:
240mode: sgml
241sgml-parent-document: "pixfmt.sgml"
242indent-tabs-mode: nil
243End:
244 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-sbggr16.xml b/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml
index 519a9efbac1..6494b05d84a 100644
--- a/Documentation/DocBook/v4l/pixfmt-sbggr16.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml
@@ -81,11 +81,3 @@ pixel image</title>
81 </example> 81 </example>
82 </refsect1> 82 </refsect1>
83</refentry> 83</refentry>
84
85 <!--
86Local Variables:
87mode: sgml
88sgml-parent-document: "pixfmt.sgml"
89indent-tabs-mode: nil
90End:
91 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-sbggr8.xml b/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml
index 5fe84ecc2eb..5eaf2b42d3f 100644
--- a/Documentation/DocBook/v4l/pixfmt-sbggr8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml
@@ -65,11 +65,3 @@ pixel image</title>
65 </example> 65 </example>
66 </refsect1> 66 </refsect1>
67 </refentry> 67 </refentry>
68
69 <!--
70Local Variables:
71mode: sgml
72sgml-parent-document: "pixfmt.sgml"
73indent-tabs-mode: nil
74End:
75 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml
index d67a472b088..fee65dca79c 100644
--- a/Documentation/DocBook/v4l/pixfmt-sgbrg8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml
@@ -65,11 +65,3 @@ pixel image</title>
65 </example> 65 </example>
66 </refsect1> 66 </refsect1>
67 </refentry> 67 </refentry>
68
69 <!--
70Local Variables:
71mode: sgml
72sgml-parent-document: "pixfmt.sgml"
73indent-tabs-mode: nil
74End:
75 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
index 0cdf13b8ac1..19727ab4c75 100644
--- a/Documentation/DocBook/v4l/pixfmt-sgrbg8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
@@ -65,11 +65,3 @@ columns and rows.</para>
65 </example> 65 </example>
66 </refsect1> 66 </refsect1>
67 </refentry> 67 </refentry>
68
69 <!--
70Local Variables:
71mode: sgml
72sgml-parent-document: "pixfmt.sgml"
73indent-tabs-mode: nil
74End:
75 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
index 7b274092e60..c1c62a9acc2 100644
--- a/Documentation/DocBook/v4l/pixfmt-srggb10.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
@@ -1,4 +1,4 @@
1 <refentry> 1 <refentry id="pixfmt-srggb10">
2 <refmeta> 2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), 3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'),
4 V4L2_PIX_FMT_SGRBG10 ('BA10'), 4 V4L2_PIX_FMT_SGRBG10 ('BA10'),
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
new file mode 100644
index 00000000000..2d3f0b1aefe
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
@@ -0,0 +1,28 @@
1 <refentry id="pixfmt-srggb10dpcm8">
2 <refmeta>
3 <refentrytitle>
4 V4L2_PIX_FMT_SBGGR10DPCM8 ('bBA8'),
5 V4L2_PIX_FMT_SGBRG10DPCM8 ('bGA8'),
6 V4L2_PIX_FMT_SGRBG10DPCM8 ('BD10'),
7 V4L2_PIX_FMT_SRGGB10DPCM8 ('bRA8'),
8 </refentrytitle>
9 &manvol;
10 </refmeta>
11 <refnamediv>
12 <refname id="V4L2-PIX-FMT-SBGGR10DPCM8"><constant>V4L2_PIX_FMT_SBGGR10DPCM8</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG10DPCM8"><constant>V4L2_PIX_FMT_SGBRG10DPCM8</constant></refname>
14 <refname id="V4L2-PIX-FMT-SGRBG10DPCM8"><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></refname>
15 <refname id="V4L2-PIX-FMT-SRGGB10DPCM8"><constant>V4L2_PIX_FMT_SRGGB10DPCM8</constant></refname>
16 <refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose>
17 </refnamediv>
18 <refsect1>
19 <title>Description</title>
20
21 <para>The following four pixel formats are raw sRGB / Bayer formats
22 with 10 bits per colour compressed to 8 bits each, using DPCM
23 compression. DPCM, differential pulse-code modulation, is lossy.
24 Each colour component consumes 8 bits of memory. In other respects
25 this format is similar to <xref linkend="pixfmt-srggb10" />.</para>
26
27 </refsect1>
28 </refentry>
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
index 9ba4fb690bc..9ba4fb690bc 100644
--- a/Documentation/DocBook/v4l/pixfmt-srggb12.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
diff --git a/Documentation/DocBook/v4l/pixfmt-srggb8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml
index 2570e3be3cf..2570e3be3cf 100644
--- a/Documentation/DocBook/v4l/pixfmt-srggb8.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml
diff --git a/Documentation/DocBook/v4l/pixfmt-uyvy.xml b/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml
index 816c8d467c1..b1f6801a17f 100644
--- a/Documentation/DocBook/v4l/pixfmt-uyvy.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml
@@ -118,11 +118,3 @@ pixel image</title>
118 </example> 118 </example>
119 </refsect1> 119 </refsect1>
120 </refentry> 120 </refentry>
121
122 <!--
123Local Variables:
124mode: sgml
125sgml-parent-document: "pixfmt.sgml"
126indent-tabs-mode: nil
127End:
128 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-vyuy.xml b/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml
index 61f12a5e68d..82803408b38 100644
--- a/Documentation/DocBook/v4l/pixfmt-vyuy.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml
@@ -118,11 +118,3 @@ pixel image</title>
118 </example> 118 </example>
119 </refsect1> 119 </refsect1>
120 </refentry> 120 </refentry>
121
122 <!--
123Local Variables:
124mode: sgml
125sgml-parent-document: "pixfmt.sgml"
126indent-tabs-mode: nil
127End:
128 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-y10.xml b/Documentation/DocBook/media/v4l/pixfmt-y10.xml
index d065043db8d..d065043db8d 100644
--- a/Documentation/DocBook/v4l/pixfmt-y10.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-y10.xml
diff --git a/Documentation/DocBook/v4l/pixfmt-y10b.xml b/Documentation/DocBook/media/v4l/pixfmt-y10b.xml
index adb0ad808c9..adb0ad808c9 100644
--- a/Documentation/DocBook/v4l/pixfmt-y10b.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-y10b.xml
diff --git a/Documentation/DocBook/v4l/pixfmt-y12.xml b/Documentation/DocBook/media/v4l/pixfmt-y12.xml
index ff417b858cc..ff417b858cc 100644
--- a/Documentation/DocBook/v4l/pixfmt-y12.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-y12.xml
diff --git a/Documentation/DocBook/v4l/pixfmt-y16.xml b/Documentation/DocBook/media/v4l/pixfmt-y16.xml
index d5840401507..ff4f727d562 100644
--- a/Documentation/DocBook/v4l/pixfmt-y16.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-y16.xml
@@ -79,11 +79,3 @@ pixel image</title>
79 </example> 79 </example>
80 </refsect1> 80 </refsect1>
81</refentry> 81</refentry>
82
83 <!--
84Local Variables:
85mode: sgml
86sgml-parent-document: "pixfmt.sgml"
87indent-tabs-mode: nil
88End:
89 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-y41p.xml b/Documentation/DocBook/media/v4l/pixfmt-y41p.xml
index 73c8536efb0..98dcb91d291 100644
--- a/Documentation/DocBook/v4l/pixfmt-y41p.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-y41p.xml
@@ -147,11 +147,3 @@ pixel image</title>
147 </example> 147 </example>
148 </refsect1> 148 </refsect1>
149 </refentry> 149 </refentry>
150
151 <!--
152Local Variables:
153mode: sgml
154sgml-parent-document: "pixfmt.sgml"
155indent-tabs-mode: nil
156End:
157 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv410.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml
index 8eb4a193d77..0869dce5f92 100644
--- a/Documentation/DocBook/v4l/pixfmt-yuv410.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml
@@ -131,11 +131,3 @@ pixel image</title>
131 </example> 131 </example>
132 </refsect1> 132 </refsect1>
133 </refentry> 133 </refentry>
134
135 <!--
136Local Variables:
137mode: sgml
138sgml-parent-document: "pixfmt.sgml"
139indent-tabs-mode: nil
140End:
141 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv411p.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml
index 00e0960a986..086dc731bf0 100644
--- a/Documentation/DocBook/v4l/pixfmt-yuv411p.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml
@@ -145,11 +145,3 @@ pixel image</title>
145 </example> 145 </example>
146 </refsect1> 146 </refsect1>
147 </refentry> 147 </refentry>
148
149 <!--
150Local Variables:
151mode: sgml
152sgml-parent-document: "v4l2.sgml"
153indent-tabs-mode: nil
154End:
155 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv420.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml
index 42d7de5e456..48649fac159 100644
--- a/Documentation/DocBook/v4l/pixfmt-yuv420.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml
@@ -147,11 +147,3 @@ pixel image</title>
147 </example> 147 </example>
148 </refsect1> 148 </refsect1>
149 </refentry> 149 </refentry>
150
151 <!--
152Local Variables:
153mode: sgml
154sgml-parent-document: "pixfmt.sgml"
155indent-tabs-mode: nil
156End:
157 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
index f5d8f57495c..60308f1eefd 100644
--- a/Documentation/DocBook/v4l/pixfmt-yuv420m.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
@@ -1,6 +1,6 @@
1 <refentry id="V4L2-PIX-FMT-YUV420M"> 1 <refentry id="V4L2-PIX-FMT-YUV420M">
2 <refmeta> 2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUV420M ('YU12M')</refentrytitle> 3 <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12')</refentrytitle>
4 &manvol; 4 &manvol;
5 </refmeta> 5 </refmeta>
6 <refnamediv> 6 <refnamediv>
@@ -152,11 +152,3 @@ pixel image</title>
152 </example> 152 </example>
153 </refsect1> 153 </refsect1>
154 </refentry> 154 </refentry>
155
156 <!--
157Local Variables:
158mode: sgml
159sgml-parent-document: "pixfmt.sgml"
160indent-tabs-mode: nil
161End:
162 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-yuv422p.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml
index 4348bd9f0d0..4ce6463fe0a 100644
--- a/Documentation/DocBook/v4l/pixfmt-yuv422p.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml
@@ -151,11 +151,3 @@ pixel image</title>
151 </example> 151 </example>
152 </refsect1> 152 </refsect1>
153 </refentry> 153 </refentry>
154
155 <!--
156Local Variables:
157mode: sgml
158sgml-parent-document: "pixfmt.sgml"
159indent-tabs-mode: nil
160End:
161 -->
diff --git a/Documentation/DocBook/v4l/pixfmt-yuyv.xml b/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml
index bdb2ffacbbc..58384092251 100644
--- a/Documentation/DocBook/v4l/pixfmt-yuyv.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml
@@ -118,11 +118,3 @@ pixel image</title>
118 </example> 118 </example>
119 </refsect1> 119 </refsect1>
120 </refentry> 120 </refentry>
121
122 <!--
123Local Variables:
124mode: sgml
125sgml-parent-document: "pixfmt.sgml"
126indent-tabs-mode: nil
127End:
128 -->
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
new file mode 100644
index 00000000000..2330667907c
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
@@ -0,0 +1,154 @@
1 <refentry id="V4L2-PIX-FMT-YVU420M">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YVU420M ('YM21')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname> <constant>V4L2_PIX_FMT_YVU420M</constant></refname>
8 <refpurpose>Variation of <constant>V4L2_PIX_FMT_YVU420</constant>
9 with planes non contiguous in memory. </refpurpose>
10 </refnamediv>
11
12 <refsect1>
13 <title>Description</title>
14
15 <para>This is a multi-planar format, as opposed to a packed format.
16The three components are separated into three sub-images or planes.
17
18The Y plane is first. The Y plane has one byte per pixel. The Cr data
19constitutes the second plane which is half the width and half
20the height of the Y plane (and of the image). Each Cr belongs to four
21pixels, a two-by-two square of the image. For example,
22Cr<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
23Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and
24Y'<subscript>11</subscript>. The Cb data, just like the Cr plane, constitutes
25the third plane. </para>
26
27 <para>If the Y plane has pad bytes after each row, then the Cr
28and Cb planes have half as many pad bytes after their rows. In other
29words, two Cx rows (including padding) is exactly as long as one Y row
30(including padding).</para>
31
32 <para><constant>V4L2_PIX_FMT_YVU420M</constant> is intended to be
33used only in drivers and applications that support the multi-planar API,
34described in <xref linkend="planar-apis"/>. </para>
35
36 <example>
37 <title><constant>V4L2_PIX_FMT_YVU420M</constant> 4 &times; 4
38pixel image</title>
39
40 <formalpara>
41 <title>Byte Order.</title>
42 <para>Each cell is one byte.
43 <informaltable frame="none">
44 <tgroup cols="5" align="center">
45 <colspec align="left" colwidth="2*" />
46 <tbody valign="top">
47 <row>
48 <entry>start0&nbsp;+&nbsp;0:</entry>
49 <entry>Y'<subscript>00</subscript></entry>
50 <entry>Y'<subscript>01</subscript></entry>
51 <entry>Y'<subscript>02</subscript></entry>
52 <entry>Y'<subscript>03</subscript></entry>
53 </row>
54 <row>
55 <entry>start0&nbsp;+&nbsp;4:</entry>
56 <entry>Y'<subscript>10</subscript></entry>
57 <entry>Y'<subscript>11</subscript></entry>
58 <entry>Y'<subscript>12</subscript></entry>
59 <entry>Y'<subscript>13</subscript></entry>
60 </row>
61 <row>
62 <entry>start0&nbsp;+&nbsp;8:</entry>
63 <entry>Y'<subscript>20</subscript></entry>
64 <entry>Y'<subscript>21</subscript></entry>
65 <entry>Y'<subscript>22</subscript></entry>
66 <entry>Y'<subscript>23</subscript></entry>
67 </row>
68 <row>
69 <entry>start0&nbsp;+&nbsp;12:</entry>
70 <entry>Y'<subscript>30</subscript></entry>
71 <entry>Y'<subscript>31</subscript></entry>
72 <entry>Y'<subscript>32</subscript></entry>
73 <entry>Y'<subscript>33</subscript></entry>
74 </row>
75 <row><entry></entry></row>
76 <row>
77 <entry>start1&nbsp;+&nbsp;0:</entry>
78 <entry>Cr<subscript>00</subscript></entry>
79 <entry>Cr<subscript>01</subscript></entry>
80 </row>
81 <row>
82 <entry>start1&nbsp;+&nbsp;2:</entry>
83 <entry>Cr<subscript>10</subscript></entry>
84 <entry>Cr<subscript>11</subscript></entry>
85 </row>
86 <row><entry></entry></row>
87 <row>
88 <entry>start2&nbsp;+&nbsp;0:</entry>
89 <entry>Cb<subscript>00</subscript></entry>
90 <entry>Cb<subscript>01</subscript></entry>
91 </row>
92 <row>
93 <entry>start2&nbsp;+&nbsp;2:</entry>
94 <entry>Cb<subscript>10</subscript></entry>
95 <entry>Cb<subscript>11</subscript></entry>
96 </row>
97 </tbody>
98 </tgroup>
99 </informaltable>
100 </para>
101 </formalpara>
102
103 <formalpara>
104 <title>Color Sample Location.</title>
105 <para>
106 <informaltable frame="none">
107 <tgroup cols="7" align="center">
108 <tbody valign="top">
109 <row>
110 <entry></entry>
111 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
112 <entry>2</entry><entry></entry><entry>3</entry>
113 </row>
114 <row>
115 <entry>0</entry>
116 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
117 <entry>Y</entry><entry></entry><entry>Y</entry>
118 </row>
119 <row>
120 <entry></entry>
121 <entry></entry><entry>C</entry><entry></entry><entry></entry>
122 <entry></entry><entry>C</entry><entry></entry>
123 </row>
124 <row>
125 <entry>1</entry>
126 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
127 <entry>Y</entry><entry></entry><entry>Y</entry>
128 </row>
129 <row>
130 <entry></entry>
131 </row>
132 <row>
133 <entry>2</entry>
134 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
135 <entry>Y</entry><entry></entry><entry>Y</entry>
136 </row>
137 <row>
138 <entry></entry>
139 <entry></entry><entry>C</entry><entry></entry><entry></entry>
140 <entry></entry><entry>C</entry><entry></entry>
141 </row>
142 <row>
143 <entry>3</entry>
144 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
145 <entry>Y</entry><entry></entry><entry>Y</entry>
146 </row>
147 </tbody>
148 </tgroup>
149 </informaltable>
150 </para>
151 </formalpara>
152 </example>
153 </refsect1>
154 </refentry>
diff --git a/Documentation/DocBook/v4l/pixfmt-yvyu.xml b/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml
index 40d17ae39dd..bfffdc76d3d 100644
--- a/Documentation/DocBook/v4l/pixfmt-yvyu.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml
@@ -118,11 +118,3 @@ pixel image</title>
118 </example> 118 </example>
119 </refsect1> 119 </refsect1>
120 </refentry> 120 </refentry>
121
122 <!--
123Local Variables:
124mode: sgml
125sgml-parent-document: "pixfmt.sgml"
126indent-tabs-mode: nil
127End:
128 -->
diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index deb660207f9..bf94f417592 100644
--- a/Documentation/DocBook/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -121,7 +121,7 @@ set this field to zero.</entry>
121 an array of <structname>v4l2_plane_pix_format</structname> structures, 121 an array of <structname>v4l2_plane_pix_format</structname> structures,
122 describing all planes of that format.</para> 122 describing all planes of that format.</para>
123 <table pgwide="1" frame="none" id="v4l2-plane-pix-format"> 123 <table pgwide="1" frame="none" id="v4l2-plane-pix-format">
124 <title>struct <structname>vl42_plane_pix_format</structname></title> 124 <title>struct <structname>v4l2_plane_pix_format</structname></title>
125 <tgroup cols="3"> 125 <tgroup cols="3">
126 &cs-str; 126 &cs-str;
127 <tbody valign="top"> 127 <tbody valign="top">
@@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
673 &sub-srggb8; 673 &sub-srggb8;
674 &sub-sbggr16; 674 &sub-sbggr16;
675 &sub-srggb10; 675 &sub-srggb10;
676 &sub-srggb10dpcm8;
676 &sub-srggb12; 677 &sub-srggb12;
677 </section> 678 </section>
678 679
@@ -707,6 +708,7 @@ information.</para>
707 &sub-y41p; 708 &sub-y41p;
708 &sub-yuv420; 709 &sub-yuv420;
709 &sub-yuv420m; 710 &sub-yuv420m;
711 &sub-yvu420m;
710 &sub-yuv410; 712 &sub-yuv410;
711 &sub-yuv422p; 713 &sub-yuv422p;
712 &sub-yuv411p; 714 &sub-yuv411p;
@@ -714,6 +716,7 @@ information.</para>
714 &sub-nv12m; 716 &sub-nv12m;
715 &sub-nv12mt; 717 &sub-nv12mt;
716 &sub-nv16; 718 &sub-nv16;
719 &sub-nv24;
717 &sub-m420; 720 &sub-m420;
718 </section> 721 </section>
719 722
@@ -741,10 +744,65 @@ information.</para>
741 <row id="V4L2-PIX-FMT-MPEG"> 744 <row id="V4L2-PIX-FMT-MPEG">
742 <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry> 745 <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry>
743 <entry>'MPEG'</entry> 746 <entry>'MPEG'</entry>
744 <entry>MPEG stream. The actual format is determined by 747 <entry>MPEG multiplexed stream. The actual format is determined by
745extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see 748extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see
746<xref linkend="mpeg-control-id" />.</entry> 749<xref linkend="mpeg-control-id" />.</entry>
747 </row> 750 </row>
751 <row id="V4L2-PIX-FMT-H264">
752 <entry><constant>V4L2_PIX_FMT_H264</constant></entry>
753 <entry>'H264'</entry>
754 <entry>H264 video elementary stream with start codes.</entry>
755 </row>
756 <row id="V4L2-PIX-FMT-H264-NO-SC">
757 <entry><constant>V4L2_PIX_FMT_H264_NO_SC</constant></entry>
758 <entry>'AVC1'</entry>
759 <entry>H264 video elementary stream without start codes.</entry>
760 </row>
761 <row id="V4L2-PIX-FMT-H264-MVC">
762 <entry><constant>V4L2_PIX_FMT_H264_MVC</constant></entry>
763 <entry>'MVC'</entry>
764 <entry>H264 MVC video elementary stream.</entry>
765 </row>
766 <row id="V4L2-PIX-FMT-H263">
767 <entry><constant>V4L2_PIX_FMT_H263</constant></entry>
768 <entry>'H263'</entry>
769 <entry>H263 video elementary stream.</entry>
770 </row>
771 <row id="V4L2-PIX-FMT-MPEG1">
772 <entry><constant>V4L2_PIX_FMT_MPEG1</constant></entry>
773 <entry>'MPG1'</entry>
774 <entry>MPEG1 video elementary stream.</entry>
775 </row>
776 <row id="V4L2-PIX-FMT-MPEG2">
777 <entry><constant>V4L2_PIX_FMT_MPEG2</constant></entry>
778 <entry>'MPG2'</entry>
779 <entry>MPEG2 video elementary stream.</entry>
780 </row>
781 <row id="V4L2-PIX-FMT-MPEG4">
782 <entry><constant>V4L2_PIX_FMT_MPEG4</constant></entry>
783 <entry>'MPG4'</entry>
784 <entry>MPEG4 video elementary stream.</entry>
785 </row>
786 <row id="V4L2-PIX-FMT-XVID">
787 <entry><constant>V4L2_PIX_FMT_XVID</constant></entry>
788 <entry>'XVID'</entry>
789 <entry>Xvid video elementary stream.</entry>
790 </row>
791 <row id="V4L2-PIX-FMT-VC1-ANNEX-G">
792 <entry><constant>V4L2_PIX_FMT_VC1_ANNEX_G</constant></entry>
793 <entry>'VC1G'</entry>
794 <entry>VC1, SMPTE 421M Annex G compliant stream.</entry>
795 </row>
796 <row id="V4L2-PIX-FMT-VC1-ANNEX-L">
797 <entry><constant>V4L2_PIX_FMT_VC1_ANNEX_L</constant></entry>
798 <entry>'VC1L'</entry>
799 <entry>VC1, SMPTE 421M Annex L compliant stream.</entry>
800 </row>
801 <row id="V4L2-PIX-FMT-VP8">
802 <entry><constant>V4L2_PIX_FMT_VP8</constant></entry>
803 <entry>'VP8'</entry>
804 <entry>VP8 video elementary stream.</entry>
805 </row>
748 </tbody> 806 </tbody>
749 </tgroup> 807 </tgroup>
750 </table> 808 </table>
@@ -804,6 +862,12 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
804 <entry>'CPIA'</entry> 862 <entry>'CPIA'</entry>
805 <entry>YUV format used by the gspca cpia1 driver.</entry> 863 <entry>YUV format used by the gspca cpia1 driver.</entry>
806 </row> 864 </row>
865 <row id="V4L2-PIX-FMT-JPGL">
866 <entry><constant>V4L2_PIX_FMT_JPGL</constant></entry>
867 <entry>'JPGL'</entry>
868 <entry>JPEG-Light format (Pegasus Lossless JPEG)
869 used in Divio webcams NW 80x.</entry>
870 </row>
807 <row id="V4L2-PIX-FMT-SPCA501"> 871 <row id="V4L2-PIX-FMT-SPCA501">
808 <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry> 872 <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry>
809 <entry>'S501'</entry> 873 <entry>'S501'</entry>
@@ -824,11 +888,6 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
824 <entry>'S561'</entry> 888 <entry>'S561'</entry>
825 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> 889 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry>
826 </row> 890 </row>
827 <row id="V4L2-PIX-FMT-SGRBG10DPCM8">
828 <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry>
829 <entry>'DB10'</entry>
830 <entry>10 bit raw Bayer DPCM compressed to 8 bits.</entry>
831 </row>
832 <row id="V4L2-PIX-FMT-PAC207"> 891 <row id="V4L2-PIX-FMT-PAC207">
833 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry> 892 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry>
834 <entry>'P207'</entry> 893 <entry>'P207'</entry>
@@ -839,6 +898,11 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
839 <entry>'M310'</entry> 898 <entry>'M310'</entry>
840 <entry>Compressed BGGR Bayer format used by the gspca driver.</entry> 899 <entry>Compressed BGGR Bayer format used by the gspca driver.</entry>
841 </row> 900 </row>
901 <row id="V4L2-PIX-FMT-JL2005BCD">
902 <entry><constant>V4L2_PIX_FMT_JL2005BCD</constant></entry>
903 <entry>'JL20'</entry>
904 <entry>JPEG compressed RGGB Bayer format used by the gspca driver.</entry>
905 </row>
842 <row id="V4L2-PIX-FMT-OV511"> 906 <row id="V4L2-PIX-FMT-OV511">
843 <entry><constant>V4L2_PIX_FMT_OV511</constant></entry> 907 <entry><constant>V4L2_PIX_FMT_OV511</constant></entry>
844 <entry>'O511'</entry> 908 <entry>'O511'</entry>
@@ -854,6 +918,11 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
854 <entry>'PJPG'</entry> 918 <entry>'PJPG'</entry>
855 <entry>Pixart 73xx JPEG format used by the gspca driver.</entry> 919 <entry>Pixart 73xx JPEG format used by the gspca driver.</entry>
856 </row> 920 </row>
921 <row id="V4L2-PIX-FMT-SE401">
922 <entry><constant>V4L2_PIX_FMT_SE401</constant></entry>
923 <entry>'S401'</entry>
924 <entry>Compressed RGB format used by the gspca se401 driver</entry>
925 </row>
857 <row id="V4L2-PIX-FMT-SQ905C"> 926 <row id="V4L2-PIX-FMT-SQ905C">
858 <entry><constant>V4L2_PIX_FMT_SQ905C</constant></entry> 927 <entry><constant>V4L2_PIX_FMT_SQ905C</constant></entry>
859 <entry>'905C'</entry> 928 <entry>'905C'</entry>
@@ -928,24 +997,44 @@ http://www.thedirks.org/winnov/</ulink></para></entry>
928 <row id="V4L2-PIX-FMT-Y4"> 997 <row id="V4L2-PIX-FMT-Y4">
929 <entry><constant>V4L2_PIX_FMT_Y4</constant></entry> 998 <entry><constant>V4L2_PIX_FMT_Y4</constant></entry>
930 <entry>'Y04 '</entry> 999 <entry>'Y04 '</entry>
931 <entry>Old 4-bit greyscale format. Only the least significant 4 bits of each byte are used, 1000 <entry>Old 4-bit greyscale format. Only the most significant 4 bits of each byte are used,
932the other bits are set to 0.</entry> 1001the other bits are set to 0.</entry>
933 </row> 1002 </row>
934 <row id="V4L2-PIX-FMT-Y6"> 1003 <row id="V4L2-PIX-FMT-Y6">
935 <entry><constant>V4L2_PIX_FMT_Y6</constant></entry> 1004 <entry><constant>V4L2_PIX_FMT_Y6</constant></entry>
936 <entry>'Y06 '</entry> 1005 <entry>'Y06 '</entry>
937 <entry>Old 6-bit greyscale format. Only the least significant 6 bits of each byte are used, 1006 <entry>Old 6-bit greyscale format. Only the most significant 6 bits of each byte are used,
938the other bits are set to 0.</entry> 1007the other bits are set to 0.</entry>
939 </row> 1008 </row>
1009 <row id="V4L2-PIX-FMT-S5C-UYVY-JPG">
1010 <entry><constant>V4L2_PIX_FMT_S5C_UYVY_JPG</constant></entry>
1011 <entry>'S5CI'</entry>
1012 <entry>Two-planar format used by Samsung S5C73MX cameras. The
1013first plane contains interleaved JPEG and UYVY image data, followed by meta data
1014in form of an array of offsets to the UYVY data blocks. The actual pointer array
1015follows immediately the interleaved JPEG/UYVY data, the number of entries in
1016this array equals the height of the UYVY image. Each entry is a 4-byte unsigned
1017integer in big endian order and it's an offset to a single pixel line of the
1018UYVY image. The first plane can start either with JPEG or UYVY data chunk. The
1019size of a single UYVY block equals the UYVY image's width multiplied by 2. The
1020size of a JPEG chunk depends on the image and can vary with each line.
1021<para>The second plane, at an offset of 4084 bytes, contains a 4-byte offset to
1022the pointer array in the first plane. This offset is followed by a 4-byte value
1023indicating size of the pointer array. All numbers in the second plane are also
1024in big endian order. Remaining data in the second plane is undefined. The
1025information in the second plane allows to easily find location of the pointer
1026array, which can be different for each frame. The size of the pointer array is
1027constant for given UYVY image height.</para>
1028<para>In order to extract UYVY and JPEG frames an application can initially set
1029a data pointer to the start of first plane and then add an offset from the first
1030entry of the pointers table. Such a pointer indicates start of an UYVY image
1031pixel line. Whole UYVY line can be copied to a separate buffer. These steps
1032should be repeated for each line, i.e. the number of entries in the pointer
1033array. Anything what's in between the UYVY lines is JPEG data and should be
1034concatenated to form the JPEG stream. </para>
1035</entry>
1036 </row>
940 </tbody> 1037 </tbody>
941 </tgroup> 1038 </tgroup>
942 </table> 1039 </table>
943 </section> 1040 </section>
944
945 <!--
946Local Variables:
947mode: sgml
948sgml-parent-document: "v4l2.sgml"
949indent-tabs-mode: nil
950End:
951 -->
diff --git a/Documentation/DocBook/v4l/planar-apis.xml b/Documentation/DocBook/media/v4l/planar-apis.xml
index 878ce204048..878ce204048 100644
--- a/Documentation/DocBook/v4l/planar-apis.xml
+++ b/Documentation/DocBook/media/v4l/planar-apis.xml
diff --git a/Documentation/DocBook/v4l/remote_controllers.xml b/Documentation/DocBook/media/v4l/remote_controllers.xml
index 160e464d44b..160e464d44b 100644
--- a/Documentation/DocBook/v4l/remote_controllers.xml
+++ b/Documentation/DocBook/media/v4l/remote_controllers.xml
diff --git a/Documentation/DocBook/media/v4l/selection-api.xml b/Documentation/DocBook/media/v4l/selection-api.xml
new file mode 100644
index 00000000000..4c238ce068b
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/selection-api.xml
@@ -0,0 +1,325 @@
1<section id="selection-api">
2
3 <title>Experimental API for cropping, composing and scaling</title>
4
5 <note>
6 <title>Experimental</title>
7
8 <para>This is an <link linkend="experimental">experimental</link>
9interface and may change in the future.</para>
10 </note>
11
12 <section>
13 <title>Introduction</title>
14
15<para>Some video capture devices can sample a subsection of a picture and
16shrink or enlarge it to an image of arbitrary size. Next, the devices can
17insert the image into larger one. Some video output devices can crop part of an
18input image, scale it up or down and insert it at an arbitrary scan line and
19horizontal offset into a video signal. We call these abilities cropping,
20scaling and composing.</para>
21
22<para>On a video <emphasis>capture</emphasis> device the source is a video
23signal, and the cropping target determine the area actually sampled. The sink
24is an image stored in a memory buffer. The composing area specifies which part
25of the buffer is actually written to by the hardware. </para>
26
27<para>On a video <emphasis>output</emphasis> device the source is an image in a
28memory buffer, and the cropping target is a part of an image to be shown on a
29display. The sink is the display or the graphics screen. The application may
30select the part of display where the image should be displayed. The size and
31position of such a window is controlled by the compose target.</para>
32
33<para>Rectangles for all cropping and composing targets are defined even if the
34device does supports neither cropping nor composing. Their size and position
35will be fixed in such a case. If the device does not support scaling then the
36cropping and composing rectangles have the same size.</para>
37
38 </section>
39
40 <section>
41 <title>Selection targets</title>
42
43 <para>
44 <figure id="sel-targets-capture">
45 <title>Cropping and composing targets</title>
46 <mediaobject>
47 <imageobject>
48 <imagedata fileref="selection.png" format="PNG" />
49 </imageobject>
50 <textobject>
51 <phrase>Targets used by a cropping, composing and scaling
52 process</phrase>
53 </textobject>
54 </mediaobject>
55 </figure>
56 </para>
57
58 <para>See <xref linkend="v4l2-selection-targets" /> for more
59 information.</para>
60 </section>
61
62 <section>
63
64 <title>Configuration</title>
65
66<para>Applications can use the <link linkend="vidioc-g-selection">selection
67API</link> to select an area in a video signal or a buffer, and to query for
68default settings and hardware limits.</para>
69
70<para>Video hardware can have various cropping, composing and scaling
71limitations. It may only scale up or down, support only discrete scaling
72factors, or have different scaling abilities in the horizontal and vertical
73directions. Also it may not support scaling at all. At the same time the
74cropping/composing rectangles may have to be aligned, and both the source and
75the sink may have arbitrary upper and lower size limits. Therefore, as usual,
76drivers are expected to adjust the requested parameters and return the actual
77values selected. An application can control the rounding behaviour using <link
78linkend="v4l2-selection-flags"> constraint flags </link>.</para>
79
80 <section>
81
82 <title>Configuration of video capture</title>
83
84<para>See figure <xref linkend="sel-targets-capture" /> for examples of the
85selection targets available for a video capture device. It is recommended to
86configure the cropping targets before to the composing targets.</para>
87
88<para>The range of coordinates of the top left corner, width and height of
89areas that can be sampled is given by the <constant> V4L2_SEL_TGT_CROP_BOUNDS
90</constant> target. It is recommended for the driver developers to put the
91top/left corner at position <constant> (0,0) </constant>. The rectangle's
92coordinates are expressed in pixels.</para>
93
94<para>The top left corner, width and height of the source rectangle, that is
95the area actually sampled, is given by the <constant> V4L2_SEL_TGT_CROP
96</constant> target. It uses the same coordinate system as <constant>
97V4L2_SEL_TGT_CROP_BOUNDS </constant>. The active cropping area must lie
98completely inside the capture boundaries. The driver may further adjust the
99requested size and/or position according to hardware limitations.</para>
100
101<para>Each capture device has a default source rectangle, given by the
102<constant> V4L2_SEL_TGT_CROP_DEFAULT </constant> target. This rectangle shall
103over what the driver writer considers the complete picture. Drivers shall set
104the active crop rectangle to the default when the driver is first loaded, but
105not later.</para>
106
107<para>The composing targets refer to a memory buffer. The limits of composing
108coordinates are obtained using <constant> V4L2_SEL_TGT_COMPOSE_BOUNDS
109</constant>. All coordinates are expressed in pixels. The rectangle's top/left
110corner must be located at position <constant> (0,0) </constant>. The width and
111height are equal to the image size set by <constant> VIDIOC_S_FMT </constant>.
112</para>
113
114<para>The part of a buffer into which the image is inserted by the hardware is
115controlled by the <constant> V4L2_SEL_TGT_COMPOSE </constant> target.
116The rectangle's coordinates are also expressed in the same coordinate system as
117the bounds rectangle. The composing rectangle must lie completely inside bounds
118rectangle. The driver must adjust the composing rectangle to fit to the
119bounding limits. Moreover, the driver can perform other adjustments according
120to hardware limitations. The application can control rounding behaviour using
121<link linkend="v4l2-selection-flags"> constraint flags </link>.</para>
122
123<para>For capture devices the default composing rectangle is queried using
124<constant> V4L2_SEL_TGT_COMPOSE_DEFAULT </constant>. It is usually equal to the
125bounding rectangle.</para>
126
127<para>The part of a buffer that is modified by the hardware is given by
128<constant> V4L2_SEL_TGT_COMPOSE_PADDED </constant>. It contains all pixels
129defined using <constant> V4L2_SEL_TGT_COMPOSE </constant> plus all
130padding data modified by hardware during insertion process. All pixels outside
131this rectangle <emphasis>must not</emphasis> be changed by the hardware. The
132content of pixels that lie inside the padded area but outside active area is
133undefined. The application can use the padded and active rectangles to detect
134where the rubbish pixels are located and remove them if needed.</para>
135
136 </section>
137
138 <section>
139
140 <title>Configuration of video output</title>
141
142<para>For output devices targets and ioctls are used similarly to the video
143capture case. The <emphasis> composing </emphasis> rectangle refers to the
144insertion of an image into a video signal. The cropping rectangles refer to a
145memory buffer. It is recommended to configure the composing targets before to
146the cropping targets.</para>
147
148<para>The cropping targets refer to the memory buffer that contains an image to
149be inserted into a video signal or graphical screen. The limits of cropping
150coordinates are obtained using <constant> V4L2_SEL_TGT_CROP_BOUNDS </constant>.
151All coordinates are expressed in pixels. The top/left corner is always point
152<constant> (0,0) </constant>. The width and height is equal to the image size
153specified using <constant> VIDIOC_S_FMT </constant> ioctl.</para>
154
155<para>The top left corner, width and height of the source rectangle, that is
156the area from which image date are processed by the hardware, is given by the
157<constant> V4L2_SEL_TGT_CROP </constant>. Its coordinates are expressed
158in in the same coordinate system as the bounds rectangle. The active cropping
159area must lie completely inside the crop boundaries and the driver may further
160adjust the requested size and/or position according to hardware
161limitations.</para>
162
163<para>For output devices the default cropping rectangle is queried using
164<constant> V4L2_SEL_TGT_CROP_DEFAULT </constant>. It is usually equal to the
165bounding rectangle.</para>
166
167<para>The part of a video signal or graphics display where the image is
168inserted by the hardware is controlled by <constant>
169V4L2_SEL_TGT_COMPOSE </constant> target. The rectangle's coordinates
170are expressed in pixels. The composing rectangle must lie completely inside the
171bounds rectangle. The driver must adjust the area to fit to the bounding
172limits. Moreover, the driver can perform other adjustments according to
173hardware limitations. </para>
174
175<para>The device has a default composing rectangle, given by the <constant>
176V4L2_SEL_TGT_COMPOSE_DEFAULT </constant> target. This rectangle shall cover what
177the driver writer considers the complete picture. It is recommended for the
178driver developers to put the top/left corner at position <constant> (0,0)
179</constant>. Drivers shall set the active composing rectangle to the default
180one when the driver is first loaded.</para>
181
182<para>The devices may introduce additional content to video signal other than
183an image from memory buffers. It includes borders around an image. However,
184such a padded area is driver-dependent feature not covered by this document.
185Driver developers are encouraged to keep padded rectangle equal to active one.
186The padded target is accessed by the <constant> V4L2_SEL_TGT_COMPOSE_PADDED
187</constant> identifier. It must contain all pixels from the <constant>
188V4L2_SEL_TGT_COMPOSE </constant> target.</para>
189
190 </section>
191
192 <section>
193
194 <title>Scaling control</title>
195
196<para>An application can detect if scaling is performed by comparing the width
197and the height of rectangles obtained using <constant> V4L2_SEL_TGT_CROP
198</constant> and <constant> V4L2_SEL_TGT_COMPOSE </constant> targets. If
199these are not equal then the scaling is applied. The application can compute
200the scaling ratios using these values.</para>
201
202 </section>
203
204 </section>
205
206 <section>
207
208 <title>Comparison with old cropping API</title>
209
210<para>The selection API was introduced to cope with deficiencies of previous
211<link linkend="crop"> API </link>, that was designed to control simple capture
212devices. Later the cropping API was adopted by video output drivers. The ioctls
213are used to select a part of the display were the video signal is inserted. It
214should be considered as an API abuse because the described operation is
215actually the composing. The selection API makes a clear distinction between
216composing and cropping operations by setting the appropriate targets. The V4L2
217API lacks any support for composing to and cropping from an image inside a
218memory buffer. The application could configure a capture device to fill only a
219part of an image by abusing V4L2 API. Cropping a smaller image from a larger
220one is achieved by setting the field
221&v4l2-pix-format;<structfield>::bytesperline</structfield>. Introducing an image offsets
222could be done by modifying field &v4l2-buffer;<structfield>::m_userptr</structfield>
223before calling <constant> VIDIOC_QBUF </constant>. Those
224operations should be avoided because they are not portable (endianness), and do
225not work for macroblock and Bayer formats and mmap buffers. The selection API
226deals with configuration of buffer cropping/composing in a clear, intuitive and
227portable way. Next, with the selection API the concepts of the padded target
228and constraints flags are introduced. Finally, &v4l2-crop; and &v4l2-cropcap;
229have no reserved fields. Therefore there is no way to extend their functionality.
230The new &v4l2-selection; provides a lot of place for future
231extensions. Driver developers are encouraged to implement only selection API.
232The former cropping API would be simulated using the new one. </para>
233
234 </section>
235
236 <section>
237 <title>Examples</title>
238 <example>
239 <title>Resetting the cropping parameters</title>
240
241 <para>(A video capture device is assumed; change <constant>
242V4L2_BUF_TYPE_VIDEO_CAPTURE </constant> for other devices; change target to
243<constant> V4L2_SEL_TGT_COMPOSE_* </constant> family to configure composing
244area)</para>
245
246 <programlisting>
247
248 &v4l2-selection; sel = {
249 .type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
250 .target = V4L2_SEL_TGT_CROP_DEFAULT,
251 };
252 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;sel);
253 if (ret)
254 exit(-1);
255 sel.target = V4L2_SEL_TGT_CROP;
256 ret = ioctl(fd, &VIDIOC-S-SELECTION;, &amp;sel);
257 if (ret)
258 exit(-1);
259
260 </programlisting>
261 </example>
262
263 <example>
264 <title>Simple downscaling</title>
265 <para>Setting a composing area on output of size of <emphasis> at most
266</emphasis> half of limit placed at a center of a display.</para>
267 <programlisting>
268
269 &v4l2-selection; sel = {
270 .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
271 .target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
272 };
273 struct v4l2_rect r;
274
275 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;sel);
276 if (ret)
277 exit(-1);
278 /* setting smaller compose rectangle */
279 r.width = sel.r.width / 2;
280 r.height = sel.r.height / 2;
281 r.left = sel.r.width / 4;
282 r.top = sel.r.height / 4;
283 sel.r = r;
284 sel.target = V4L2_SEL_TGT_COMPOSE;
285 sel.flags = V4L2_SEL_FLAG_LE;
286 ret = ioctl(fd, &VIDIOC-S-SELECTION;, &amp;sel);
287 if (ret)
288 exit(-1);
289
290 </programlisting>
291 </example>
292
293 <example>
294 <title>Querying for scaling factors</title>
295 <para>A video output device is assumed; change <constant>
296V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> for other devices</para>
297 <programlisting>
298
299 &v4l2-selection; compose = {
300 .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
301 .target = V4L2_SEL_TGT_COMPOSE,
302 };
303 &v4l2-selection; crop = {
304 .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
305 .target = V4L2_SEL_TGT_CROP,
306 };
307 double hscale, vscale;
308
309 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;compose);
310 if (ret)
311 exit(-1);
312 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;crop);
313 if (ret)
314 exit(-1);
315
316 /* computing scaling factors */
317 hscale = (double)compose.r.width / crop.r.width;
318 vscale = (double)compose.r.height / crop.r.height;
319
320 </programlisting>
321 </example>
322
323 </section>
324
325</section>
diff --git a/Documentation/DocBook/media/v4l/selections-common.xml b/Documentation/DocBook/media/v4l/selections-common.xml
new file mode 100644
index 00000000000..7502f784b8c
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/selections-common.xml
@@ -0,0 +1,164 @@
1<section id="v4l2-selections-common">
2
3 <title>Common selection definitions</title>
4
5 <para>While the <link linkend="selection-api">V4L2 selection
6 API</link> and <link linkend="v4l2-subdev-selections">V4L2 subdev
7 selection APIs</link> are very similar, there's one fundamental
8 difference between the two. On sub-device API, the selection
9 rectangle refers to the media bus format, and is bound to a
10 sub-device's pad. On the V4L2 interface the selection rectangles
11 refer to the in-memory pixel format.</para>
12
13 <para>This section defines the common definitions of the
14 selection interfaces on the two APIs.</para>
15
16 <section id="v4l2-selection-targets">
17
18 <title>Selection targets</title>
19
20 <para>The precise meaning of the selection targets may be
21 dependent on which of the two interfaces they are used.</para>
22
23 <table pgwide="1" frame="none" id="v4l2-selection-targets-table">
24 <title>Selection target definitions</title>
25 <tgroup cols="5">
26 <colspec colname="c1" />
27 <colspec colname="c2" />
28 <colspec colname="c3" />
29 <colspec colname="c4" />
30 <colspec colname="c5" />
31 &cs-def;
32 <thead>
33 <row rowsep="1">
34 <entry align="left">Target name</entry>
35 <entry align="left">id</entry>
36 <entry align="left">Definition</entry>
37 <entry align="left">Valid for V4L2</entry>
38 <entry align="left">Valid for V4L2 subdev</entry>
39 </row>
40 </thead>
41 <tbody valign="top">
42 <row>
43 <entry><constant>V4L2_SEL_TGT_CROP</constant></entry>
44 <entry>0x0000</entry>
45 <entry>Crop rectangle. Defines the cropped area.</entry>
46 <entry>Yes</entry>
47 <entry>Yes</entry>
48 </row>
49 <row>
50 <entry><constant>V4L2_SEL_TGT_CROP_DEFAULT</constant></entry>
51 <entry>0x0001</entry>
52 <entry>Suggested cropping rectangle that covers the "whole picture".</entry>
53 <entry>Yes</entry>
54 <entry>No</entry>
55 </row>
56 <row>
57 <entry><constant>V4L2_SEL_TGT_CROP_BOUNDS</constant></entry>
58 <entry>0x0002</entry>
59 <entry>Bounds of the crop rectangle. All valid crop
60 rectangles fit inside the crop bounds rectangle.
61 </entry>
62 <entry>Yes</entry>
63 <entry>Yes</entry>
64 </row>
65 <row>
66 <entry><constant>V4L2_SEL_TGT_COMPOSE</constant></entry>
67 <entry>0x0100</entry>
68 <entry>Compose rectangle. Used to configure scaling
69 and composition.</entry>
70 <entry>Yes</entry>
71 <entry>Yes</entry>
72 </row>
73 <row>
74 <entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry>
75 <entry>0x0101</entry>
76 <entry>Suggested composition rectangle that covers the "whole picture".</entry>
77 <entry>Yes</entry>
78 <entry>No</entry>
79 </row>
80 <row>
81 <entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
82 <entry>0x0102</entry>
83 <entry>Bounds of the compose rectangle. All valid compose
84 rectangles fit inside the compose bounds rectangle.</entry>
85 <entry>Yes</entry>
86 <entry>Yes</entry>
87 </row>
88 <row>
89 <entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry>
90 <entry>0x0103</entry>
91 <entry>The active area and all padding pixels that are inserted or
92 modified by hardware.</entry>
93 <entry>Yes</entry>
94 <entry>No</entry>
95 </row>
96 </tbody>
97 </tgroup>
98 </table>
99
100 </section>
101
102 <section id="v4l2-selection-flags">
103
104 <title>Selection flags</title>
105
106 <table pgwide="1" frame="none" id="v4l2-selection-flags-table">
107 <title>Selection flag definitions</title>
108 <tgroup cols="5">
109 <colspec colname="c1" />
110 <colspec colname="c2" />
111 <colspec colname="c3" />
112 <colspec colname="c4" />
113 <colspec colname="c5" />
114 &cs-def;
115 <thead>
116 <row rowsep="1">
117 <entry align="left">Flag name</entry>
118 <entry align="left">id</entry>
119 <entry align="left">Definition</entry>
120 <entry align="left">Valid for V4L2</entry>
121 <entry align="left">Valid for V4L2 subdev</entry>
122 </row>
123 </thead>
124 <tbody valign="top">
125 <row>
126 <entry><constant>V4L2_SEL_FLAG_GE</constant></entry>
127 <entry>(1 &lt;&lt; 0)</entry>
128 <entry>Suggest the driver it should choose greater or
129 equal rectangle (in size) than was requested. Albeit the
130 driver may choose a lesser size, it will only do so due to
131 hardware limitations. Without this flag (and
132 <constant>V4L2_SEL_FLAG_LE</constant>) the
133 behaviour is to choose the closest possible
134 rectangle.</entry>
135 <entry>Yes</entry>
136 <entry>Yes</entry>
137 </row>
138 <row>
139 <entry><constant>V4L2_SEL_FLAG_LE</constant></entry>
140 <entry>(1 &lt;&lt; 1)</entry>
141 <entry>Suggest the driver it
142 should choose lesser or equal rectangle (in size) than was
143 requested. Albeit the driver may choose a greater size, it
144 will only do so due to hardware limitations.</entry>
145 <entry>Yes</entry>
146 <entry>Yes</entry>
147 </row>
148 <row>
149 <entry><constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant></entry>
150 <entry>(1 &lt;&lt; 2)</entry>
151 <entry>The configuration must not be propagated to any
152 further processing steps. If this flag is not given, the
153 configuration is propagated inside the subdevice to all
154 further processing steps.</entry>
155 <entry>No</entry>
156 <entry>Yes</entry>
157 </row>
158 </tbody>
159 </tgroup>
160 </table>
161
162 </section>
163
164</section>
diff --git a/Documentation/DocBook/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml
index 8d3409d2c63..a0a936455fa 100644
--- a/Documentation/DocBook/v4l/subdev-formats.xml
+++ b/Documentation/DocBook/media/v4l/subdev-formats.xml
@@ -380,9 +380,6 @@
380 <title>Bayer Patterns</title> 380 <title>Bayer Patterns</title>
381 <mediaobject> 381 <mediaobject>
382 <imageobject> 382 <imageobject>
383 <imagedata fileref="bayer.pdf" format="PS" />
384 </imageobject>
385 <imageobject>
386 <imagedata fileref="bayer.png" format="PNG" /> 383 <imagedata fileref="bayer.png" format="PNG" />
387 </imageobject> 384 </imageobject>
388 <textobject> 385 <textobject>
@@ -2528,7 +2525,7 @@
2528 2525
2529 <para>Those data formats consist of an ordered sequence of 8-bit bytes 2526 <para>Those data formats consist of an ordered sequence of 8-bit bytes
2530 obtained from JPEG compression process. Additionally to the 2527 obtained from JPEG compression process. Additionally to the
2531 <constant>_JPEG</constant> prefix the format code is made of 2528 <constant>_JPEG</constant> postfix the format code is made of
2532 the following information. 2529 the following information.
2533 <itemizedlist> 2530 <itemizedlist>
2534 <listitem><para>The number of bus samples per entropy encoded byte.</para></listitem> 2531 <listitem><para>The number of bus samples per entropy encoded byte.</para></listitem>
@@ -2568,5 +2565,49 @@
2568 </tgroup> 2565 </tgroup>
2569 </table> 2566 </table>
2570 </section> 2567 </section>
2568
2569 <section id="v4l2-mbus-vendor-spec-fmts">
2570 <title>Vendor and Device Specific Formats</title>
2571
2572 <note>
2573 <title>Experimental</title>
2574 <para>This is an <link linkend="experimental">experimental</link>
2575interface and may change in the future.</para>
2576 </note>
2577
2578 <para>This section lists complex data formats that are either vendor or
2579 device specific.
2580 </para>
2581
2582 <para>The following table lists the existing vendor and device specific
2583 formats.</para>
2584
2585 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-vendor-specific">
2586 <title>Vendor and device specific formats</title>
2587 <tgroup cols="3">
2588 <colspec colname="id" align="left" />
2589 <colspec colname="code" align="left"/>
2590 <colspec colname="remarks" align="left"/>
2591 <thead>
2592 <row>
2593 <entry>Identifier</entry>
2594 <entry>Code</entry>
2595 <entry>Comments</entry>
2596 </row>
2597 </thead>
2598 <tbody valign="top">
2599 <row id="V4L2-MBUS-FMT-S5C-UYVY-JPEG-1X8">
2600 <entry>V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8</entry>
2601 <entry>0x5001</entry>
2602 <entry>
2603 Interleaved raw UYVY and JPEG image format with embedded
2604 meta-data used by Samsung S3C73MX camera sensors.
2605 </entry>
2606 </row>
2607 </tbody>
2608 </tgroup>
2609 </table>
2610 </section>
2611
2571 </section> 2612 </section>
2572</section> 2613</section>
diff --git a/Documentation/DocBook/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
index a7fd76d0dac..4d110b1ad3e 100644
--- a/Documentation/DocBook/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -28,8 +28,8 @@ documentation.</contrib>
28 <firstname>Hans</firstname> 28 <firstname>Hans</firstname>
29 <surname>Verkuil</surname> 29 <surname>Verkuil</surname>
30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl, 30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl,
31the extended control ioctls and major parts of the sliced VBI 31the extended control ioctls, major parts of the sliced VBI API, the
32API.</contrib> 32MPEG encoder and decoder APIs and the DV Timings API.</contrib>
33 <affiliation> 33 <affiliation>
34 <address> 34 <address>
35 <email>hverkuil@xs4all.nl</email> 35 <email>hverkuil@xs4all.nl</email>
@@ -87,7 +87,7 @@ Remote Controller chapter.</contrib>
87 </author> 87 </author>
88 88
89 <author> 89 <author>
90 <firstname>Pawel</firstname> 90 <firstname>Pawel</firstname>
91 <surname>Osciak</surname> 91 <surname>Osciak</surname>
92 <contrib>Designed and documented the multi-planar API.</contrib> 92 <contrib>Designed and documented the multi-planar API.</contrib>
93 <affiliation> 93 <affiliation>
@@ -96,6 +96,17 @@ Remote Controller chapter.</contrib>
96 </address> 96 </address>
97 </affiliation> 97 </affiliation>
98 </author> 98 </author>
99
100 <author>
101 <firstname>Sakari</firstname>
102 <surname>Ailus</surname>
103 <contrib>Subdev selections API.</contrib>
104 <affiliation>
105 <address>
106 <email>sakari.ailus@iki.fi</email>
107 </address>
108 </affiliation>
109 </author>
99 </authorgroup> 110 </authorgroup>
100 111
101 <copyright> 112 <copyright>
@@ -112,6 +123,7 @@ Remote Controller chapter.</contrib>
112 <year>2009</year> 123 <year>2009</year>
113 <year>2010</year> 124 <year>2010</year>
114 <year>2011</year> 125 <year>2011</year>
126 <year>2012</year>
115 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin 127 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
116Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, 128Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
117 Pawel Osciak</holder> 129 Pawel Osciak</holder>
@@ -128,6 +140,65 @@ structs, ioctls) must be noted in more detail in the history chapter
128applications. --> 140applications. -->
129 141
130 <revision> 142 <revision>
143 <revnumber>3.6</revnumber>
144 <date>2012-07-02</date>
145 <authorinitials>hv</authorinitials>
146 <revremark>Added VIDIOC_ENUM_FREQ_BANDS.
147 </revremark>
148 </revision>
149
150 <revision>
151 <revnumber>3.5</revnumber>
152 <date>2012-05-07</date>
153 <authorinitials>sa, sn, hv</authorinitials>
154 <revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev
155 selections API. Improved the description of V4L2_CID_COLORFX
156 control, added V4L2_CID_COLORFX_CBCR control.
157 Added camera controls V4L2_CID_AUTO_EXPOSURE_BIAS,
158 V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, V4L2_CID_IMAGE_STABILIZATION,
159 V4L2_CID_ISO_SENSITIVITY, V4L2_CID_ISO_SENSITIVITY_AUTO,
160 V4L2_CID_EXPOSURE_METERING, V4L2_CID_SCENE_MODE,
161 V4L2_CID_3A_LOCK, V4L2_CID_AUTO_FOCUS_START,
162 V4L2_CID_AUTO_FOCUS_STOP, V4L2_CID_AUTO_FOCUS_STATUS
163 and V4L2_CID_AUTO_FOCUS_RANGE.
164 Added VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and
165 VIDIOC_DV_TIMINGS_CAP.
166 </revremark>
167 </revision>
168
169 <revision>
170 <revnumber>3.4</revnumber>
171 <date>2012-01-25</date>
172 <authorinitials>sn</authorinitials>
173 <revremark>Added <link linkend="jpeg-controls">JPEG compression
174 control class.</link>
175 </revremark>
176 </revision>
177
178 <revision>
179 <revnumber>3.3</revnumber>
180 <date>2012-01-11</date>
181 <authorinitials>hv</authorinitials>
182 <revremark>Added device_caps field to struct v4l2_capabilities.</revremark>
183 </revision>
184
185 <revision>
186 <revnumber>3.2</revnumber>
187 <date>2011-08-26</date>
188 <authorinitials>hv</authorinitials>
189 <revremark>Added V4L2_CTRL_FLAG_VOLATILE.</revremark>
190 </revision>
191
192 <revision>
193 <revnumber>3.1</revnumber>
194 <date>2011-06-27</date>
195 <authorinitials>mcc, po, hv</authorinitials>
196 <revremark>Documented that VIDIOC_QUERYCAP now returns a per-subsystem version instead of a per-driver one.
197 Standardize an error code for invalid ioctl.
198 Added V4L2_CTRL_TYPE_BITMASK.</revremark>
199 </revision>
200
201 <revision>
131 <revnumber>2.6.39</revnumber> 202 <revnumber>2.6.39</revnumber>
132 <date>2011-03-01</date> 203 <date>2011-03-01</date>
133 <authorinitials>mcc, po</authorinitials> 204 <authorinitials>mcc, po</authorinitials>
@@ -401,7 +472,7 @@ and discussions on the V4L mailing list.</revremark>
401</partinfo> 472</partinfo>
402 473
403<title>Video for Linux Two API Specification</title> 474<title>Video for Linux Two API Specification</title>
404 <subtitle>Revision 2.6.39</subtitle> 475 <subtitle>Revision 3.6</subtitle>
405 476
406 <chapter id="common"> 477 <chapter id="common">
407 &sub-common; 478 &sub-common;
@@ -453,20 +524,26 @@ and discussions on the V4L mailing list.</revremark>
453 &sub-close; 524 &sub-close;
454 &sub-ioctl; 525 &sub-ioctl;
455 <!-- All ioctls go here. --> 526 <!-- All ioctls go here. -->
527 &sub-create-bufs;
456 &sub-cropcap; 528 &sub-cropcap;
457 &sub-dbg-g-chip-ident; 529 &sub-dbg-g-chip-ident;
458 &sub-dbg-g-register; 530 &sub-dbg-g-register;
531 &sub-decoder-cmd;
459 &sub-dqevent; 532 &sub-dqevent;
533 &sub-dv-timings-cap;
460 &sub-encoder-cmd; 534 &sub-encoder-cmd;
461 &sub-enumaudio; 535 &sub-enumaudio;
462 &sub-enumaudioout; 536 &sub-enumaudioout;
463 &sub-enum-dv-presets; 537 &sub-enum-dv-presets;
538 &sub-enum-dv-timings;
464 &sub-enum-fmt; 539 &sub-enum-fmt;
465 &sub-enum-framesizes; 540 &sub-enum-framesizes;
466 &sub-enum-frameintervals; 541 &sub-enum-frameintervals;
542 &sub-enum-freq-bands;
467 &sub-enuminput; 543 &sub-enuminput;
468 &sub-enumoutput; 544 &sub-enumoutput;
469 &sub-enumstd; 545 &sub-enumstd;
546 &sub-expbuf;
470 &sub-g-audio; 547 &sub-g-audio;
471 &sub-g-audioout; 548 &sub-g-audioout;
472 &sub-g-crop; 549 &sub-g-crop;
@@ -484,16 +561,19 @@ and discussions on the V4L mailing list.</revremark>
484 &sub-g-output; 561 &sub-g-output;
485 &sub-g-parm; 562 &sub-g-parm;
486 &sub-g-priority; 563 &sub-g-priority;
564 &sub-g-selection;
487 &sub-g-sliced-vbi-cap; 565 &sub-g-sliced-vbi-cap;
488 &sub-g-std; 566 &sub-g-std;
489 &sub-g-tuner; 567 &sub-g-tuner;
490 &sub-log-status; 568 &sub-log-status;
491 &sub-overlay; 569 &sub-overlay;
570 &sub-prepare-buf;
492 &sub-qbuf; 571 &sub-qbuf;
493 &sub-querybuf; 572 &sub-querybuf;
494 &sub-querycap; 573 &sub-querycap;
495 &sub-queryctrl; 574 &sub-queryctrl;
496 &sub-query-dv-preset; 575 &sub-query-dv-preset;
576 &sub-query-dv-timings;
497 &sub-querystd; 577 &sub-querystd;
498 &sub-reqbufs; 578 &sub-reqbufs;
499 &sub-s-hw-freq-seek; 579 &sub-s-hw-freq-seek;
@@ -502,8 +582,10 @@ and discussions on the V4L mailing list.</revremark>
502 &sub-subdev-enum-frame-size; 582 &sub-subdev-enum-frame-size;
503 &sub-subdev-enum-mbus-code; 583 &sub-subdev-enum-mbus-code;
504 &sub-subdev-g-crop; 584 &sub-subdev-g-crop;
585 &sub-subdev-g-edid;
505 &sub-subdev-g-fmt; 586 &sub-subdev-g-fmt;
506 &sub-subdev-g-frame-interval; 587 &sub-subdev-g-frame-interval;
588 &sub-subdev-g-selection;
507 &sub-subscribe-event; 589 &sub-subscribe-event;
508 <!-- End of ioctls. --> 590 <!-- End of ioctls. -->
509 &sub-mmap; 591 &sub-mmap;
@@ -515,6 +597,11 @@ and discussions on the V4L mailing list.</revremark>
515 &sub-write; 597 &sub-write;
516 </appendix> 598 </appendix>
517 599
600 <appendix>
601 <title>Common definitions for V4L2 and V4L2 subdev interfaces</title>
602 &sub-selections-common;
603 </appendix>
604
518 <appendix id="videodev"> 605 <appendix id="videodev">
519 <title>Video For Linux Two Header File</title> 606 <title>Video For Linux Two Header File</title>
520 &sub-videodev2-h; 607 &sub-videodev2-h;
diff --git a/Documentation/DocBook/v4l/v4l2grab.c.xml b/Documentation/DocBook/media/v4l/v4l2grab.c.xml
index bed12e40be2..bed12e40be2 100644
--- a/Documentation/DocBook/v4l/v4l2grab.c.xml
+++ b/Documentation/DocBook/media/v4l/v4l2grab.c.xml
diff --git a/Documentation/DocBook/v4l/vbi_525.pdf b/Documentation/DocBook/media/v4l/vbi_525.pdf
index 9e72c25b208..9e72c25b208 100644
--- a/Documentation/DocBook/v4l/vbi_525.pdf
+++ b/Documentation/DocBook/media/v4l/vbi_525.pdf
Binary files differ
diff --git a/Documentation/DocBook/v4l/vbi_625.pdf b/Documentation/DocBook/media/v4l/vbi_625.pdf
index 765235e33a4..765235e33a4 100644
--- a/Documentation/DocBook/v4l/vbi_625.pdf
+++ b/Documentation/DocBook/media/v4l/vbi_625.pdf
Binary files differ
diff --git a/Documentation/DocBook/v4l/vbi_hsync.pdf b/Documentation/DocBook/media/v4l/vbi_hsync.pdf
index 200b668189b..200b668189b 100644
--- a/Documentation/DocBook/v4l/vbi_hsync.pdf
+++ b/Documentation/DocBook/media/v4l/vbi_hsync.pdf
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
new file mode 100644
index 00000000000..cd994367243
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
@@ -0,0 +1,154 @@
1<refentry id="vidioc-create-bufs">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_CREATE_BUFS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_CREATE_BUFS</refname>
9 <refpurpose>Create buffers for Memory Mapped or User Pointer or DMA Buffer
10 I/O</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_create_buffers *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_CREATE_BUFS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>This ioctl is used to create buffers for <link linkend="mmap">memory
59mapped</link> or <link linkend="userp">user pointer</link> or <link
60linkend="dmabuf">DMA buffer</link> I/O. It can be used as an alternative or in
61addition to the <constant>VIDIOC_REQBUFS</constant> ioctl, when a tighter
62control over buffers is required. This ioctl can be called multiple times to
63create buffers of different sizes.</para>
64
65 <para>To allocate device buffers applications initialize relevant fields of
66the <structname>v4l2_create_buffers</structname> structure. They set the
67<structfield>type</structfield> field in the
68&v4l2-format; structure, embedded in this
69structure, to the respective stream or buffer type.
70<structfield>count</structfield> must be set to the number of required buffers.
71<structfield>memory</structfield> specifies the required I/O method. The
72<structfield>format</structfield> field shall typically be filled in using
73either the <constant>VIDIOC_TRY_FMT</constant> or
74<constant>VIDIOC_G_FMT</constant> ioctl(). Additionally, applications can adjust
75<structfield>sizeimage</structfield> fields to fit their specific needs. The
76<structfield>reserved</structfield> array must be zeroed.</para>
77
78 <para>When the ioctl is called with a pointer to this structure the driver
79will attempt to allocate up to the requested number of buffers and store the
80actual number allocated and the starting index in the
81<structfield>count</structfield> and the <structfield>index</structfield> fields
82respectively. On return <structfield>count</structfield> can be smaller than
83the number requested. The driver may also increase buffer sizes if required,
84however, it will not update <structfield>sizeimage</structfield> field values.
85The user has to use <constant>VIDIOC_QUERYBUF</constant> to retrieve that
86information.</para>
87
88 <table pgwide="1" frame="none" id="v4l2-create-buffers">
89 <title>struct <structname>v4l2_create_buffers</structname></title>
90 <tgroup cols="3">
91 &cs-str;
92 <tbody valign="top">
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>index</structfield></entry>
96 <entry>The starting buffer index, returned by the driver.</entry>
97 </row>
98 <row>
99 <entry>__u32</entry>
100 <entry><structfield>count</structfield></entry>
101 <entry>The number of buffers requested or granted. If count == 0, then
102 <constant>VIDIOC_CREATE_BUFS</constant> will set <structfield>index</structfield>
103 to the current number of created buffers, and it will check the validity of
104 <structfield>memory</structfield> and <structfield>format.type</structfield>.
105 If those are invalid -1 is returned and errno is set to &EINVAL;,
106 otherwise <constant>VIDIOC_CREATE_BUFS</constant> returns 0. It will
107 never set errno to &EBUSY; in this particular case.</entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>memory</structfield></entry>
112 <entry>Applications set this field to
113<constant>V4L2_MEMORY_MMAP</constant>,
114<constant>V4L2_MEMORY_DMABUF</constant> or
115<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
116/></entry>
117 </row>
118 <row>
119 <entry>&v4l2-format;</entry>
120 <entry><structfield>format</structfield></entry>
121 <entry>Filled in by the application, preserved by the driver.</entry>
122 </row>
123 <row>
124 <entry>__u32</entry>
125 <entry><structfield>reserved</structfield>[8]</entry>
126 <entry>A place holder for future extensions.</entry>
127 </row>
128 </tbody>
129 </tgroup>
130 </table>
131 </refsect1>
132
133 <refsect1>
134 &return-value;
135
136 <variablelist>
137 <varlistentry>
138 <term><errorcode>ENOMEM</errorcode></term>
139 <listitem>
140 <para>No memory to allocate buffers for <link linkend="mmap">memory
141mapped</link> I/O.</para>
142 </listitem>
143 </varlistentry>
144 <varlistentry>
145 <term><errorcode>EINVAL</errorcode></term>
146 <listitem>
147 <para>The buffer type (<structfield>type</structfield> field) or the
148requested I/O method (<structfield>memory</structfield>) is not
149supported.</para>
150 </listitem>
151 </varlistentry>
152 </variablelist>
153 </refsect1>
154</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
index 816e90e283c..bf7cc979fdf 100644
--- a/Documentation/DocBook/v4l/vidioc-cropcap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
@@ -59,21 +59,24 @@ constant except when switching the video standard. Remember this
59switch can occur implicit when switching the video input or 59switch can occur implicit when switching the video input or
60output.</para> 60output.</para>
61 61
62 <para>This ioctl must be implemented for video capture or output devices that
63support cropping and/or scaling and/or have non-square pixels, and for overlay devices.</para>
64
62 <table pgwide="1" frame="none" id="v4l2-cropcap"> 65 <table pgwide="1" frame="none" id="v4l2-cropcap">
63 <title>struct <structname>v4l2_cropcap</structname></title> 66 <title>struct <structname>v4l2_cropcap</structname></title>
64 <tgroup cols="3"> 67 <tgroup cols="3">
65 &cs-str; 68 &cs-str;
66 <tbody valign="top"> 69 <tbody valign="top">
67 <row> 70 <row>
68 <entry>&v4l2-buf-type;</entry> 71 <entry>__u32</entry>
69 <entry><structfield>type</structfield></entry> 72 <entry><structfield>type</structfield></entry>
70 <entry>Type of the data stream, set by the application. 73 <entry>Type of the data stream, set by the application.
71Only these types are valid here: 74Only these types are valid here:
72<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, 75<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
76<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>,
73<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 77<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
74<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 78<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and
75defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 79<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
76and higher.</entry>
77 </row> 80 </row>
78 <row> 81 <row>
79 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> 82 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry>
@@ -156,19 +159,9 @@ on 22 Oct 2002 subject "Re:[V4L][patches!] Re:v4l2/kernel-2.5" -->
156 <term><errorcode>EINVAL</errorcode></term> 159 <term><errorcode>EINVAL</errorcode></term>
157 <listitem> 160 <listitem>
158 <para>The &v4l2-cropcap; <structfield>type</structfield> is 161 <para>The &v4l2-cropcap; <structfield>type</structfield> is
159invalid or the ioctl is not supported. This is not permitted for 162invalid.</para>
160video capture, output and overlay devices, which must support
161<constant>VIDIOC_CROPCAP</constant>.</para>
162 </listitem> 163 </listitem>
163 </varlistentry> 164 </varlistentry>
164 </variablelist> 165 </variablelist>
165 </refsect1> 166 </refsect1>
166</refentry> 167</refentry>
167
168<!--
169Local Variables:
170mode: sgml
171sgml-parent-document: "v4l2.sgml"
172indent-tabs-mode: nil
173End:
174-->
diff --git a/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml
index 4a09e203af0..4ecd966808d 100644
--- a/Documentation/DocBook/v4l/vidioc-dbg-g-chip-ident.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-ident.xml
@@ -258,18 +258,9 @@ could not identify it.</entry>
258 <varlistentry> 258 <varlistentry>
259 <term><errorcode>EINVAL</errorcode></term> 259 <term><errorcode>EINVAL</errorcode></term>
260 <listitem> 260 <listitem>
261 <para>The driver does not support this ioctl, or the 261 <para>The <structfield>match_type</structfield> is invalid.</para>
262<structfield>match_type</structfield> is invalid.</para>
263 </listitem> 262 </listitem>
264 </varlistentry> 263 </varlistentry>
265 </variablelist> 264 </variablelist>
266 </refsect1> 265 </refsect1>
267</refentry> 266</refentry>
268
269<!--
270Local Variables:
271mode: sgml
272sgml-parent-document: "v4l2.sgml"
273indent-tabs-mode: nil
274End:
275-->
diff --git a/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
index 980c7f3e2fd..a44aebc7997 100644
--- a/Documentation/DocBook/v4l/vidioc-dbg-g-register.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
@@ -247,15 +247,6 @@ register.</entry>
247 247
248 <variablelist> 248 <variablelist>
249 <varlistentry> 249 <varlistentry>
250 <term><errorcode>EINVAL</errorcode></term>
251 <listitem>
252 <para>The driver does not support this ioctl, or the kernel
253was not compiled with the <constant>CONFIG_VIDEO_ADV_DEBUG</constant>
254option, or the <structfield>match_type</structfield> is invalid, or the
255selected chip or register does not exist.</para>
256 </listitem>
257 </varlistentry>
258 <varlistentry>
259 <term><errorcode>EPERM</errorcode></term> 250 <term><errorcode>EPERM</errorcode></term>
260 <listitem> 251 <listitem>
261 <para>Insufficient permissions. Root privileges are required 252 <para>Insufficient permissions. Root privileges are required
@@ -265,11 +256,3 @@ to execute these ioctls.</para>
265 </variablelist> 256 </variablelist>
266 </refsect1> 257 </refsect1>
267</refentry> 258</refentry>
268
269<!--
270Local Variables:
271mode: sgml
272sgml-parent-document: "v4l2.sgml"
273indent-tabs-mode: nil
274End:
275-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
new file mode 100644
index 00000000000..9215627b04c
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
@@ -0,0 +1,249 @@
1<refentry id="vidioc-decoder-cmd">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DECODER_CMD, VIDIOC_TRY_DECODER_CMD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DECODER_CMD</refname>
9 <refname>VIDIOC_TRY_DECODER_CMD</refname>
10 <refpurpose>Execute an decoder command</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_decoder_cmd *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_DECODER_CMD, VIDIOC_TRY_DECODER_CMD</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>These ioctls control an audio/video (usually MPEG-) decoder.
53<constant>VIDIOC_DECODER_CMD</constant> sends a command to the
54decoder, <constant>VIDIOC_TRY_DECODER_CMD</constant> can be used to
55try a command without actually executing it. To send a command applications
56must initialize all fields of a &v4l2-decoder-cmd; and call
57<constant>VIDIOC_DECODER_CMD</constant> or <constant>VIDIOC_TRY_DECODER_CMD</constant>
58with a pointer to this structure.</para>
59
60 <para>The <structfield>cmd</structfield> field must contain the
61command code. Some commands use the <structfield>flags</structfield> field for
62additional information.
63</para>
64
65 <para>A <function>write</function>() or &VIDIOC-STREAMON; call sends an implicit
66START command to the decoder if it has not been started yet.
67</para>
68
69 <para>A <function>close</function>() or &VIDIOC-STREAMOFF; call of a streaming
70file descriptor sends an implicit immediate STOP command to the decoder, and all
71buffered data is discarded.</para>
72
73 <para>These ioctls are optional, not all drivers may support
74them. They were introduced in Linux 3.3.</para>
75
76 <table pgwide="1" frame="none" id="v4l2-decoder-cmd">
77 <title>struct <structname>v4l2_decoder_cmd</structname></title>
78 <tgroup cols="5">
79 &cs-str;
80 <tbody valign="top">
81 <row>
82 <entry>__u32</entry>
83 <entry><structfield>cmd</structfield></entry>
84 <entry></entry>
85 <entry></entry>
86 <entry>The decoder command, see <xref linkend="decoder-cmds" />.</entry>
87 </row>
88 <row>
89 <entry>__u32</entry>
90 <entry><structfield>flags</structfield></entry>
91 <entry></entry>
92 <entry></entry>
93 <entry>Flags to go with the command. If no flags are defined for
94this command, drivers and applications must set this field to zero.</entry>
95 </row>
96 <row>
97 <entry>union</entry>
98 <entry>(anonymous)</entry>
99 <entry></entry>
100 <entry></entry>
101 <entry></entry>
102 </row>
103 <row>
104 <entry></entry>
105 <entry>struct</entry>
106 <entry><structfield>start</structfield></entry>
107 <entry></entry>
108 <entry>Structure containing additional data for the
109<constant>V4L2_DEC_CMD_START</constant> command.</entry>
110 </row>
111 <row>
112 <entry></entry>
113 <entry></entry>
114 <entry>__s32</entry>
115 <entry><structfield>speed</structfield></entry>
116 <entry>Playback speed and direction. The playback speed is defined as
117<structfield>speed</structfield>/1000 of the normal speed. So 1000 is normal playback.
118Negative numbers denote reverse playback, so -1000 does reverse playback at normal
119speed. Speeds -1, 0 and 1 have special meanings: speed 0 is shorthand for 1000
120(normal playback). A speed of 1 steps just one frame forward, a speed of -1 steps
121just one frame back.
122 </entry>
123 </row>
124 <row>
125 <entry></entry>
126 <entry></entry>
127 <entry>__u32</entry>
128 <entry><structfield>format</structfield></entry>
129 <entry>Format restrictions. This field is set by the driver, not the
130application. Possible values are <constant>V4L2_DEC_START_FMT_NONE</constant> if
131there are no format restrictions or <constant>V4L2_DEC_START_FMT_GOP</constant>
132if the decoder operates on full GOPs (<wordasword>Group Of Pictures</wordasword>).
133This is usually the case for reverse playback: the decoder needs full GOPs, which
134it can then play in reverse order. So to implement reverse playback the application
135must feed the decoder the last GOP in the video file, then the GOP before that, etc. etc.
136 </entry>
137 </row>
138 <row>
139 <entry></entry>
140 <entry>struct</entry>
141 <entry><structfield>stop</structfield></entry>
142 <entry></entry>
143 <entry>Structure containing additional data for the
144<constant>V4L2_DEC_CMD_STOP</constant> command.</entry>
145 </row>
146 <row>
147 <entry></entry>
148 <entry></entry>
149 <entry>__u64</entry>
150 <entry><structfield>pts</structfield></entry>
151 <entry>Stop playback at this <structfield>pts</structfield> or immediately
152if the playback is already past that timestamp. Leave to 0 if you want to stop after the
153last frame was decoded.
154 </entry>
155 </row>
156 <row>
157 <entry></entry>
158 <entry>struct</entry>
159 <entry><structfield>raw</structfield></entry>
160 <entry></entry>
161 <entry></entry>
162 </row>
163 <row>
164 <entry></entry>
165 <entry></entry>
166 <entry>__u32</entry>
167 <entry><structfield>data</structfield>[16]</entry>
168 <entry>Reserved for future extensions. Drivers and
169applications must set the array to zero.</entry>
170 </row>
171 </tbody>
172 </tgroup>
173 </table>
174
175 <table pgwide="1" frame="none" id="decoder-cmds">
176 <title>Decoder Commands</title>
177 <tgroup cols="3">
178 &cs-def;
179 <tbody valign="top">
180 <row>
181 <entry><constant>V4L2_DEC_CMD_START</constant></entry>
182 <entry>0</entry>
183 <entry>Start the decoder. When the decoder is already
184running or paused, this command will just change the playback speed.
185That means that calling <constant>V4L2_DEC_CMD_START</constant> when
186the decoder was paused will <emphasis>not</emphasis> resume the decoder.
187You have to explicitly call <constant>V4L2_DEC_CMD_RESUME</constant> for that.
188This command has one flag:
189<constant>V4L2_DEC_CMD_START_MUTE_AUDIO</constant>. If set, then audio will
190be muted when playing back at a non-standard speed.
191 </entry>
192 </row>
193 <row>
194 <entry><constant>V4L2_DEC_CMD_STOP</constant></entry>
195 <entry>1</entry>
196 <entry>Stop the decoder. When the decoder is already stopped,
197this command does nothing. This command has two flags:
198if <constant>V4L2_DEC_CMD_STOP_TO_BLACK</constant> is set, then the decoder will
199set the picture to black after it stopped decoding. Otherwise the last image will
200repeat. If <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder
201stops immediately (ignoring the <structfield>pts</structfield> value), otherwise it
202will keep decoding until timestamp >= pts or until the last of the pending data from
203its internal buffers was decoded.
204</entry>
205 </row>
206 <row>
207 <entry><constant>V4L2_DEC_CMD_PAUSE</constant></entry>
208 <entry>2</entry>
209 <entry>Pause the decoder. When the decoder has not been
210started yet, the driver will return an &EPERM;. When the decoder is
211already paused, this command does nothing. This command has one flag:
212if <constant>V4L2_DEC_CMD_PAUSE_TO_BLACK</constant> is set, then set the
213decoder output to black when paused.
214</entry>
215 </row>
216 <row>
217 <entry><constant>V4L2_DEC_CMD_RESUME</constant></entry>
218 <entry>3</entry>
219 <entry>Resume decoding after a PAUSE command. When the
220decoder has not been started yet, the driver will return an &EPERM;.
221When the decoder is already running, this command does nothing. No
222flags are defined for this command.</entry>
223 </row>
224 </tbody>
225 </tgroup>
226 </table>
227
228 </refsect1>
229
230 <refsect1>
231 &return-value;
232
233 <variablelist>
234 <varlistentry>
235 <term><errorcode>EINVAL</errorcode></term>
236 <listitem>
237 <para>The <structfield>cmd</structfield> field is invalid.</para>
238 </listitem>
239 </varlistentry>
240 <varlistentry>
241 <term><errorcode>EPERM</errorcode></term>
242 <listitem>
243 <para>The application sent a PAUSE or RESUME command when
244the decoder was not running.</para>
245 </listitem>
246 </varlistentry>
247 </variablelist>
248 </refsect1>
249</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
new file mode 100644
index 00000000000..98a856f9ec3
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
@@ -0,0 +1,271 @@
1<refentry id="vidioc-dqevent">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DQEVENT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DQEVENT</refname>
9 <refpurpose>Dequeue event</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_event
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_DQEVENT</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>Dequeue an event from a video device. No input is required
53 for this ioctl. All the fields of the &v4l2-event; structure are
54 filled by the driver. The file handle will also receive exceptions
55 which the application may get by e.g. using the select system
56 call.</para>
57
58 <table frame="none" pgwide="1" id="v4l2-event">
59 <title>struct <structname>v4l2_event</structname></title>
60 <tgroup cols="4">
61 &cs-str;
62 <tbody valign="top">
63 <row>
64 <entry>__u32</entry>
65 <entry><structfield>type</structfield></entry>
66 <entry></entry>
67 <entry>Type of the event.</entry>
68 </row>
69 <row>
70 <entry>union</entry>
71 <entry><structfield>u</structfield></entry>
72 <entry></entry>
73 <entry></entry>
74 </row>
75 <row>
76 <entry></entry>
77 <entry>&v4l2-event-vsync;</entry>
78 <entry><structfield>vsync</structfield></entry>
79 <entry>Event data for event V4L2_EVENT_VSYNC.
80 </entry>
81 </row>
82 <row>
83 <entry></entry>
84 <entry>&v4l2-event-ctrl;</entry>
85 <entry><structfield>ctrl</structfield></entry>
86 <entry>Event data for event V4L2_EVENT_CTRL.
87 </entry>
88 </row>
89 <row>
90 <entry></entry>
91 <entry>&v4l2-event-frame-sync;</entry>
92 <entry><structfield>frame_sync</structfield></entry>
93 <entry>Event data for event V4L2_EVENT_FRAME_SYNC.</entry>
94 </row>
95 <row>
96 <entry></entry>
97 <entry>__u8</entry>
98 <entry><structfield>data</structfield>[64]</entry>
99 <entry>Event data. Defined by the event type. The union
100 should be used to define easily accessible type for
101 events.</entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>pending</structfield></entry>
106 <entry></entry>
107 <entry>Number of pending events excluding this one.</entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>sequence</structfield></entry>
112 <entry></entry>
113 <entry>Event sequence number. The sequence number is
114 incremented for every subscribed event that takes place.
115 If sequence numbers are not contiguous it means that
116 events have been lost.
117 </entry>
118 </row>
119 <row>
120 <entry>struct timespec</entry>
121 <entry><structfield>timestamp</structfield></entry>
122 <entry></entry>
123 <entry>Event timestamp.</entry>
124 </row>
125 <row>
126 <entry>u32</entry>
127 <entry><structfield>id</structfield></entry>
128 <entry></entry>
129 <entry>The ID associated with the event source. If the event does not
130 have an associated ID (this depends on the event type), then this
131 is 0.</entry>
132 </row>
133 <row>
134 <entry>__u32</entry>
135 <entry><structfield>reserved</structfield>[8]</entry>
136 <entry></entry>
137 <entry>Reserved for future extensions. Drivers must set
138 the array to zero.</entry>
139 </row>
140 </tbody>
141 </tgroup>
142 </table>
143
144 <table frame="none" pgwide="1" id="v4l2-event-vsync">
145 <title>struct <structname>v4l2_event_vsync</structname></title>
146 <tgroup cols="3">
147 &cs-str;
148 <tbody valign="top">
149 <row>
150 <entry>__u8</entry>
151 <entry><structfield>field</structfield></entry>
152 <entry>The upcoming field. See &v4l2-field;.</entry>
153 </row>
154 </tbody>
155 </tgroup>
156 </table>
157
158 <table frame="none" pgwide="1" id="v4l2-event-ctrl">
159 <title>struct <structname>v4l2_event_ctrl</structname></title>
160 <tgroup cols="4">
161 &cs-str;
162 <tbody valign="top">
163 <row>
164 <entry>__u32</entry>
165 <entry><structfield>changes</structfield></entry>
166 <entry></entry>
167 <entry>A bitmask that tells what has changed. See <xref linkend="changes-flags" />.</entry>
168 </row>
169 <row>
170 <entry>__u32</entry>
171 <entry><structfield>type</structfield></entry>
172 <entry></entry>
173 <entry>The type of the control. See &v4l2-ctrl-type;.</entry>
174 </row>
175 <row>
176 <entry>union (anonymous)</entry>
177 <entry></entry>
178 <entry></entry>
179 <entry></entry>
180 </row>
181 <row>
182 <entry></entry>
183 <entry>__s32</entry>
184 <entry><structfield>value</structfield></entry>
185 <entry>The 32-bit value of the control for 32-bit control types.
186 This is 0 for string controls since the value of a string
187 cannot be passed using &VIDIOC-DQEVENT;.</entry>
188 </row>
189 <row>
190 <entry></entry>
191 <entry>__s64</entry>
192 <entry><structfield>value64</structfield></entry>
193 <entry>The 64-bit value of the control for 64-bit control types.</entry>
194 </row>
195 <row>
196 <entry>__u32</entry>
197 <entry><structfield>flags</structfield></entry>
198 <entry></entry>
199 <entry>The control flags. See <xref linkend="control-flags" />.</entry>
200 </row>
201 <row>
202 <entry>__s32</entry>
203 <entry><structfield>minimum</structfield></entry>
204 <entry></entry>
205 <entry>The minimum value of the control. See &v4l2-queryctrl;.</entry>
206 </row>
207 <row>
208 <entry>__s32</entry>
209 <entry><structfield>maximum</structfield></entry>
210 <entry></entry>
211 <entry>The maximum value of the control. See &v4l2-queryctrl;.</entry>
212 </row>
213 <row>
214 <entry>__s32</entry>
215 <entry><structfield>step</structfield></entry>
216 <entry></entry>
217 <entry>The step value of the control. See &v4l2-queryctrl;.</entry>
218 </row>
219 <row>
220 <entry>__s32</entry>
221 <entry><structfield>default_value</structfield></entry>
222 <entry></entry>
223 <entry>The default value value of the control. See &v4l2-queryctrl;.</entry>
224 </row>
225 </tbody>
226 </tgroup>
227 </table>
228
229 <table frame="none" pgwide="1" id="v4l2-event-frame-sync">
230 <title>struct <structname>v4l2_event_frame_sync</structname></title>
231 <tgroup cols="3">
232 &cs-str;
233 <tbody valign="top">
234 <row>
235 <entry>__u32</entry>
236 <entry><structfield>frame_sequence</structfield></entry>
237 <entry>
238 The sequence number of the frame being received.
239 </entry>
240 </row>
241 </tbody>
242 </tgroup>
243 </table>
244
245 <table pgwide="1" frame="none" id="changes-flags">
246 <title>Changes</title>
247 <tgroup cols="3">
248 &cs-def;
249 <tbody valign="top">
250 <row>
251 <entry><constant>V4L2_EVENT_CTRL_CH_VALUE</constant></entry>
252 <entry>0x0001</entry>
253 <entry>This control event was triggered because the value of the control
254 changed. Special case: if a button control is pressed, then this
255 event is sent as well, even though there is not explicit value
256 associated with a button control.</entry>
257 </row>
258 <row>
259 <entry><constant>V4L2_EVENT_CTRL_CH_FLAGS</constant></entry>
260 <entry>0x0002</entry>
261 <entry>This control event was triggered because the control flags
262 changed.</entry>
263 </row>
264 </tbody>
265 </tgroup>
266 </table>
267 </refsect1>
268 <refsect1>
269 &return-value;
270 </refsect1>
271</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
new file mode 100644
index 00000000000..cd7720d404e
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
@@ -0,0 +1,205 @@
1<refentry id="vidioc-dv-timings-cap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DV_TIMINGS_CAP</refname>
9 <refpurpose>The capabilities of the Digital Video receiver/transmitter</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_dv_timings_cap *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_DV_TIMINGS_CAP</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>To query the capabilities of the DV receiver/transmitter applications can call
58this ioctl and the driver will fill in the structure. Note that drivers may return
59different values after switching the video input or output.</para>
60
61 <table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
62 <title>struct <structname>v4l2_bt_timings_cap</structname></title>
63 <tgroup cols="3">
64 &cs-str;
65 <tbody valign="top">
66 <row>
67 <entry>__u32</entry>
68 <entry><structfield>min_width</structfield></entry>
69 <entry>Minimum width of the active video in pixels.</entry>
70 </row>
71 <row>
72 <entry>__u32</entry>
73 <entry><structfield>max_width</structfield></entry>
74 <entry>Maximum width of the active video in pixels.</entry>
75 </row>
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>min_height</structfield></entry>
79 <entry>Minimum height of the active video in lines.</entry>
80 </row>
81 <row>
82 <entry>__u32</entry>
83 <entry><structfield>max_height</structfield></entry>
84 <entry>Maximum height of the active video in lines.</entry>
85 </row>
86 <row>
87 <entry>__u64</entry>
88 <entry><structfield>min_pixelclock</structfield></entry>
89 <entry>Minimum pixelclock frequency in Hz.</entry>
90 </row>
91 <row>
92 <entry>__u64</entry>
93 <entry><structfield>max_pixelclock</structfield></entry>
94 <entry>Maximum pixelclock frequency in Hz.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>standards</structfield></entry>
99 <entry>The video standard(s) supported by the hardware.
100 See <xref linkend="dv-bt-standards"/> for a list of standards.</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>capabilities</structfield></entry>
105 <entry>Several flags giving more information about the capabilities.
106 See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags.
107 </entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>reserved</structfield>[16]</entry>
112 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
113 </row>
114 </tbody>
115 </tgroup>
116 </table>
117
118 <table pgwide="1" frame="none" id="v4l2-dv-timings-cap">
119 <title>struct <structname>v4l2_dv_timings_cap</structname></title>
120 <tgroup cols="4">
121 &cs-str;
122 <tbody valign="top">
123 <row>
124 <entry>__u32</entry>
125 <entry><structfield>type</structfield></entry>
126 <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
127 </row>
128 <row>
129 <entry>__u32</entry>
130 <entry><structfield>reserved</structfield>[3]</entry>
131 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
132 </row>
133 <row>
134 <entry>union</entry>
135 <entry><structfield></structfield></entry>
136 <entry></entry>
137 </row>
138 <row>
139 <entry></entry>
140 <entry>&v4l2-bt-timings-cap;</entry>
141 <entry><structfield>bt</structfield></entry>
142 <entry>BT.656/1120 timings capabilities of the hardware.</entry>
143 </row>
144 <row>
145 <entry></entry>
146 <entry>__u32</entry>
147 <entry><structfield>raw_data</structfield>[32]</entry>
148 <entry></entry>
149 </row>
150 </tbody>
151 </tgroup>
152 </table>
153
154 <table pgwide="1" frame="none" id="dv-bt-cap-capabilities">
155 <title>DV BT Timing capabilities</title>
156 <tgroup cols="2">
157 &cs-str;
158 <tbody valign="top">
159 <row>
160 <entry>Flag</entry>
161 <entry>Description</entry>
162 </row>
163 <row>
164 <entry></entry>
165 <entry></entry>
166 </row>
167 <row>
168 <entry>V4L2_DV_BT_CAP_INTERLACED</entry>
169 <entry>Interlaced formats are supported.
170 </entry>
171 </row>
172 <row>
173 <entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry>
174 <entry>Progressive formats are supported.
175 </entry>
176 </row>
177 <row>
178 <entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry>
179 <entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT)
180or the 'Secondary GTF' curve (GTF).
181 </entry>
182 </row>
183 <row>
184 <entry>V4L2_DV_BT_CAP_CUSTOM</entry>
185 <entry>Can support non-standard timings, i.e. timings not belonging to the
186standards set in the <structfield>standards</structfield> field.
187 </entry>
188 </row>
189 </tbody>
190 </tgroup>
191 </table>
192 </refsect1>
193
194 <refsect1>
195 &return-value;
196 </refsect1>
197</refentry>
198
199<!--
200Local Variables:
201mode: sgml
202sgml-parent-document: "v4l2.sgml"
203indent-tabs-mode: nil
204End:
205-->
diff --git a/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
index b0dde943825..0619ca5d2d3 100644
--- a/Documentation/DocBook/v4l/vidioc-encoder-cmd.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
@@ -49,13 +49,6 @@
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 51
52 <note>
53 <title>Experimental</title>
54
55 <para>This is an <link linkend="experimental">experimental</link>
56interface and may change in the future.</para>
57 </note>
58
59 <para>These ioctls control an audio/video (usually MPEG-) encoder. 52 <para>These ioctls control an audio/video (usually MPEG-) encoder.
60<constant>VIDIOC_ENCODER_CMD</constant> sends a command to the 53<constant>VIDIOC_ENCODER_CMD</constant> sends a command to the
61encoder, <constant>VIDIOC_TRY_ENCODER_CMD</constant> can be used to 54encoder, <constant>VIDIOC_TRY_ENCODER_CMD</constant> can be used to
@@ -74,15 +67,16 @@ only used by the STOP command and contains one bit: If the
74encoding will continue until the end of the current <wordasword>Group 67encoding will continue until the end of the current <wordasword>Group
75Of Pictures</wordasword>, otherwise it will stop immediately.</para> 68Of Pictures</wordasword>, otherwise it will stop immediately.</para>
76 69
77 <para>A <function>read</function>() call sends a START command to 70 <para>A <function>read</function>() or &VIDIOC-STREAMON; call sends an implicit
78the encoder if it has not been started yet. After a STOP command, 71START command to the encoder if it has not been started yet. After a STOP command,
79<function>read</function>() calls will read the remaining data 72<function>read</function>() calls will read the remaining data
80buffered by the driver. When the buffer is empty, 73buffered by the driver. When the buffer is empty,
81<function>read</function>() will return zero and the next 74<function>read</function>() will return zero and the next
82<function>read</function>() call will restart the encoder.</para> 75<function>read</function>() call will restart the encoder.</para>
83 76
84 <para>A <function>close</function>() call sends an immediate STOP 77 <para>A <function>close</function>() or &VIDIOC-STREAMOFF; call of a streaming
85to the encoder, and all buffered data is discarded.</para> 78file descriptor sends an implicit immediate STOP to the encoder, and all buffered
79data is discarded.</para>
86 80
87 <para>These ioctls are optional, not all drivers may support 81 <para>These ioctls are optional, not all drivers may support
88them. They were introduced in Linux 2.6.21.</para> 82them. They were introduced in Linux 2.6.21.</para>
@@ -180,8 +174,7 @@ Pictures</wordasword>, rather than immediately.</entry>
180 <varlistentry> 174 <varlistentry>
181 <term><errorcode>EINVAL</errorcode></term> 175 <term><errorcode>EINVAL</errorcode></term>
182 <listitem> 176 <listitem>
183 <para>The driver does not support this ioctl, or the 177 <para>The <structfield>cmd</structfield> field is invalid.</para>
184<structfield>cmd</structfield> field is invalid.</para>
185 </listitem> 178 </listitem>
186 </varlistentry> 179 </varlistentry>
187 <varlistentry> 180 <varlistentry>
@@ -194,11 +187,3 @@ the encoder was not running.</para>
194 </variablelist> 187 </variablelist>
195 </refsect1> 188 </refsect1>
196</refentry> 189</refentry>
197
198<!--
199Local Variables:
200mode: sgml
201sgml-parent-document: "v4l2.sgml"
202indent-tabs-mode: nil
203End:
204-->
diff --git a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
index 1d31427edd1..fced5fb0dbf 100644
--- a/Documentation/DocBook/v4l/vidioc-enum-dv-presets.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
@@ -48,6 +48,10 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
52 New drivers and applications should use &VIDIOC-ENUM-DV-TIMINGS; instead.
53 </para>
54
51 <para>To query the attributes of a DV preset, applications initialize the 55 <para>To query the attributes of a DV preset, applications initialize the
52<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset; 56<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset;
53and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this 57and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this
@@ -225,14 +229,12 @@ intended for the user.</entry>
225is out of bounds.</para> 229is out of bounds.</para>
226 </listitem> 230 </listitem>
227 </varlistentry> 231 </varlistentry>
232 <varlistentry>
233 <term><errorcode>ENODATA</errorcode></term>
234 <listitem>
235 <para>Digital video presets are not supported for this input or output.</para>
236 </listitem>
237 </varlistentry>
228 </variablelist> 238 </variablelist>
229 </refsect1> 239 </refsect1>
230</refentry> 240</refentry>
231
232<!--
233Local Variables:
234mode: sgml
235sgml-parent-document: "v4l2.sgml"
236indent-tabs-mode: nil
237End:
238-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
new file mode 100644
index 00000000000..b3e17c1dfaf
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
@@ -0,0 +1,125 @@
1<refentry id="vidioc-enum-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_DV_TIMINGS</refname>
9 <refpurpose>Enumerate supported Digital Video timings</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_enum_dv_timings *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_ENUM_DV_TIMINGS</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>While some DV receivers or transmitters support a wide range of timings, others
58support only a limited number of timings. With this ioctl applications can enumerate a list
59of known supported timings. Call &VIDIOC-DV-TIMINGS-CAP; to check if it also supports other
60standards or even custom timings that are not in this list.</para>
61
62 <para>To query the available timings, applications initialize the
63<structfield>index</structfield> field and zero the reserved array of &v4l2-enum-dv-timings;
64and call the <constant>VIDIOC_ENUM_DV_TIMINGS</constant> ioctl with a pointer to this
65structure. Drivers fill the rest of the structure or return an
66&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
67applications shall begin at index zero, incrementing by one until the
68driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
69different set of DV timings after switching the video input or
70output.</para>
71
72 <table pgwide="1" frame="none" id="v4l2-enum-dv-timings">
73 <title>struct <structname>v4l2_enum_dv_timings</structname></title>
74 <tgroup cols="3">
75 &cs-str;
76 <tbody valign="top">
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>index</structfield></entry>
80 <entry>Number of the DV timings, set by the
81application.</entry>
82 </row>
83 <row>
84 <entry>__u32</entry>
85 <entry><structfield>reserved</structfield>[3]</entry>
86 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
87 </row>
88 <row>
89 <entry>&v4l2-dv-timings;</entry>
90 <entry><structfield>timings</structfield></entry>
91 <entry>The timings.</entry>
92 </row>
93 </tbody>
94 </tgroup>
95 </table>
96 </refsect1>
97
98 <refsect1>
99 &return-value;
100
101 <variablelist>
102 <varlistentry>
103 <term><errorcode>EINVAL</errorcode></term>
104 <listitem>
105 <para>The &v4l2-enum-dv-timings; <structfield>index</structfield>
106is out of bounds.</para>
107 </listitem>
108 </varlistentry>
109 <varlistentry>
110 <term><errorcode>ENODATA</errorcode></term>
111 <listitem>
112 <para>Digital video presets are not supported for this input or output.</para>
113 </listitem>
114 </varlistentry>
115 </variablelist>
116 </refsect1>
117</refentry>
118
119<!--
120Local Variables:
121mode: sgml
122sgml-parent-document: "v4l2.sgml"
123indent-tabs-mode: nil
124End:
125-->
diff --git a/Documentation/DocBook/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
index 71d373b6d36..f8dfeed34fc 100644
--- a/Documentation/DocBook/v4l/vidioc-enum-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
@@ -58,6 +58,9 @@ structure. Drivers fill the rest of the structure or return an
58incrementing by one until <errorcode>EINVAL</errorcode> is 58incrementing by one until <errorcode>EINVAL</errorcode> is
59returned.</para> 59returned.</para>
60 60
61 <para>Note that after switching input or output the list of enumerated image
62formats may be different.</para>
63
61 <table pgwide="1" frame="none" id="v4l2-fmtdesc"> 64 <table pgwide="1" frame="none" id="v4l2-fmtdesc">
62 <title>struct <structname>v4l2_fmtdesc</structname></title> 65 <title>struct <structname>v4l2_fmtdesc</structname></title>
63 <tgroup cols="3"> 66 <tgroup cols="3">
@@ -71,17 +74,15 @@ the application. This is in no way related to the <structfield>
71pixelformat</structfield> field.</entry> 74pixelformat</structfield> field.</entry>
72 </row> 75 </row>
73 <row> 76 <row>
74 <entry>&v4l2-buf-type;</entry> 77 <entry>__u32</entry>
75 <entry><structfield>type</structfield></entry> 78 <entry><structfield>type</structfield></entry>
76 <entry>Type of the data stream, set by the application. 79 <entry>Type of the data stream, set by the application.
77Only these types are valid here: 80Only these types are valid here:
78<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, 81<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
79<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>, 82<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>,
80<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 83<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, 84<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and
82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 85<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
83defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
84and higher.</entry>
85 </row> 86 </row>
86 <row> 87 <row>
87 <entry>__u32</entry> 88 <entry>__u32</entry>
@@ -156,11 +157,3 @@ bounds.</para>
156 </variablelist> 157 </variablelist>
157 </refsect1> 158 </refsect1>
158</refentry> 159</refentry>
159
160<!--
161Local Variables:
162mode: sgml
163sgml-parent-document: "v4l2.sgml"
164indent-tabs-mode: nil
165End:
166-->
diff --git a/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml b/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml
index 3c216e113a5..5fd72c4c33e 100644
--- a/Documentation/DocBook/v4l/vidioc-enum-frameintervals.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml
@@ -254,17 +254,6 @@ enumerated.</entry>
254 254
255 <refsect1> 255 <refsect1>
256 &return-value; 256 &return-value;
257
258 <para>See the description section above for a list of return
259values that <varname>errno</varname> can have.</para>
260 </refsect1> 257 </refsect1>
261 258
262</refentry> 259</refentry>
263
264<!--
265Local Variables:
266mode: sgml
267sgml-parent-document: "v4l2.sgml"
268indent-tabs-mode: nil
269End:
270-->
diff --git a/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml b/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml
index 6afa4542c81..a78454b5abc 100644
--- a/Documentation/DocBook/v4l/vidioc-enum-framesizes.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml
@@ -50,13 +50,6 @@ and pixel format and receives a frame width and height.</para>
50 <refsect1> 50 <refsect1>
51 <title>Description</title> 51 <title>Description</title>
52 52
53 <note>
54 <title>Experimental</title>
55
56 <para>This is an <link linkend="experimental">experimental</link>
57interface and may change in the future.</para>
58 </note>
59
60 <para>This ioctl allows applications to enumerate all frame sizes 53 <para>This ioctl allows applications to enumerate all frame sizes
61(&ie; width and height in pixels) that the device supports for the 54(&ie; width and height in pixels) that the device supports for the
62given pixel format.</para> 55given pixel format.</para>
@@ -267,16 +260,5 @@ application should zero out all members except for the
267 260
268 <refsect1> 261 <refsect1>
269 &return-value; 262 &return-value;
270
271 <para>See the description section above for a list of return
272values that <varname>errno</varname> can have.</para>
273 </refsect1> 263 </refsect1>
274</refentry> 264</refentry>
275
276<!--
277Local Variables:
278mode: sgml
279sgml-parent-document: "v4l2.sgml"
280indent-tabs-mode: nil
281End:
282-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml b/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
new file mode 100644
index 00000000000..6541ba0175e
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
@@ -0,0 +1,179 @@
1<refentry id="vidioc-enum-freq-bands">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_FREQ_BANDS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_FREQ_BANDS</refname>
9 <refpurpose>Enumerate supported frequency bands</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_frequency_band
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_ENUM_FREQ_BANDS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>Enumerates the frequency bands that a tuner or modulator supports.
59To do this applications initialize the <structfield>tuner</structfield>,
60<structfield>type</structfield> and <structfield>index</structfield> fields,
61and zero out the <structfield>reserved</structfield> array of a &v4l2-frequency-band; and
62call the <constant>VIDIOC_ENUM_FREQ_BANDS</constant> ioctl with a pointer
63to this structure.</para>
64
65 <para>This ioctl is supported if the <constant>V4L2_TUNER_CAP_FREQ_BANDS</constant> capability
66 of the corresponding tuner/modulator is set.</para>
67
68 <table pgwide="1" frame="none" id="v4l2-frequency-band">
69 <title>struct <structname>v4l2_frequency_band</structname></title>
70 <tgroup cols="3">
71 &cs-str;
72 <tbody valign="top">
73 <row>
74 <entry>__u32</entry>
75 <entry><structfield>tuner</structfield></entry>
76 <entry>The tuner or modulator index number. This is the
77same value as in the &v4l2-input; <structfield>tuner</structfield>
78field and the &v4l2-tuner; <structfield>index</structfield> field, or
79the &v4l2-output; <structfield>modulator</structfield> field and the
80&v4l2-modulator; <structfield>index</structfield> field.</entry>
81 </row>
82 <row>
83 <entry>__u32</entry>
84 <entry><structfield>type</structfield></entry>
85 <entry>The tuner type. This is the same value as in the
86&v4l2-tuner; <structfield>type</structfield> field. The type must be set
87to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
88device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
89for all others. Set this field to <constant>V4L2_TUNER_RADIO</constant> for
90modulators (currently only radio modulators are supported).
91See <xref linkend="v4l2-tuner-type" /></entry>
92 </row>
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>index</structfield></entry>
96 <entry>Identifies the frequency band, set by the application.</entry>
97 </row>
98 <row>
99 <entry>__u32</entry>
100 <entry><structfield>capability</structfield></entry>
101 <entry spanname="hspan">The tuner/modulator capability flags for
102this frequency band, see <xref linkend="tuner-capability" />. The <constant>V4L2_TUNER_CAP_LOW</constant>
103capability must be the same for all frequency bands of the selected tuner/modulator.
104So either all bands have that capability set, or none of them have that capability.</entry>
105 </row>
106 <row>
107 <entry>__u32</entry>
108 <entry><structfield>rangelow</structfield></entry>
109 <entry spanname="hspan">The lowest tunable frequency in
110units of 62.5 kHz, or if the <structfield>capability</structfield>
111flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
112Hz, for this frequency band.</entry>
113 </row>
114 <row>
115 <entry>__u32</entry>
116 <entry><structfield>rangehigh</structfield></entry>
117 <entry spanname="hspan">The highest tunable frequency in
118units of 62.5 kHz, or if the <structfield>capability</structfield>
119flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
120Hz, for this frequency band.</entry>
121 </row>
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>modulation</structfield></entry>
125 <entry spanname="hspan">The supported modulation systems of this frequency band.
126 See <xref linkend="band-modulation" />. Note that currently only one
127 modulation system per frequency band is supported. More work will need to
128 be done if multiple modulation systems are possible. Contact the
129 linux-media mailing list (&v4l-ml;) if you need that functionality.</entry>
130 </row>
131 <row>
132 <entry>__u32</entry>
133 <entry><structfield>reserved</structfield>[9]</entry>
134 <entry>Reserved for future extensions. Applications and drivers
135 must set the array to zero.</entry>
136 </row>
137 </tbody>
138 </tgroup>
139 </table>
140
141 <table pgwide="1" frame="none" id="band-modulation">
142 <title>Band Modulation Systems</title>
143 <tgroup cols="3">
144 &cs-def;
145 <tbody valign="top">
146 <row>
147 <entry><constant>V4L2_BAND_MODULATION_VSB</constant></entry>
148 <entry>0x02</entry>
149 <entry>Vestigial Sideband modulation, used for analog TV.</entry>
150 </row>
151 <row>
152 <entry><constant>V4L2_BAND_MODULATION_FM</constant></entry>
153 <entry>0x04</entry>
154 <entry>Frequency Modulation, commonly used for analog radio.</entry>
155 </row>
156 <row>
157 <entry><constant>V4L2_BAND_MODULATION_AM</constant></entry>
158 <entry>0x08</entry>
159 <entry>Amplitude Modulation, commonly used for analog radio.</entry>
160 </row>
161 </tbody>
162 </tgroup>
163 </table>
164 </refsect1>
165
166 <refsect1>
167 &return-value;
168
169 <variablelist>
170 <varlistentry>
171 <term><errorcode>EINVAL</errorcode></term>
172 <listitem>
173 <para>The <structfield>tuner</structfield> or <structfield>index</structfield>
174is out of bounds or the <structfield>type</structfield> field is wrong.</para>
175 </listitem>
176 </varlistentry>
177 </variablelist>
178 </refsect1>
179</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-enumaudio.xml b/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml
index 9ae8f2d3a96..ea816ab2e49 100644
--- a/Documentation/DocBook/v4l/vidioc-enumaudio.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml
@@ -68,19 +68,9 @@ until the driver returns <errorcode>EINVAL</errorcode>.</para>
68 <varlistentry> 68 <varlistentry>
69 <term><errorcode>EINVAL</errorcode></term> 69 <term><errorcode>EINVAL</errorcode></term>
70 <listitem> 70 <listitem>
71 <para>The number of the audio input is out of bounds, or 71 <para>The number of the audio input is out of bounds.</para>
72there are no audio inputs at all and this ioctl is not
73supported.</para>
74 </listitem> 72 </listitem>
75 </varlistentry> 73 </varlistentry>
76 </variablelist> 74 </variablelist>
77 </refsect1> 75 </refsect1>
78</refentry> 76</refentry>
79
80<!--
81Local Variables:
82mode: sgml
83sgml-parent-document: "v4l2.sgml"
84indent-tabs-mode: nil
85End:
86-->
diff --git a/Documentation/DocBook/v4l/vidioc-enumaudioout.xml b/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml
index d3d7c0ab17b..2e87cedb0d3 100644
--- a/Documentation/DocBook/v4l/vidioc-enumaudioout.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml
@@ -71,19 +71,9 @@ signal to a sound card are not audio outputs in this sense.</para>
71 <varlistentry> 71 <varlistentry>
72 <term><errorcode>EINVAL</errorcode></term> 72 <term><errorcode>EINVAL</errorcode></term>
73 <listitem> 73 <listitem>
74 <para>The number of the audio output is out of bounds, or 74 <para>The number of the audio output is out of bounds.</para>
75there are no audio outputs at all and this ioctl is not
76supported.</para>
77 </listitem> 75 </listitem>
78 </varlistentry> 76 </varlistentry>
79 </variablelist> 77 </variablelist>
80 </refsect1> 78 </refsect1>
81</refentry> 79</refentry>
82
83<!--
84Local Variables:
85mode: sgml
86sgml-parent-document: "v4l2.sgml"
87indent-tabs-mode: nil
88End:
89-->
diff --git a/Documentation/DocBook/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
index 476fe1d2bba..3c9a81305ad 100644
--- a/Documentation/DocBook/v4l/vidioc-enuminput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
@@ -283,9 +283,9 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
283 <entry>This input supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry> 283 <entry>This input supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry>
284 </row> 284 </row>
285 <row> 285 <row>
286 <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry> 286 <entry><constant>V4L2_IN_CAP_DV_TIMINGS</constant></entry>
287 <entry>0x00000002</entry> 287 <entry>0x00000002</entry>
288 <entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> 288 <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
289 </row> 289 </row>
290 <row> 290 <row>
291 <entry><constant>V4L2_IN_CAP_STD</constant></entry> 291 <entry><constant>V4L2_IN_CAP_STD</constant></entry>
@@ -311,11 +311,3 @@ out of bounds.</para>
311 </variablelist> 311 </variablelist>
312 </refsect1> 312 </refsect1>
313</refentry> 313</refentry>
314
315<!--
316Local Variables:
317mode: sgml
318sgml-parent-document: "v4l2.sgml"
319indent-tabs-mode: nil
320End:
321-->
diff --git a/Documentation/DocBook/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
index a281d26a195..f4ab0798545 100644
--- a/Documentation/DocBook/v4l/vidioc-enumoutput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
@@ -168,9 +168,9 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
168 <entry>This output supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry> 168 <entry>This output supports setting DV presets by using VIDIOC_S_DV_PRESET.</entry>
169 </row> 169 </row>
170 <row> 170 <row>
171 <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry> 171 <entry><constant>V4L2_OUT_CAP_DV_TIMINGS</constant></entry>
172 <entry>0x00000002</entry> 172 <entry>0x00000002</entry>
173 <entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> 173 <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
174 </row> 174 </row>
175 <row> 175 <row>
176 <entry><constant>V4L2_OUT_CAP_STD</constant></entry> 176 <entry><constant>V4L2_OUT_CAP_STD</constant></entry>
@@ -196,11 +196,3 @@ is out of bounds.</para>
196 </variablelist> 196 </variablelist>
197 </refsect1> 197 </refsect1>
198</refentry> 198</refentry>
199
200<!--
201Local Variables:
202mode: sgml
203sgml-parent-document: "v4l2.sgml"
204indent-tabs-mode: nil
205End:
206-->
diff --git a/Documentation/DocBook/v4l/vidioc-enumstd.xml b/Documentation/DocBook/media/v4l/vidioc-enumstd.xml
index 95803fe2c8e..8065099401d 100644
--- a/Documentation/DocBook/v4l/vidioc-enumstd.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumstd.xml
@@ -378,14 +378,12 @@ system)</para></footnote></para></entry>
378is out of bounds.</para> 378is out of bounds.</para>
379 </listitem> 379 </listitem>
380 </varlistentry> 380 </varlistentry>
381 <varlistentry>
382 <term><errorcode>ENODATA</errorcode></term>
383 <listitem>
384 <para>Standard video timings are not supported for this input or output.</para>
385 </listitem>
386 </varlistentry>
381 </variablelist> 387 </variablelist>
382 </refsect1> 388 </refsect1>
383</refentry> 389</refentry>
384
385<!--
386Local Variables:
387mode: sgml
388sgml-parent-document: "v4l2.sgml"
389indent-tabs-mode: nil
390End:
391-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-expbuf.xml b/Documentation/DocBook/media/v4l/vidioc-expbuf.xml
new file mode 100644
index 00000000000..72dfbd20a80
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-expbuf.xml
@@ -0,0 +1,212 @@
1<refentry id="vidioc-expbuf">
2
3 <refmeta>
4 <refentrytitle>ioctl VIDIOC_EXPBUF</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_EXPBUF</refname>
10 <refpurpose>Export a buffer as a DMABUF file descriptor.</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_exportbuffer *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_EXPBUF</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58<para>This ioctl is an extension to the <link linkend="mmap">memory
59mapping</link> I/O method, therefore it is available only for
60<constant>V4L2_MEMORY_MMAP</constant> buffers. It can be used to export a
61buffer as a DMABUF file at any time after buffers have been allocated with the
62&VIDIOC-REQBUFS; ioctl.</para>
63
64<para> To export a buffer, applications fill &v4l2-exportbuffer;. The
65<structfield> type </structfield> field is set to the same buffer type as was
66previously used with &v4l2-requestbuffers;<structfield> type </structfield>.
67Applications must also set the <structfield> index </structfield> field. Valid
68index numbers range from zero to the number of buffers allocated with
69&VIDIOC-REQBUFS; (&v4l2-requestbuffers;<structfield> count </structfield>)
70minus one. For the multi-planar API, applications set the <structfield> plane
71</structfield> field to the index of the plane to be exported. Valid planes
72range from zero to the maximal number of valid planes for the currently active
73format. For the single-planar API, applications must set <structfield> plane
74</structfield> to zero. Additional flags may be posted in the <structfield>
75flags </structfield> field. Refer to a manual for open() for details.
76Currently only O_CLOEXEC is supported. All other fields must be set to zero.
77In the case of multi-planar API, every plane is exported separately using
78multiple <constant> VIDIOC_EXPBUF </constant> calls. </para>
79
80<para> After calling <constant>VIDIOC_EXPBUF</constant> the <structfield> fd
81</structfield> field will be set by a driver. This is a DMABUF file
82descriptor. The application may pass it to other DMABUF-aware devices. Refer to
83<link linkend="dmabuf">DMABUF importing</link> for details about importing
84DMABUF files into V4L2 nodes. It is recommended to close a DMABUF file when it
85is no longer used to allow the associated memory to be reclaimed. </para>
86
87 </refsect1>
88 <refsect1>
89 <section>
90 <title>Examples</title>
91
92 <example>
93 <title>Exporting a buffer.</title>
94 <programlisting>
95int buffer_export(int v4lfd, &v4l2-buf-type; bt, int index, int *dmafd)
96{
97 &v4l2-exportbuffer; expbuf;
98
99 memset(&amp;expbuf, 0, sizeof(expbuf));
100 expbuf.type = bt;
101 expbuf.index = index;
102 if (ioctl(v4lfd, &VIDIOC-EXPBUF;, &amp;expbuf) == -1) {
103 perror("VIDIOC_EXPBUF");
104 return -1;
105 }
106
107 *dmafd = expbuf.fd;
108
109 return 0;
110}
111 </programlisting>
112 </example>
113
114 <example>
115 <title>Exporting a buffer using the multi-planar API.</title>
116 <programlisting>
117int buffer_export_mp(int v4lfd, &v4l2-buf-type; bt, int index,
118 int dmafd[], int n_planes)
119{
120 int i;
121
122 for (i = 0; i &lt; n_planes; ++i) {
123 &v4l2-exportbuffer; expbuf;
124
125 memset(&amp;expbuf, 0, sizeof(expbuf));
126 expbuf.type = bt;
127 expbuf.index = index;
128 expbuf.plane = i;
129 if (ioctl(v4lfd, &VIDIOC-EXPBUF;, &amp;expbuf) == -1) {
130 perror("VIDIOC_EXPBUF");
131 while (i)
132 close(dmafd[--i]);
133 return -1;
134 }
135 dmafd[i] = expbuf.fd;
136 }
137
138 return 0;
139}
140 </programlisting>
141 </example>
142 </section>
143 </refsect1>
144
145 <refsect1>
146 <table pgwide="1" frame="none" id="v4l2-exportbuffer">
147 <title>struct <structname>v4l2_exportbuffer</structname></title>
148 <tgroup cols="3">
149 &cs-str;
150 <tbody valign="top">
151 <row>
152 <entry>__u32</entry>
153 <entry><structfield>type</structfield></entry>
154 <entry>Type of the buffer, same as &v4l2-format;
155<structfield>type</structfield> or &v4l2-requestbuffers;
156<structfield>type</structfield>, set by the application. See <xref
157linkend="v4l2-buf-type" /></entry>
158 </row>
159 <row>
160 <entry>__u32</entry>
161 <entry><structfield>index</structfield></entry>
162 <entry>Number of the buffer, set by the application. This field is
163only used for <link linkend="mmap">memory mapping</link> I/O and can range from
164zero to the number of buffers allocated with the &VIDIOC-REQBUFS; and/or
165&VIDIOC-CREATE-BUFS; ioctls. </entry>
166 </row>
167 <row>
168 <entry>__u32</entry>
169 <entry><structfield>plane</structfield></entry>
170 <entry>Index of the plane to be exported when using the
171multi-planar API. Otherwise this value must be set to zero. </entry>
172 </row>
173 <row>
174 <entry>__u32</entry>
175 <entry><structfield>flags</structfield></entry>
176 <entry>Flags for the newly created file, currently only <constant>
177O_CLOEXEC </constant> is supported, refer to the manual of open() for more
178details.</entry>
179 </row>
180 <row>
181 <entry>__s32</entry>
182 <entry><structfield>fd</structfield></entry>
183 <entry>The DMABUF file descriptor associated with a buffer. Set by
184 the driver.</entry>
185 </row>
186 <row>
187 <entry>__u32</entry>
188 <entry><structfield>reserved[11]</structfield></entry>
189 <entry>Reserved field for future use. Must be set to zero.</entry>
190 </row>
191 </tbody>
192 </tgroup>
193 </table>
194
195 </refsect1>
196
197 <refsect1>
198 &return-value;
199 <variablelist>
200 <varlistentry>
201 <term><errorcode>EINVAL</errorcode></term>
202 <listitem>
203 <para>A queue is not in MMAP mode or DMABUF exporting is not
204supported or <structfield> flags </structfield> or <structfield> type
205</structfield> or <structfield> index </structfield> or <structfield> plane
206</structfield> fields are invalid.</para>
207 </listitem>
208 </varlistentry>
209 </variablelist>
210 </refsect1>
211
212</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-g-audio.xml b/Documentation/DocBook/media/v4l/vidioc-g-audio.xml
index 65361a8c2b0..d7bb9b3738f 100644
--- a/Documentation/DocBook/v4l/vidioc-g-audio.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-audio.xml
@@ -164,25 +164,9 @@ tuner.</entry>
164 <listitem> 164 <listitem>
165 <para>No audio inputs combine with the current video input, 165 <para>No audio inputs combine with the current video input,
166or the number of the selected audio input is out of bounds or it does 166or the number of the selected audio input is out of bounds or it does
167not combine, or there are no audio inputs at all and the ioctl is not 167not combine.</para>
168supported.</para>
169 </listitem>
170 </varlistentry>
171 <varlistentry>
172 <term><errorcode>EBUSY</errorcode></term>
173 <listitem>
174 <para>I/O is in progress, the input cannot be
175switched.</para>
176 </listitem> 168 </listitem>
177 </varlistentry> 169 </varlistentry>
178 </variablelist> 170 </variablelist>
179 </refsect1> 171 </refsect1>
180</refentry> 172</refentry>
181
182<!--
183Local Variables:
184mode: sgml
185sgml-parent-document: "v4l2.sgml"
186indent-tabs-mode: nil
187End:
188-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-audioout.xml b/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml
index 3632730c5c6..200a2704a97 100644
--- a/Documentation/DocBook/v4l/vidioc-g-audioout.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml
@@ -130,25 +130,9 @@ applications must set the array to zero.</entry>
130 <listitem> 130 <listitem>
131 <para>No audio outputs combine with the current video 131 <para>No audio outputs combine with the current video
132output, or the number of the selected audio output is out of bounds or 132output, or the number of the selected audio output is out of bounds or
133it does not combine, or there are no audio outputs at all and the 133it does not combine.</para>
134ioctl is not supported.</para>
135 </listitem>
136 </varlistentry>
137 <varlistentry>
138 <term><errorcode>EBUSY</errorcode></term>
139 <listitem>
140 <para>I/O is in progress, the output cannot be
141switched.</para>
142 </listitem> 134 </listitem>
143 </varlistentry> 135 </varlistentry>
144 </variablelist> 136 </variablelist>
145 </refsect1> 137 </refsect1>
146</refentry> 138</refentry>
147
148<!--
149Local Variables:
150mode: sgml
151sgml-parent-document: "v4l2.sgml"
152indent-tabs-mode: nil
153End:
154-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
index d235b1dedbe..75c6a93de3c 100644
--- a/Documentation/DocBook/v4l/vidioc-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
@@ -100,14 +100,12 @@ changed and <constant>VIDIOC_S_CROP</constant> returns the
100 &cs-str; 100 &cs-str;
101 <tbody valign="top"> 101 <tbody valign="top">
102 <row> 102 <row>
103 <entry>&v4l2-buf-type;</entry> 103 <entry>__u32</entry>
104 <entry><structfield>type</structfield></entry> 104 <entry><structfield>type</structfield></entry>
105 <entry>Type of the data stream, set by the application. 105 <entry>Type of the data stream, set by the application.
106Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, 106Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
107<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 107<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> and
108<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 108<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
109defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
110and higher.</entry>
111 </row> 109 </row>
112 <row> 110 <row>
113 <entry>&v4l2-rect;</entry> 111 <entry>&v4l2-rect;</entry>
@@ -122,22 +120,5 @@ for &v4l2-cropcap; <structfield>bounds</structfield> is used.</entry>
122 120
123 <refsect1> 121 <refsect1>
124 &return-value; 122 &return-value;
125
126 <variablelist>
127 <varlistentry>
128 <term><errorcode>EINVAL</errorcode></term>
129 <listitem>
130 <para>Cropping is not supported.</para>
131 </listitem>
132 </varlistentry>
133 </variablelist>
134 </refsect1> 123 </refsect1>
135</refentry> 124</refentry>
136
137<!--
138Local Variables:
139mode: sgml
140sgml-parent-document: "v4l2.sgml"
141indent-tabs-mode: nil
142End:
143-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-ctrl.xml b/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml
index 8b5e6ff7f3d..12b1d0503e2 100644
--- a/Documentation/DocBook/v4l/vidioc-g-ctrl.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml
@@ -117,14 +117,13 @@ because another applications took over control of the device function
117this control belongs to.</para> 117this control belongs to.</para>
118 </listitem> 118 </listitem>
119 </varlistentry> 119 </varlistentry>
120 <varlistentry>
121 <term><errorcode>EACCES</errorcode></term>
122 <listitem>
123 <para>Attempt to set a read-only control or to get a
124 write-only control.</para>
125 </listitem>
126 </varlistentry>
120 </variablelist> 127 </variablelist>
121 </refsect1> 128 </refsect1>
122</refentry> 129</refentry>
123
124<!--
125Local Variables:
126mode: sgml
127sgml-parent-document: "v4l2.sgml"
128indent-tabs-mode: nil
129End:
130-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
index d733721a751..b9ea37634f6 100644
--- a/Documentation/DocBook/v4l/vidioc-g-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
@@ -48,6 +48,12 @@
48 48
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51
52 <para>These ioctls are <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-G-DV-TIMINGS; and &VIDIOC-S-DV-TIMINGS;
54 instead.
55 </para>
56
51 <para>To query and select the current DV preset, applications 57 <para>To query and select the current DV preset, applications
52use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant> 58use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant>
53ioctls which take a pointer to a &v4l2-dv-preset; type as argument. 59ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
@@ -72,6 +78,12 @@ If the preset is not supported, it returns an &EINVAL; </para>
72 </listitem> 78 </listitem>
73 </varlistentry> 79 </varlistentry>
74 <varlistentry> 80 <varlistentry>
81 <term><errorcode>ENODATA</errorcode></term>
82 <listitem>
83 <para>Digital video presets are not supported for this input or output.</para>
84 </listitem>
85 </varlistentry>
86 <varlistentry>
75 <term><errorcode>EBUSY</errorcode></term> 87 <term><errorcode>EBUSY</errorcode></term>
76 <listitem> 88 <listitem>
77 <para>The device is busy and therefore can not change the preset.</para> 89 <para>The device is busy and therefore can not change the preset.</para>
@@ -97,14 +109,5 @@ If the preset is not supported, it returns an &EINVAL; </para>
97 </tbody> 109 </tbody>
98 </tgroup> 110 </tgroup>
99 </table> 111 </table>
100
101 </refsect1> 112 </refsect1>
102</refentry> 113</refentry>
103
104<!--
105Local Variables:
106mode: sgml
107sgml-parent-document: "v4l2.sgml"
108indent-tabs-mode: nil
109End:
110-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index d5ec6abf0ce..72369707bd7 100644
--- a/Documentation/DocBook/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -7,7 +7,7 @@
7 <refnamediv> 7 <refnamediv>
8 <refname>VIDIOC_G_DV_TIMINGS</refname> 8 <refname>VIDIOC_G_DV_TIMINGS</refname>
9 <refname>VIDIOC_S_DV_TIMINGS</refname> 9 <refname>VIDIOC_S_DV_TIMINGS</refname>
10 <refpurpose>Get or set custom DV timings for input or output</refpurpose> 10 <refpurpose>Get or set DV timings for input or output</refpurpose>
11 </refnamediv> 11 </refnamediv>
12 12
13 <refsynopsisdiv> 13 <refsynopsisdiv>
@@ -48,12 +48,17 @@
48 48
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 <para>To set custom DV timings for the input or output, applications use the 51 <para>To set DV timings for the input or output, applications use the
52<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current custom timings, 52<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current timings,
53applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing 53applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing
54information is filled in using the structure &v4l2-dv-timings;. These ioctls take 54information is filled in using the structure &v4l2-dv-timings;. These ioctls take
55a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported 55a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported
56or the timing values are not correct, the driver returns &EINVAL;.</para> 56or the timing values are not correct, the driver returns &EINVAL;.</para>
57<para>The <filename>linux/v4l2-dv-timings.h</filename> header can be used to get the
58timings of the formats in the <xref linkend="cea861" /> and <xref linkend="vesadmt" />
59standards. If the current input or output does not support DV timings (e.g. if
60&VIDIOC-ENUMINPUT; does not set the <constant>V4L2_IN_CAP_DV_TIMINGS</constant> flag), then
61&ENODATA; is returned.</para>
57 </refsect1> 62 </refsect1>
58 63
59 <refsect1> 64 <refsect1>
@@ -68,6 +73,12 @@ or the timing values are not correct, the driver returns &EINVAL;.</para>
68 </listitem> 73 </listitem>
69 </varlistentry> 74 </varlistentry>
70 <varlistentry> 75 <varlistentry>
76 <term><errorcode>ENODATA</errorcode></term>
77 <listitem>
78 <para>Digital video timings are not supported for this input or output.</para>
79 </listitem>
80 </varlistentry>
81 <varlistentry>
71 <term><errorcode>EBUSY</errorcode></term> 82 <term><errorcode>EBUSY</errorcode></term>
72 <listitem> 83 <listitem>
73 <para>The device is busy and therefore can not change the timings.</para> 84 <para>The device is busy and therefore can not change the timings.</para>
@@ -83,12 +94,13 @@ or the timing values are not correct, the driver returns &EINVAL;.</para>
83 <row> 94 <row>
84 <entry>__u32</entry> 95 <entry>__u32</entry>
85 <entry><structfield>width</structfield></entry> 96 <entry><structfield>width</structfield></entry>
86 <entry>Width of the active video in pixels</entry> 97 <entry>Width of the active video in pixels.</entry>
87 </row> 98 </row>
88 <row> 99 <row>
89 <entry>__u32</entry> 100 <entry>__u32</entry>
90 <entry><structfield>height</structfield></entry> 101 <entry><structfield>height</structfield></entry>
91 <entry>Height of the active video in lines</entry> 102 <entry>Height of the active video frame in lines. So for interlaced formats the
103 height of the active video in each field is <structfield>height</structfield>/2.</entry>
92 </row> 104 </row>
93 <row> 105 <row>
94 <entry>__u32</entry> 106 <entry>__u32</entry>
@@ -125,32 +137,52 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
125 <row> 137 <row>
126 <entry>__u32</entry> 138 <entry>__u32</entry>
127 <entry><structfield>vfrontporch</structfield></entry> 139 <entry><structfield>vfrontporch</structfield></entry>
128 <entry>Vertical front porch in lines</entry> 140 <entry>Vertical front porch in lines. For interlaced formats this refers to the
141 odd field (aka field 1).</entry>
129 </row> 142 </row>
130 <row> 143 <row>
131 <entry>__u32</entry> 144 <entry>__u32</entry>
132 <entry><structfield>vsync</structfield></entry> 145 <entry><structfield>vsync</structfield></entry>
133 <entry>Vertical sync length in lines</entry> 146 <entry>Vertical sync length in lines. For interlaced formats this refers to the
147 odd field (aka field 1).</entry>
134 </row> 148 </row>
135 <row> 149 <row>
136 <entry>__u32</entry> 150 <entry>__u32</entry>
137 <entry><structfield>vbackporch</structfield></entry> 151 <entry><structfield>vbackporch</structfield></entry>
138 <entry>Vertical back porch in lines</entry> 152 <entry>Vertical back porch in lines. For interlaced formats this refers to the
153 odd field (aka field 1).</entry>
139 </row> 154 </row>
140 <row> 155 <row>
141 <entry>__u32</entry> 156 <entry>__u32</entry>
142 <entry><structfield>il_vfrontporch</structfield></entry> 157 <entry><structfield>il_vfrontporch</structfield></entry>
143 <entry>Vertical front porch in lines for bottom field of interlaced field formats</entry> 158 <entry>Vertical front porch in lines for the even field (aka field 2) of
159 interlaced field formats.</entry>
144 </row> 160 </row>
145 <row> 161 <row>
146 <entry>__u32</entry> 162 <entry>__u32</entry>
147 <entry><structfield>il_vsync</structfield></entry> 163 <entry><structfield>il_vsync</structfield></entry>
148 <entry>Vertical sync length in lines for bottom field of interlaced field formats</entry> 164 <entry>Vertical sync length in lines for the even field (aka field 2) of
165 interlaced field formats.</entry>
149 </row> 166 </row>
150 <row> 167 <row>
151 <entry>__u32</entry> 168 <entry>__u32</entry>
152 <entry><structfield>il_vbackporch</structfield></entry> 169 <entry><structfield>il_vbackporch</structfield></entry>
153 <entry>Vertical back porch in lines for bottom field of interlaced field formats</entry> 170 <entry>Vertical back porch in lines for the even field (aka field 2) of
171 interlaced field formats.</entry>
172 </row>
173 <row>
174 <entry>__u32</entry>
175 <entry><structfield>standards</structfield></entry>
176 <entry>The video standard(s) this format belongs to. This will be filled in by
177 the driver. Applications must set this to 0. See <xref linkend="dv-bt-standards"/>
178 for a list of standards.</entry>
179 </row>
180 <row>
181 <entry>__u32</entry>
182 <entry><structfield>flags</structfield></entry>
183 <entry>Several flags giving more information about the format.
184 See <xref linkend="dv-bt-flags"/> for a description of the flags.
185 </entry>
154 </row> 186 </row>
155 </tbody> 187 </tbody>
156 </tgroup> 188 </tgroup>
@@ -211,13 +243,89 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
211 </tbody> 243 </tbody>
212 </tgroup> 244 </tgroup>
213 </table> 245 </table>
246 <table pgwide="1" frame="none" id="dv-bt-standards">
247 <title>DV BT Timing standards</title>
248 <tgroup cols="2">
249 &cs-str;
250 <tbody valign="top">
251 <row>
252 <entry>Timing standard</entry>
253 <entry>Description</entry>
254 </row>
255 <row>
256 <entry></entry>
257 <entry></entry>
258 </row>
259 <row>
260 <entry>V4L2_DV_BT_STD_CEA861</entry>
261 <entry>The timings follow the CEA-861 Digital TV Profile standard</entry>
262 </row>
263 <row>
264 <entry>V4L2_DV_BT_STD_DMT</entry>
265 <entry>The timings follow the VESA Discrete Monitor Timings standard</entry>
266 </row>
267 <row>
268 <entry>V4L2_DV_BT_STD_CVT</entry>
269 <entry>The timings follow the VESA Coordinated Video Timings standard</entry>
270 </row>
271 <row>
272 <entry>V4L2_DV_BT_STD_GTF</entry>
273 <entry>The timings follow the VESA Generalized Timings Formula standard</entry>
274 </row>
275 </tbody>
276 </tgroup>
277 </table>
278 <table pgwide="1" frame="none" id="dv-bt-flags">
279 <title>DV BT Timing flags</title>
280 <tgroup cols="2">
281 &cs-str;
282 <tbody valign="top">
283 <row>
284 <entry>Flag</entry>
285 <entry>Description</entry>
286 </row>
287 <row>
288 <entry></entry>
289 <entry></entry>
290 </row>
291 <row>
292 <entry>V4L2_DV_FL_REDUCED_BLANKING</entry>
293 <entry>CVT/GTF specific: the timings use reduced blanking (CVT) or the 'Secondary
294GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
295intervals are reduced, allowing a higher resolution over the same
296bandwidth. This is a read-only flag, applications must not set this.
297 </entry>
298 </row>
299 <row>
300 <entry>V4L2_DV_FL_CAN_REDUCE_FPS</entry>
301 <entry>CEA-861 specific: set for CEA-861 formats with a framerate that is a multiple
302of six. These formats can be optionally played at 1 / 1.001 speed to
303be compatible with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
30429.97 frames per second. If the transmitter can't generate such frequencies, then the
305flag will also be cleared. This is a read-only flag, applications must not set this.
306 </entry>
307 </row>
308 <row>
309 <entry>V4L2_DV_FL_REDUCED_FPS</entry>
310 <entry>CEA-861 specific: only valid for video transmitters, the flag is cleared
311by receivers. It is also only valid for formats with the V4L2_DV_FL_CAN_REDUCE_FPS flag
312set, for other formats the flag will be cleared by the driver.
313
314If the application sets this flag, then the pixelclock used to set up the transmitter is
315divided by 1.001 to make it compatible with NTSC framerates. If the transmitter
316can't generate such frequencies, then the flag will also be cleared.
317 </entry>
318 </row>
319 <row>
320 <entry>V4L2_DV_FL_HALF_LINE</entry>
321 <entry>Specific to interlaced formats: if set, then field 1 (aka the odd field)
322is really one half-line longer and field 2 (aka the even field) is really one half-line
323shorter, so each field has exactly the same number of half-lines. Whether half-lines can be
324detected or used depends on the hardware.
325 </entry>
326 </row>
327 </tbody>
328 </tgroup>
329 </table>
214 </refsect1> 330 </refsect1>
215</refentry> 331</refentry>
216
217<!--
218Local Variables:
219mode: sgml
220sgml-parent-document: "v4l2.sgml"
221indent-tabs-mode: nil
222End:
223-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-enc-index.xml b/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml
index 9f242e4b294..be25029a16f 100644
--- a/Documentation/DocBook/v4l/vidioc-g-enc-index.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml
@@ -48,13 +48,6 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <note>
52 <title>Experimental</title>
53
54 <para>This is an <link linkend="experimental">experimental</link>
55interface and may change in the future.</para>
56 </note>
57
58 <para>The <constant>VIDIOC_G_ENC_INDEX</constant> ioctl provides 51 <para>The <constant>VIDIOC_G_ENC_INDEX</constant> ioctl provides
59meta data about a compressed video stream the same or another 52meta data about a compressed video stream the same or another
60application currently reads from the driver, which is useful for 53application currently reads from the driver, which is useful for
@@ -192,22 +185,5 @@ this mask to obtain the picture coding type.</entry>
192 185
193 <refsect1> 186 <refsect1>
194 &return-value; 187 &return-value;
195
196 <variablelist>
197 <varlistentry>
198 <term><errorcode>EINVAL</errorcode></term>
199 <listitem>
200 <para>The driver does not support this ioctl.</para>
201 </listitem>
202 </varlistentry>
203 </variablelist>
204 </refsect1> 188 </refsect1>
205</refentry> 189</refentry>
206
207<!--
208Local Variables:
209mode: sgml
210sgml-parent-document: "v4l2.sgml"
211indent-tabs-mode: nil
212End:
213-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
index 3aa7f8f9ff0..0a4b90fcf2d 100644
--- a/Documentation/DocBook/v4l/vidioc-g-ext-ctrls.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
@@ -183,7 +183,12 @@ applications must set the array to zero.</entry>
183 <entry>__u32</entry> 183 <entry>__u32</entry>
184 <entry><structfield>ctrl_class</structfield></entry> 184 <entry><structfield>ctrl_class</structfield></entry>
185 <entry>The control class to which all controls belong, see 185 <entry>The control class to which all controls belong, see
186<xref linkend="ctrl-class" />.</entry> 186<xref linkend="ctrl-class" />. Drivers that use a kernel framework for handling
187controls will also accept a value of 0 here, meaning that the controls can
188belong to any control class. Whether drivers support this can be tested by setting
189<structfield>ctrl_class</structfield> to 0 and calling <constant>VIDIOC_TRY_EXT_CTRLS</constant>
190with a <structfield>count</structfield> of 0. If that succeeds, then the driver
191supports this feature.</entry>
187 </row> 192 </row>
188 <row> 193 <row>
189 <entry>__u32</entry> 194 <entry>__u32</entry>
@@ -194,10 +199,13 @@ also be zero.</entry>
194 <row> 199 <row>
195 <entry>__u32</entry> 200 <entry>__u32</entry>
196 <entry><structfield>error_idx</structfield></entry> 201 <entry><structfield>error_idx</structfield></entry>
197 <entry>Set by the driver in case of an error. It is the 202 <entry>Set by the driver in case of an error. If it is equal
198index of the control causing the error or equal to 'count' when the 203to <structfield>count</structfield>, then no actual changes were made to
199error is not associated with a particular control. Undefined when the 204controls. In other words, the error was not associated with setting a particular
200ioctl returns 0 (success).</entry> 205control. If it is another value, then only the controls up to <structfield>error_idx-1</structfield>
206were modified and control <structfield>error_idx</structfield> is the one that
207caused the error. The <structfield>error_idx</structfield> value is undefined
208if the ioctl returned 0 (success).</entry>
201 </row> 209 </row>
202 <row> 210 <row>
203 <entry>__u32</entry> 211 <entry>__u32</entry>
@@ -250,6 +258,32 @@ These controls are described in <xref
250These controls are described in <xref 258These controls are described in <xref
251 linkend="fm-tx-controls" />.</entry> 259 linkend="fm-tx-controls" />.</entry>
252 </row> 260 </row>
261 <row>
262 <entry><constant>V4L2_CTRL_CLASS_FLASH</constant></entry>
263 <entry>0x9c0000</entry>
264 <entry>The class containing flash device controls.
265These controls are described in <xref
266 linkend="flash-controls" />.</entry>
267 </row>
268 <row>
269 <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
270 <entry>0x9d0000</entry>
271 <entry>The class containing JPEG compression controls.
272These controls are described in <xref
273 linkend="jpeg-controls" />.</entry>
274 </row>
275 <row>
276 <entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry>
277 <entry>0x9e0000</entry> <entry>The class containing image
278 source controls. These controls are described in <xref
279 linkend="image-source-controls" />.</entry>
280 </row>
281 <row>
282 <entry><constant>V4L2_CTRL_CLASS_IMAGE_PROC</constant></entry>
283 <entry>0x9f0000</entry> <entry>The class containing image
284 processing controls. These controls are described in <xref
285 linkend="image-process-controls" />.</entry>
286 </row>
253 </tbody> 287 </tbody>
254 </tgroup> 288 </tgroup>
255 </table> 289 </table>
@@ -294,14 +328,14 @@ The field <structfield>size</structfield> is set to a value that is enough
294to store the payload and this error code is returned.</para> 328to store the payload and this error code is returned.</para>
295 </listitem> 329 </listitem>
296 </varlistentry> 330 </varlistentry>
331 <varlistentry>
332 <term><errorcode>EACCES</errorcode></term>
333 <listitem>
334 <para>Attempt to try or set a read-only control or to get a
335 write-only control.</para>
336 </listitem>
337 </varlistentry>
297 </variablelist> 338 </variablelist>
298 </refsect1> 339 </refsect1>
299</refentry> 340</refentry>
300 341
301<!--
302Local Variables:
303mode: sgml
304sgml-parent-document: "v4l2.sgml"
305indent-tabs-mode: nil
306End:
307-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-fbuf.xml b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
index e7dda4822f0..7c63815e7af 100644
--- a/Documentation/DocBook/v4l/vidioc-g-fbuf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
@@ -295,7 +295,8 @@ set this field to zero.</entry>
295 <entry>The device is capable of non-destructive overlays. 295 <entry>The device is capable of non-destructive overlays.
296When the driver clears this flag, only destructive overlays are 296When the driver clears this flag, only destructive overlays are
297supported. There are no drivers yet which support both destructive and 297supported. There are no drivers yet which support both destructive and
298non-destructive overlays.</entry> 298non-destructive overlays. Video Output Overlays are in practice always
299non-destructive.</entry>
299 </row> 300 </row>
300 <row> 301 <row>
301 <entry><constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry> 302 <entry><constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry>
@@ -339,8 +340,8 @@ blending makes no sense for destructive overlays.</entry>
339 <row> 340 <row>
340 <entry><constant>V4L2_FBUF_CAP_SRC_CHROMAKEY</constant></entry> 341 <entry><constant>V4L2_FBUF_CAP_SRC_CHROMAKEY</constant></entry>
341 <entry>0x0080</entry> 342 <entry>0x0080</entry>
342 <entry>The device supports Source Chroma-keying. Framebuffer pixels 343 <entry>The device supports Source Chroma-keying. Video pixels
343with the chroma-key colors are replaced by video pixels, which is exactly opposite of 344with the chroma-key colors are replaced by framebuffer pixels, which is exactly opposite of
344<constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry> 345<constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry>
345 </row> 346 </row>
346 </tbody> 347 </tbody>
@@ -356,21 +357,27 @@ with the chroma-key colors are replaced by video pixels, which is exactly opposi
356 <entry><constant>V4L2_FBUF_FLAG_PRIMARY</constant></entry> 357 <entry><constant>V4L2_FBUF_FLAG_PRIMARY</constant></entry>
357 <entry>0x0001</entry> 358 <entry>0x0001</entry>
358 <entry>The framebuffer is the primary graphics surface. 359 <entry>The framebuffer is the primary graphics surface.
359In other words, the overlay is destructive. [?]</entry> 360In other words, the overlay is destructive. This flag is typically set by any
361driver that doesn't have the <constant>V4L2_FBUF_CAP_EXTERNOVERLAY</constant>
362capability and it is cleared otherwise.</entry>
360 </row> 363 </row>
361 <row> 364 <row>
362 <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry> 365 <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry>
363 <entry>0x0002</entry> 366 <entry>0x0002</entry>
364 <entry>The frame buffer is an overlay surface the same 367 <entry>If this flag is set for a video capture device, then the
365size as the capture. [?]</entry> 368driver will set the initial overlay size to cover the full framebuffer size,
366 </row> 369otherwise the existing overlay size (as set by &VIDIOC-S-FMT;) will be used.
367 <row> 370
368 <entry spanname="hspan">The purpose of 371Only one video capture driver (bttv) supports this flag. The use of this flag
369<constant>V4L2_FBUF_FLAG_PRIMARY</constant> and 372for capture devices is deprecated. There is no way to detect which drivers
370<constant>V4L2_FBUF_FLAG_OVERLAY</constant> was never quite clear. 373support this flag, so the only reliable method of setting the overlay size is
371Most drivers seem to ignore these flags. For compatibility with the 374through &VIDIOC-S-FMT;.
372<wordasword>bttv</wordasword> driver applications should set the 375
373<constant>V4L2_FBUF_FLAG_OVERLAY</constant> flag.</entry> 376If this flag is set for a video output device, then the video output overlay
377window is relative to the top-left corner of the framebuffer and restricted
378to the size of the framebuffer. If it is cleared, then the video output
379overlay window is relative to the video output display.
380 </entry>
374 </row> 381 </row>
375 <row> 382 <row>
376 <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry> 383 <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry>
@@ -446,28 +453,11 @@ overlay.</para>
446 </listitem> 453 </listitem>
447 </varlistentry> 454 </varlistentry>
448 <varlistentry> 455 <varlistentry>
449 <term><errorcode>EBUSY</errorcode></term>
450 <listitem>
451 <para>The framebuffer parameters cannot be changed at this
452time because overlay is already enabled, or capturing is enabled
453and the hardware cannot capture and overlay simultaneously.</para>
454 </listitem>
455 </varlistentry>
456 <varlistentry>
457 <term><errorcode>EINVAL</errorcode></term> 456 <term><errorcode>EINVAL</errorcode></term>
458 <listitem> 457 <listitem>
459 <para>The ioctl is not supported or the 458 <para>The <constant>VIDIOC_S_FBUF</constant> parameters are unsuitable.</para>
460<constant>VIDIOC_S_FBUF</constant> parameters are unsuitable.</para>
461 </listitem> 459 </listitem>
462 </varlistentry> 460 </varlistentry>
463 </variablelist> 461 </variablelist>
464 </refsect1> 462 </refsect1>
465</refentry> 463</refentry>
466
467<!--
468Local Variables:
469mode: sgml
470sgml-parent-document: "v4l2.sgml"
471indent-tabs-mode: nil
472End:
473-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
index a4ae59b664e..ee8f56e1bac 100644
--- a/Documentation/DocBook/v4l/vidioc-g-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
@@ -81,7 +81,7 @@ the application calls the <constant>VIDIOC_S_FMT</constant> ioctl
81with a pointer to a <structname>v4l2_format</structname> structure 81with a pointer to a <structname>v4l2_format</structname> structure
82the driver checks 82the driver checks
83and adjusts the parameters against hardware abilities. Drivers 83and adjusts the parameters against hardware abilities. Drivers
84should not return an error code unless the input is ambiguous, this is 84should not return an error code unless the <structfield>type</structfield> field is invalid, this is
85a mechanism to fathom device capabilities and to approach parameters 85a mechanism to fathom device capabilities and to approach parameters
86acceptable for both the application and driver. On success the driver 86acceptable for both the application and driver. On success the driver
87may program the hardware, allocate resources and generally prepare for 87may program the hardware, allocate resources and generally prepare for
@@ -107,6 +107,10 @@ disabling I/O or possibly time consuming hardware preparations.
107Although strongly recommended drivers are not required to implement 107Although strongly recommended drivers are not required to implement
108this ioctl.</para> 108this ioctl.</para>
109 109
110 <para>The format as returned by <constant>VIDIOC_TRY_FMT</constant>
111must be identical to what <constant>VIDIOC_S_FMT</constant> returns for
112the same input or output.</para>
113
110 <table pgwide="1" frame="none" id="v4l2-format"> 114 <table pgwide="1" frame="none" id="v4l2-format">
111 <title>struct <structname>v4l2_format</structname></title> 115 <title>struct <structname>v4l2_format</structname></title>
112 <tgroup cols="4"> 116 <tgroup cols="4">
@@ -116,7 +120,7 @@ this ioctl.</para>
116 <colspec colname="c4" /> 120 <colspec colname="c4" />
117 <tbody valign="top"> 121 <tbody valign="top">
118 <row> 122 <row>
119 <entry>&v4l2-buf-type;</entry> 123 <entry>__u32</entry>
120 <entry><structfield>type</structfield></entry> 124 <entry><structfield>type</structfield></entry>
121 <entry></entry> 125 <entry></entry>
122 <entry>Type of the data stream, see <xref 126 <entry>Type of the data stream, see <xref
@@ -170,9 +174,7 @@ capture and output devices.</entry>
170 <entry></entry> 174 <entry></entry>
171 <entry>__u8</entry> 175 <entry>__u8</entry>
172 <entry><structfield>raw_data</structfield>[200]</entry> 176 <entry><structfield>raw_data</structfield>[200]</entry>
173 <entry>Place holder for future extensions and custom 177 <entry>Place holder for future extensions.</entry>
174(driver defined) formats with <structfield>type</structfield>
175<constant>V4L2_BUF_TYPE_PRIVATE</constant> and higher.</entry>
176 </row> 178 </row>
177 </tbody> 179 </tbody>
178 </tgroup> 180 </tgroup>
@@ -184,29 +186,12 @@ capture and output devices.</entry>
184 186
185 <variablelist> 187 <variablelist>
186 <varlistentry> 188 <varlistentry>
187 <term><errorcode>EBUSY</errorcode></term>
188 <listitem>
189 <para>The data format cannot be changed at this
190time, for example because I/O is already in progress.</para>
191 </listitem>
192 </varlistentry>
193 <varlistentry>
194 <term><errorcode>EINVAL</errorcode></term> 189 <term><errorcode>EINVAL</errorcode></term>
195 <listitem> 190 <listitem>
196 <para>The &v4l2-format; <structfield>type</structfield> 191 <para>The &v4l2-format; <structfield>type</structfield>
197field is invalid, the requested buffer type not supported, or 192field is invalid or the requested buffer type not supported.</para>
198<constant>VIDIOC_TRY_FMT</constant> was called and is not
199supported with this buffer type.</para>
200 </listitem> 193 </listitem>
201 </varlistentry> 194 </varlistentry>
202 </variablelist> 195 </variablelist>
203 </refsect1> 196 </refsect1>
204</refentry> 197</refentry>
205
206<!--
207Local Variables:
208mode: sgml
209sgml-parent-document: "v4l2.sgml"
210indent-tabs-mode: nil
211End:
212-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
index 062d7206909..c7a1c462e72 100644
--- a/Documentation/DocBook/v4l/vidioc-g-frequency.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
@@ -95,11 +95,15 @@ the &v4l2-output; <structfield>modulator</structfield> field and the
95&v4l2-modulator; <structfield>index</structfield> field.</entry> 95&v4l2-modulator; <structfield>index</structfield> field.</entry>
96 </row> 96 </row>
97 <row> 97 <row>
98 <entry>&v4l2-tuner-type;</entry> 98 <entry>__u32</entry>
99 <entry><structfield>type</structfield></entry> 99 <entry><structfield>type</structfield></entry>
100 <entry>The tuner type. This is the same value as in the 100 <entry>The tuner type. This is the same value as in the
101&v4l2-tuner; <structfield>type</structfield> field. The field is not 101&v4l2-tuner; <structfield>type</structfield> field. The type must be set
102applicable to modulators, &ie; ignored by drivers.</entry> 102to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
103device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
104for all others. Set this field to <constant>V4L2_TUNER_RADIO</constant> for
105modulators (currently only radio modulators are supported).
106See <xref linkend="v4l2-tuner-type" /></entry>
103 </row> 107 </row>
104 <row> 108 <row>
105 <entry>__u32</entry> 109 <entry>__u32</entry>
@@ -132,14 +136,12 @@ bounds or the value in the <structfield>type</structfield> field is
132wrong.</para> 136wrong.</para>
133 </listitem> 137 </listitem>
134 </varlistentry> 138 </varlistentry>
139 <varlistentry>
140 <term><errorcode>EBUSY</errorcode></term>
141 <listitem>
142 <para>A hardware seek is in progress.</para>
143 </listitem>
144 </varlistentry>
135 </variablelist> 145 </variablelist>
136 </refsect1> 146 </refsect1>
137</refentry> 147</refentry>
138
139<!--
140Local Variables:
141mode: sgml
142sgml-parent-document: "v4l2.sgml"
143indent-tabs-mode: nil
144End:
145-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-input.xml b/Documentation/DocBook/media/v4l/vidioc-g-input.xml
index ed076e92760..1d43065090d 100644
--- a/Documentation/DocBook/v4l/vidioc-g-input.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-input.xml
@@ -61,8 +61,8 @@ desired input in an integer and call the
61<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this 61<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this
62integer. Side effects are possible. For example inputs may support 62integer. Side effects are possible. For example inputs may support
63different video standards, so the driver may implicitly switch the 63different video standards, so the driver may implicitly switch the
64current standard. It is good practice to select an input before 64current standard. Because of these possible side effects applications
65querying or negotiating any other parameters.</para> 65must select an input before querying or negotiating any other parameters.</para>
66 66
67 <para>Information about video inputs is available using the 67 <para>Information about video inputs is available using the
68&VIDIOC-ENUMINPUT; ioctl.</para> 68&VIDIOC-ENUMINPUT; ioctl.</para>
@@ -75,26 +75,9 @@ querying or negotiating any other parameters.</para>
75 <varlistentry> 75 <varlistentry>
76 <term><errorcode>EINVAL</errorcode></term> 76 <term><errorcode>EINVAL</errorcode></term>
77 <listitem> 77 <listitem>
78 <para>The number of the video input is out of bounds, or 78 <para>The number of the video input is out of bounds.</para>
79there are no video inputs at all and this ioctl is not
80supported.</para>
81 </listitem>
82 </varlistentry>
83 <varlistentry>
84 <term><errorcode>EBUSY</errorcode></term>
85 <listitem>
86 <para>I/O is in progress, the input cannot be
87switched.</para>
88 </listitem> 79 </listitem>
89 </varlistentry> 80 </varlistentry>
90 </variablelist> 81 </variablelist>
91 </refsect1> 82 </refsect1>
92</refentry> 83</refentry>
93
94<!--
95Local Variables:
96mode: sgml
97sgml-parent-document: "v4l2.sgml"
98indent-tabs-mode: nil
99End:
100-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
index 77394b28741..48748499c09 100644
--- a/Documentation/DocBook/v4l/vidioc-g-jpegcomp.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
@@ -57,6 +57,11 @@
57 <refsect1> 57 <refsect1>
58 <title>Description</title> 58 <title>Description</title>
59 59
60 <para>These ioctls are <emphasis role="bold">deprecated</emphasis>.
61 New drivers and applications should use <link linkend="jpeg-controls">
62 JPEG class controls</link> for image quality and JPEG markers control.
63 </para>
64
60 <para>[to do]</para> 65 <para>[to do]</para>
61 66
62 <para>Ronald Bultje elaborates:</para> 67 <para>Ronald Bultje elaborates:</para>
@@ -86,7 +91,10 @@ to add them.</para>
86 <row> 91 <row>
87 <entry>int</entry> 92 <entry>int</entry>
88 <entry><structfield>quality</structfield></entry> 93 <entry><structfield>quality</structfield></entry>
89 <entry></entry> 94 <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
95 V4L2_CID_JPEG_IMAGE_QUALITY</constant></link> control is exposed by
96 a driver applications should use it instead and ignore this field.
97 </entry>
90 </row> 98 </row>
91 <row> 99 <row>
92 <entry>int</entry> 100 <entry>int</entry>
@@ -116,7 +124,11 @@ to add them.</para>
116 <row> 124 <row>
117 <entry>__u32</entry> 125 <entry>__u32</entry>
118 <entry><structfield>jpeg_markers</structfield></entry> 126 <entry><structfield>jpeg_markers</structfield></entry>
119 <entry>See <xref linkend="jpeg-markers" />.</entry> 127 <entry>See <xref linkend="jpeg-markers"/>. Deprecated.
128 If <link linkend="jpeg-active-marker-control"><constant>
129 V4L2_CID_JPEG_ACTIVE_MARKER</constant></link> control
130 is exposed by a driver applications should use it instead
131 and ignore this field.</entry>
120 </row> 132 </row>
121 </tbody> 133 </tbody>
122 </tgroup> 134 </tgroup>
@@ -159,22 +171,5 @@ to add them.</para>
159 171
160 <refsect1> 172 <refsect1>
161 &return-value; 173 &return-value;
162
163 <variablelist>
164 <varlistentry>
165 <term><errorcode>EINVAL</errorcode></term>
166 <listitem>
167 <para>This ioctl is not supported.</para>
168 </listitem>
169 </varlistentry>
170 </variablelist>
171 </refsect1> 174 </refsect1>
172</refentry> 175</refentry>
173
174<!--
175Local Variables:
176mode: sgml
177sgml-parent-document: "v4l2.sgml"
178indent-tabs-mode: nil
179End:
180-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-modulator.xml b/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml
index 15ce660f0f5..7f4ac7e41fa 100644
--- a/Documentation/DocBook/v4l/vidioc-g-modulator.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml
@@ -236,11 +236,3 @@ mode.</entry>
236 </variablelist> 236 </variablelist>
237 </refsect1> 237 </refsect1>
238</refentry> 238</refentry>
239
240<!--
241Local Variables:
242mode: sgml
243sgml-parent-document: "v4l2.sgml"
244indent-tabs-mode: nil
245End:
246-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-output.xml b/Documentation/DocBook/media/v4l/vidioc-g-output.xml
index 3ea8c0ed812..4533068ecb8 100644
--- a/Documentation/DocBook/v4l/vidioc-g-output.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-output.xml
@@ -61,8 +61,9 @@ desired output in an integer and call the
61<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer. 61<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer.
62Side effects are possible. For example outputs may support different 62Side effects are possible. For example outputs may support different
63video standards, so the driver may implicitly switch the current 63video standards, so the driver may implicitly switch the current
64standard. It is good practice to select an output before querying or 64standard.
65negotiating any other parameters.</para> 65standard. Because of these possible side effects applications
66must select an output before querying or negotiating any other parameters.</para>
66 67
67 <para>Information about video outputs is available using the 68 <para>Information about video outputs is available using the
68&VIDIOC-ENUMOUTPUT; ioctl.</para> 69&VIDIOC-ENUMOUTPUT; ioctl.</para>
@@ -76,25 +77,9 @@ negotiating any other parameters.</para>
76 <term><errorcode>EINVAL</errorcode></term> 77 <term><errorcode>EINVAL</errorcode></term>
77 <listitem> 78 <listitem>
78 <para>The number of the video output is out of bounds, or 79 <para>The number of the video output is out of bounds, or
79there are no video outputs at all and this ioctl is not 80there are no video outputs at all.</para>
80supported.</para>
81 </listitem>
82 </varlistentry>
83 <varlistentry>
84 <term><errorcode>EBUSY</errorcode></term>
85 <listitem>
86 <para>I/O is in progress, the output cannot be
87switched.</para>
88 </listitem> 81 </listitem>
89 </varlistentry> 82 </varlistentry>
90 </variablelist> 83 </variablelist>
91 </refsect1> 84 </refsect1>
92</refentry> 85</refentry>
93
94<!--
95Local Variables:
96mode: sgml
97sgml-parent-document: "v4l2.sgml"
98indent-tabs-mode: nil
99End:
100-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
index 392aa9e5571..9058224d1bb 100644
--- a/Documentation/DocBook/v4l/vidioc-g-parm.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
@@ -75,11 +75,12 @@ devices.</para>
75 &cs-ustr; 75 &cs-ustr;
76 <tbody valign="top"> 76 <tbody valign="top">
77 <row> 77 <row>
78 <entry>&v4l2-buf-type;</entry> 78 <entry>__u32</entry>
79 <entry><structfield>type</structfield></entry> 79 <entry><structfield>type</structfield></entry>
80 <entry></entry> 80 <entry></entry>
81 <entry>The buffer (stream) type, same as &v4l2-format; 81 <entry>The buffer (stream) type, same as &v4l2-format;
82<structfield>type</structfield>, set by the application.</entry> 82<structfield>type</structfield>, set by the application. See <xref
83 linkend="v4l2-buf-type" /></entry>
83 </row> 84 </row>
84 <row> 85 <row>
85 <entry>union</entry> 86 <entry>union</entry>
@@ -107,9 +108,7 @@ devices.</para>
107 <entry></entry> 108 <entry></entry>
108 <entry>__u8</entry> 109 <entry>__u8</entry>
109 <entry><structfield>raw_data</structfield>[200]</entry> 110 <entry><structfield>raw_data</structfield>[200]</entry>
110 <entry>A place holder for future extensions and custom 111 <entry>A place holder for future extensions.</entry>
111(driver defined) buffer types <constant>V4L2_BUF_TYPE_PRIVATE</constant> and
112higher.</entry>
113 </row> 112 </row>
114 </tbody> 113 </tbody>
115 </tgroup> 114 </tgroup>
@@ -311,22 +310,5 @@ excessive motion blur. </para>
311 310
312 <refsect1> 311 <refsect1>
313 &return-value; 312 &return-value;
314
315 <variablelist>
316 <varlistentry>
317 <term><errorcode>EINVAL</errorcode></term>
318 <listitem>
319 <para>This ioctl is not supported.</para>
320 </listitem>
321 </varlistentry>
322 </variablelist>
323 </refsect1> 313 </refsect1>
324</refentry> 314</refentry>
325
326<!--
327Local Variables:
328mode: sgml
329sgml-parent-document: "v4l2.sgml"
330indent-tabs-mode: nil
331End:
332-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-priority.xml b/Documentation/DocBook/media/v4l/vidioc-g-priority.xml
index 5fb00197864..6a81b4fe953 100644
--- a/Documentation/DocBook/v4l/vidioc-g-priority.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-priority.xml
@@ -120,8 +120,7 @@ recording.</entry>
120 <varlistentry> 120 <varlistentry>
121 <term><errorcode>EINVAL</errorcode></term> 121 <term><errorcode>EINVAL</errorcode></term>
122 <listitem> 122 <listitem>
123 <para>The requested priority value is invalid, or the 123 <para>The requested priority value is invalid.</para>
124driver does not support access priorities.</para>
125 </listitem> 124 </listitem>
126 </varlistentry> 125 </varlistentry>
127 <varlistentry> 126 <varlistentry>
@@ -134,11 +133,3 @@ priority.</para>
134 </variablelist> 133 </variablelist>
135 </refsect1> 134 </refsect1>
136</refentry> 135</refentry>
137
138<!--
139Local Variables:
140mode: sgml
141sgml-parent-document: "v4l2.sgml"
142indent-tabs-mode: nil
143End:
144-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
new file mode 100644
index 00000000000..b11ec75e21a
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
@@ -0,0 +1,241 @@
1<refentry id="vidioc-g-selection">
2
3 <refmeta>
4 <refentrytitle>ioctl VIDIOC_G_SELECTION, VIDIOC_S_SELECTION</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_G_SELECTION</refname>
10 <refname>VIDIOC_S_SELECTION</refname>
11 <refpurpose>Get or set one of the selection rectangles</refpurpose>
12 </refnamediv>
13
14 <refsynopsisdiv>
15 <funcsynopsis>
16 <funcprototype>
17 <funcdef>int <function>ioctl</function></funcdef>
18 <paramdef>int <parameter>fd</parameter></paramdef>
19 <paramdef>int <parameter>request</parameter></paramdef>
20 <paramdef>struct v4l2_selection *<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 </refsynopsisdiv>
24
25 <refsect1>
26 <title>Arguments</title>
27
28 <variablelist>
29 <varlistentry>
30 <term><parameter>fd</parameter></term>
31 <listitem>
32 <para>&fd;</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>VIDIOC_G_SELECTION, VIDIOC_S_SELECTION</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para></para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <note>
54 <title>Experimental</title>
55 <para>This is an <link linkend="experimental"> experimental </link>
56 interface and may change in the future.</para>
57 </note>
58
59 <para>The ioctls are used to query and configure selection rectangles.</para>
60
61<para> To query the cropping (composing) rectangle set &v4l2-selection;
62<structfield> type </structfield> field to the respective buffer type.
63Do not use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE
64</constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
65</constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of
66<constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is
67setting the value of &v4l2-selection; <structfield>target</structfield> field
68to <constant> V4L2_SEL_TGT_CROP </constant> (<constant>
69V4L2_SEL_TGT_COMPOSE </constant>). Please refer to table <xref
70linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> for additional
71targets. The <structfield>flags</structfield> and <structfield>reserved
72</structfield> fields of &v4l2-selection; are ignored and they must be filled
73with zeros. The driver fills the rest of the structure or
74returns &EINVAL; if incorrect buffer type or target was used. If cropping
75(composing) is not supported then the active rectangle is not mutable and it is
76always equal to the bounds rectangle. Finally, the &v4l2-rect;
77<structfield>r</structfield> rectangle is filled with the current cropping
78(composing) coordinates. The coordinates are expressed in driver-dependent
79units. The only exception are rectangles for images in raw formats, whose
80coordinates are always expressed in pixels. </para>
81
82<para> To change the cropping (composing) rectangle set the &v4l2-selection;
83<structfield>type</structfield> field to the respective buffer type. Do not
84use multiplanar buffers. Use <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE
85</constant> instead of <constant> V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE
86</constant>. Use <constant> V4L2_BUF_TYPE_VIDEO_OUTPUT </constant> instead of
87<constant> V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE </constant>. The next step is
88setting the value of &v4l2-selection; <structfield>target</structfield> to
89<constant>V4L2_SEL_TGT_CROP</constant> (<constant>
90V4L2_SEL_TGT_COMPOSE </constant>). Please refer to table <xref
91linkend="v4l2-selections-common" /> or <xref linkend="selection-api" /> for additional
92targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be
93set to the desired active area. Field &v4l2-selection; <structfield> reserved
94</structfield> is ignored and must be filled with zeros. The driver may adjust
95coordinates of the requested rectangle. An application may
96introduce constraints to control rounding behaviour. The &v4l2-selection;
97<structfield>flags</structfield> field must be set to one of the following:
98
99<itemizedlist>
100 <listitem>
101<para><constant>0</constant> - The driver can adjust the rectangle size freely
102and shall choose a crop/compose rectangle as close as possible to the requested
103one.</para>
104 </listitem>
105 <listitem>
106<para><constant>V4L2_SEL_FLAG_GE</constant> - The driver is not allowed to
107shrink the rectangle. The original rectangle must lay inside the adjusted
108one.</para>
109 </listitem>
110 <listitem>
111<para><constant>V4L2_SEL_FLAG_LE</constant> - The driver is not allowed to
112enlarge the rectangle. The adjusted rectangle must lay inside the original
113one.</para>
114 </listitem>
115 <listitem>
116<para><constant>V4L2_SEL_FLAG_GE | V4L2_SEL_FLAG_LE</constant> - The driver
117must choose the size exactly the same as in the requested rectangle.</para>
118 </listitem>
119</itemizedlist>
120
121Please refer to <xref linkend="sel-const-adjust" />.
122
123</para>
124
125<para> The driver may have to adjusts the requested dimensions against hardware
126limits and other parts as the pipeline, i.e. the bounds given by the
127capture/output window or TV display. The closest possible values of horizontal
128and vertical offset and sizes are chosen according to following priority:
129
130<orderedlist>
131 <listitem>
132 <para>Satisfy constraints from &v4l2-selection; <structfield>flags</structfield>.</para>
133 </listitem>
134 <listitem>
135 <para>Adjust width, height, left, and top to hardware limits and alignments.</para>
136 </listitem>
137 <listitem>
138 <para>Keep center of adjusted rectangle as close as possible to the original one.</para>
139 </listitem>
140 <listitem>
141 <para>Keep width and height as close as possible to original ones.</para>
142 </listitem>
143 <listitem>
144 <para>Keep horizontal and vertical offset as close as possible to original ones.</para>
145 </listitem>
146</orderedlist>
147
148On success the &v4l2-rect; <structfield>r</structfield> field contains
149the adjusted rectangle. When the parameters are unsuitable the application may
150modify the cropping (composing) or image parameters and repeat the cycle until
151satisfactory parameters have been negotiated. If constraints flags have to be
152violated at then ERANGE is returned. The error indicates that <emphasis> there
153exist no rectangle </emphasis> that satisfies the constraints.</para>
154
155 <para>Selection targets and flags are documented in <xref
156 linkend="v4l2-selections-common"/>.</para>
157
158 <para>
159 <figure id="sel-const-adjust">
160 <title>Size adjustments with constraint flags.</title>
161 <mediaobject>
162 <imageobject>
163 <imagedata fileref="constraints.png" format="PNG" />
164 </imageobject>
165 <textobject>
166 <phrase>Behaviour of rectangle adjustment for different constraint
167 flags.</phrase>
168 </textobject>
169 </mediaobject>
170 </figure>
171 </para>
172
173 <para>
174 <table pgwide="1" frame="none" id="v4l2-selection">
175 <title>struct <structname>v4l2_selection</structname></title>
176 <tgroup cols="3">
177 &cs-str;
178 <tbody valign="top">
179 <row>
180 <entry>__u32</entry>
181 <entry><structfield>type</structfield></entry>
182 <entry>Type of the buffer (from &v4l2-buf-type;).</entry>
183 </row>
184 <row>
185 <entry>__u32</entry>
186 <entry><structfield>target</structfield></entry>
187 <entry>Used to select between <link linkend="v4l2-selections-common"> cropping
188 and composing rectangles</link>.</entry>
189 </row>
190 <row>
191 <entry>__u32</entry>
192 <entry><structfield>flags</structfield></entry>
193 <entry>Flags controlling the selection rectangle adjustments, refer to
194 <link linkend="v4l2-selection-flags">selection flags</link>.</entry>
195 </row>
196 <row>
197 <entry>&v4l2-rect;</entry>
198 <entry><structfield>r</structfield></entry>
199 <entry>The selection rectangle.</entry>
200 </row>
201 <row>
202 <entry>__u32</entry>
203 <entry><structfield>reserved[9]</structfield></entry>
204 <entry>Reserved fields for future use.</entry>
205 </row>
206 </tbody>
207 </tgroup>
208 </table>
209 </para>
210 </refsect1>
211
212 <refsect1>
213 &return-value;
214 <variablelist>
215 <varlistentry>
216 <term><errorcode>EINVAL</errorcode></term>
217 <listitem>
218 <para>Given buffer type <structfield>type</structfield> or
219the selection target <structfield>target</structfield> is not supported,
220or the <structfield>flags</structfield> argument is not valid.</para>
221 </listitem>
222 </varlistentry>
223 <varlistentry>
224 <term><errorcode>ERANGE</errorcode></term>
225 <listitem>
226 <para>It is not possible to adjust &v4l2-rect; <structfield>
227r</structfield> rectangle to satisfy all contraints given in the
228<structfield>flags</structfield> argument.</para>
229 </listitem>
230 </varlistentry>
231 <varlistentry>
232 <term><errorcode>EBUSY</errorcode></term>
233 <listitem>
234 <para>It is not possible to apply change of the selection rectangle
235at the moment. Usually because streaming is in progress.</para>
236 </listitem>
237 </varlistentry>
238 </variablelist>
239 </refsect1>
240
241</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
index 10e721b1737..bd015d1563f 100644
--- a/Documentation/DocBook/v4l/vidioc-g-sliced-vbi-cap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
@@ -148,7 +148,7 @@ using the &VIDIOC-S-FMT; ioctl as described in <xref
148<structfield>service_lines</structfield>[1][0] to zero.</entry> 148<structfield>service_lines</structfield>[1][0] to zero.</entry>
149 </row> 149 </row>
150 <row> 150 <row>
151 <entry>&v4l2-buf-type;</entry> 151 <entry>__u32</entry>
152 <entry><structfield>type</structfield></entry> 152 <entry><structfield>type</structfield></entry>
153 <entry>Type of the data stream, see <xref 153 <entry>Type of the data stream, see <xref
154 linkend="v4l2-buf-type" />. Should be 154 linkend="v4l2-buf-type" />. Should be
@@ -246,19 +246,10 @@ line systems.</entry>
246 <varlistentry> 246 <varlistentry>
247 <term><errorcode>EINVAL</errorcode></term> 247 <term><errorcode>EINVAL</errorcode></term>
248 <listitem> 248 <listitem>
249 <para>The device does not support sliced VBI capturing or 249 <para>The value in the <structfield>type</structfield> field is
250output, or the value in the <structfield>type</structfield> field is
251wrong.</para> 250wrong.</para>
252 </listitem> 251 </listitem>
253 </varlistentry> 252 </varlistentry>
254 </variablelist> 253 </variablelist>
255 </refsect1> 254 </refsect1>
256</refentry> 255</refentry>
257
258<!--
259Local Variables:
260mode: sgml
261sgml-parent-document: "v4l2.sgml"
262indent-tabs-mode: nil
263End:
264-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-std.xml b/Documentation/DocBook/media/v4l/vidioc-g-std.xml
index 912f8513e5d..4a898417de2 100644
--- a/Documentation/DocBook/v4l/vidioc-g-std.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-std.xml
@@ -72,7 +72,9 @@ flags, being a write-only ioctl it does not return the actual new standard as
72the current input does not support the requested standard the driver 72the current input does not support the requested standard the driver
73returns an &EINVAL;. When the standard set is ambiguous drivers may 73returns an &EINVAL;. When the standard set is ambiguous drivers may
74return <errorcode>EINVAL</errorcode> or choose any of the requested 74return <errorcode>EINVAL</errorcode> or choose any of the requested
75standards.</para> 75standards. If the current input or output does not support standard video timings (e.g. if
76&VIDIOC-ENUMINPUT; does not set the <constant>V4L2_IN_CAP_STD</constant> flag), then
77&ENODATA; is returned.</para>
76 </refsect1> 78 </refsect1>
77 79
78 <refsect1> 80 <refsect1>
@@ -82,24 +84,15 @@ standards.</para>
82 <varlistentry> 84 <varlistentry>
83 <term><errorcode>EINVAL</errorcode></term> 85 <term><errorcode>EINVAL</errorcode></term>
84 <listitem> 86 <listitem>
85 <para>This ioctl is not supported, or the 87 <para>The <constant>VIDIOC_S_STD</constant> parameter was unsuitable.</para>
86<constant>VIDIOC_S_STD</constant> parameter was unsuitable.</para>
87 </listitem> 88 </listitem>
88 </varlistentry> 89 </varlistentry>
89 <varlistentry> 90 <varlistentry>
90 <term><errorcode>EBUSY</errorcode></term> 91 <term><errorcode>ENODATA</errorcode></term>
91 <listitem> 92 <listitem>
92 <para>The device is busy and therefore can not change the standard</para> 93 <para>Standard video timings are not supported for this input or output.</para>
93 </listitem> 94 </listitem>
94 </varlistentry> 95 </varlistentry>
95 </variablelist> 96 </variablelist>
96 </refsect1> 97 </refsect1>
97</refentry> 98</refentry>
98
99<!--
100Local Variables:
101mode: sgml
102sgml-parent-document: "v4l2.sgml"
103indent-tabs-mode: nil
104End:
105-->
diff --git a/Documentation/DocBook/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
index bd98c734c06..6cc82010c73 100644
--- a/Documentation/DocBook/v4l/vidioc-g-tuner.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
@@ -107,7 +107,7 @@ user.<!-- FIXME Video inputs already have a name, the purpose of this
107field is not quite clear.--></para></entry> 107field is not quite clear.--></para></entry>
108 </row> 108 </row>
109 <row> 109 <row>
110 <entry>&v4l2-tuner-type;</entry> 110 <entry>__u32</entry>
111 <entry><structfield>type</structfield></entry> 111 <entry><structfield>type</structfield></entry>
112 <entry spanname="hspan">Type of the tuner, see <xref 112 <entry spanname="hspan">Type of the tuner, see <xref
113 linkend="v4l2-tuner-type" />.</entry> 113 linkend="v4l2-tuner-type" />.</entry>
@@ -119,10 +119,14 @@ field is not quite clear.--></para></entry>
119<xref linkend="tuner-capability" />. Audio flags indicate the ability 119<xref linkend="tuner-capability" />. Audio flags indicate the ability
120to decode audio subprograms. They will <emphasis>not</emphasis> 120to decode audio subprograms. They will <emphasis>not</emphasis>
121change, for example with the current video standard.</para><para>When 121change, for example with the current video standard.</para><para>When
122the structure refers to a radio tuner only the 122the structure refers to a radio tuner the
123<constant>V4L2_TUNER_CAP_LOW</constant>, 123<constant>V4L2_TUNER_CAP_LANG1</constant>,
124<constant>V4L2_TUNER_CAP_STEREO</constant> and 124<constant>V4L2_TUNER_CAP_LANG2</constant> and
125<constant>V4L2_TUNER_CAP_RDS</constant> flags can be set.</para></entry> 125<constant>V4L2_TUNER_CAP_NORM</constant> flags can't be used.</para>
126<para>If multiple frequency bands are supported, then
127<structfield>capability</structfield> is the union of all
128<structfield>capability</structfield> fields of each &v4l2-frequency-band;.
129</para></entry>
126 </row> 130 </row>
127 <row> 131 <row>
128 <entry>__u32</entry> 132 <entry>__u32</entry>
@@ -130,7 +134,9 @@ the structure refers to a radio tuner only the
130 <entry spanname="hspan">The lowest tunable frequency in 134 <entry spanname="hspan">The lowest tunable frequency in
131units of 62.5 kHz, or if the <structfield>capability</structfield> 135units of 62.5 kHz, or if the <structfield>capability</structfield>
132flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 136flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
133Hz.</entry> 137Hz. If multiple frequency bands are supported, then
138<structfield>rangelow</structfield> is the lowest frequency
139of all the frequency bands.</entry>
134 </row> 140 </row>
135 <row> 141 <row>
136 <entry>__u32</entry> 142 <entry>__u32</entry>
@@ -138,7 +144,9 @@ Hz.</entry>
138 <entry spanname="hspan">The highest tunable frequency in 144 <entry spanname="hspan">The highest tunable frequency in
139units of 62.5 kHz, or if the <structfield>capability</structfield> 145units of 62.5 kHz, or if the <structfield>capability</structfield>
140flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5 146flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
141Hz.</entry> 147Hz. If multiple frequency bands are supported, then
148<structfield>rangehigh</structfield> is the highest frequency
149of all the frequency bands.</entry>
142 </row> 150 </row>
143 <row> 151 <row>
144 <entry>__u32</entry> 152 <entry>__u32</entry>
@@ -276,6 +284,18 @@ can or must be switched. (B/G PAL tuners for example are typically not
276 <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry> 284 <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
277 </row> 285 </row>
278 <row> 286 <row>
287 <entry><constant>V4L2_TUNER_CAP_HWSEEK_BOUNDED</constant></entry>
288 <entry>0x0004</entry>
289 <entry>If set, then this tuner supports the hardware seek functionality
290 where the seek stops when it reaches the end of the frequency range.</entry>
291 </row>
292 <row>
293 <entry><constant>V4L2_TUNER_CAP_HWSEEK_WRAP</constant></entry>
294 <entry>0x0008</entry>
295 <entry>If set, then this tuner supports the hardware seek functionality
296 where the seek wraps around when it reaches the end of the frequency range.</entry>
297 </row>
298 <row>
279 <entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry> 299 <entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry>
280 <entry>0x0010</entry> 300 <entry>0x0010</entry>
281 <entry>Stereo audio reception is supported.</entry> 301 <entry>Stereo audio reception is supported.</entry>
@@ -318,6 +338,28 @@ standard.</para><!-- FIXME what if PAL+NTSC and Bi but not SAP? --></entry>
318 <entry>RDS capture is supported. This capability is only valid for 338 <entry>RDS capture is supported. This capability is only valid for
319radio tuners.</entry> 339radio tuners.</entry>
320 </row> 340 </row>
341 <row>
342 <entry><constant>V4L2_TUNER_CAP_RDS_BLOCK_IO</constant></entry>
343 <entry>0x0100</entry>
344 <entry>The RDS data is passed as unparsed RDS blocks.</entry>
345 </row>
346 <row>
347 <entry><constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant></entry>
348 <entry>0x0200</entry>
349 <entry>The RDS data is parsed by the hardware and set via controls.</entry>
350 </row>
351 <row>
352 <entry><constant>V4L2_TUNER_CAP_FREQ_BANDS</constant></entry>
353 <entry>0x0400</entry>
354 <entry>The &VIDIOC-ENUM-FREQ-BANDS; ioctl can be used to enumerate
355 the available frequency bands.</entry>
356 </row>
357 <row>
358 <entry><constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant></entry>
359 <entry>0x0800</entry>
360 <entry>The range to search when using the hardware seek functionality
361 is programmable, see &VIDIOC-S-HW-FREQ-SEEK; for details.</entry>
362 </row>
321 </tbody> 363 </tbody>
322 </tgroup> 364 </tgroup>
323 </table> 365 </table>
@@ -525,11 +567,3 @@ out of bounds.</para>
525 </variablelist> 567 </variablelist>
526 </refsect1> 568 </refsect1>
527</refentry> 569</refentry>
528
529<!--
530Local Variables:
531mode: sgml
532sgml-parent-document: "v4l2.sgml"
533indent-tabs-mode: nil
534End:
535-->
diff --git a/Documentation/DocBook/v4l/vidioc-log-status.xml b/Documentation/DocBook/media/v4l/vidioc-log-status.xml
index 2634b7c88b5..5ded7d35e27 100644
--- a/Documentation/DocBook/v4l/vidioc-log-status.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-log-status.xml
@@ -37,22 +37,5 @@ was introduced in Linux 2.6.15.</para>
37 37
38 <refsect1> 38 <refsect1>
39 &return-value; 39 &return-value;
40
41 <variablelist>
42 <varlistentry>
43 <term><errorcode>EINVAL</errorcode></term>
44 <listitem>
45 <para>The driver does not support this ioctl.</para>
46 </listitem>
47 </varlistentry>
48 </variablelist>
49 </refsect1> 40 </refsect1>
50</refentry> 41</refentry>
51
52<!--
53Local Variables:
54mode: sgml
55sgml-parent-document: "v4l2.sgml"
56indent-tabs-mode: nil
57End:
58-->
diff --git a/Documentation/DocBook/v4l/vidioc-overlay.xml b/Documentation/DocBook/media/v4l/vidioc-overlay.xml
index 1036c582cc1..250a7de1877 100644
--- a/Documentation/DocBook/v4l/vidioc-overlay.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-overlay.xml
@@ -65,19 +65,10 @@
65 <varlistentry> 65 <varlistentry>
66 <term><errorcode>EINVAL</errorcode></term> 66 <term><errorcode>EINVAL</errorcode></term>
67 <listitem> 67 <listitem>
68 <para>Video overlay is not supported, or the 68 <para>The overlay parameters have not been set up. See <xref
69parameters have not been set up. See <xref
70linkend="overlay" /> for the necessary steps.</para> 69linkend="overlay" /> for the necessary steps.</para>
71 </listitem> 70 </listitem>
72 </varlistentry> 71 </varlistentry>
73 </variablelist> 72 </variablelist>
74 </refsect1> 73 </refsect1>
75</refentry> 74</refentry>
76
77<!--
78Local Variables:
79mode: sgml
80sgml-parent-document: "v4l2.sgml"
81indent-tabs-mode: nil
82End:
83-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
new file mode 100644
index 00000000000..fa7ad7e3322
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
@@ -0,0 +1,94 @@
1<refentry id="vidioc-prepare-buf">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_PREPARE_BUF</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_PREPARE_BUF</refname>
9 <refpurpose>Prepare a buffer for I/O</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_buffer *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_PREPARE_BUF</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>Applications can optionally call the
58<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer
59to the driver before actually enqueuing it, using the
60<constant>VIDIOC_QBUF</constant> ioctl, and to prepare it for future I/O.
61Such preparations may include cache invalidation or cleaning. Performing them
62in advance saves time during the actual I/O. In case such cache operations are
63not required, the application can use one of
64<constant>V4L2_BUF_FLAG_NO_CACHE_INVALIDATE</constant> and
65<constant>V4L2_BUF_FLAG_NO_CACHE_CLEAN</constant> flags to skip the respective
66step.</para>
67
68 <para>The <structname>v4l2_buffer</structname> structure is
69specified in <xref linkend="buffer" />.</para>
70 </refsect1>
71
72 <refsect1>
73 &return-value;
74
75 <variablelist>
76 <varlistentry>
77 <term><errorcode>EBUSY</errorcode></term>
78 <listitem>
79 <para>File I/O is in progress.</para>
80 </listitem>
81 </varlistentry>
82 <varlistentry>
83 <term><errorcode>EINVAL</errorcode></term>
84 <listitem>
85 <para>The buffer <structfield>type</structfield> is not
86supported, or the <structfield>index</structfield> is out of bounds,
87or no buffers have been allocated yet, or the
88<structfield>userptr</structfield> or
89<structfield>length</structfield> are invalid.</para>
90 </listitem>
91 </varlistentry>
92 </variablelist>
93 </refsect1>
94</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-qbuf.xml b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
index f2b11f8a403..3504a7f2f38 100644
--- a/Documentation/DocBook/v4l/vidioc-qbuf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
@@ -71,12 +71,9 @@ initialize the <structfield>bytesused</structfield>,
71<structfield>field</structfield> and 71<structfield>field</structfield> and
72<structfield>timestamp</structfield> fields, see <xref 72<structfield>timestamp</structfield> fields, see <xref
73linkend="buffer" /> for details. 73linkend="buffer" /> for details.
74Applications must also set <structfield>flags</structfield> to 0. If a driver 74Applications must also set <structfield>flags</structfield> to 0.
75supports capturing from specific video inputs and you want to specify a video 75The <structfield>reserved2</structfield> and
76input, then <structfield>flags</structfield> should be set to 76<structfield>reserved</structfield> fields must be set to 0. When using
77<constant>V4L2_BUF_FLAG_INPUT</constant> and the field
78<structfield>input</structfield> must be initialized to the desired input.
79The <structfield>reserved</structfield> field must be set to 0. When using
80the <link linkend="planar-apis">multi-planar API</link>, the 77the <link linkend="planar-apis">multi-planar API</link>, the
81<structfield>m.planes</structfield> field must contain a userspace pointer 78<structfield>m.planes</structfield> field must contain a userspace pointer
82to a filled-in array of &v4l2-plane; and the <structfield>length</structfield> 79to a filled-in array of &v4l2-plane; and the <structfield>length</structfield>
@@ -112,6 +109,23 @@ they cannot be swapped out to disk. Buffers remain locked until
112dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is 109dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is
113called, or until the device is closed.</para> 110called, or until the device is closed.</para>
114 111
112 <para>To enqueue a <link linkend="dmabuf">DMABUF</link> buffer applications
113set the <structfield>memory</structfield> field to
114<constant>V4L2_MEMORY_DMABUF</constant> and the <structfield>m.fd</structfield>
115field to a file descriptor associated with a DMABUF buffer. When the
116multi-planar API is used the <structfield>m.fd</structfield> fields of the
117passed array of &v4l2-plane; have to be used instead. When
118<constant>VIDIOC_QBUF</constant> is called with a pointer to this structure the
119driver sets the <constant>V4L2_BUF_FLAG_QUEUED</constant> flag and clears the
120<constant>V4L2_BUF_FLAG_MAPPED</constant> and
121<constant>V4L2_BUF_FLAG_DONE</constant> flags in the
122<structfield>flags</structfield> field, or it returns an error code. This
123ioctl locks the buffer. Locking a buffer means passing it to a driver for a
124hardware access (usually DMA). If an application accesses (reads/writes) a
125locked buffer then the result is undefined. Buffers remain locked until
126dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is called, or
127until the device is closed.</para>
128
115 <para>Applications call the <constant>VIDIOC_DQBUF</constant> 129 <para>Applications call the <constant>VIDIOC_DQBUF</constant>
116ioctl to dequeue a filled (capturing) or displayed (output) buffer 130ioctl to dequeue a filled (capturing) or displayed (output) buffer
117from the driver's outgoing queue. They just set the 131from the driver's outgoing queue. They just set the
@@ -124,8 +138,7 @@ remaining fields or returns an error code. The driver may also set
124field. It indicates a non-critical (recoverable) streaming error. In such case 138field. It indicates a non-critical (recoverable) streaming error. In such case
125the application may continue as normal, but should be aware that data in the 139the application may continue as normal, but should be aware that data in the
126dequeued buffer might be corrupted. When using the multi-planar API, the 140dequeued buffer might be corrupted. When using the multi-planar API, the
127planes array does not have to be passed; the <structfield>m.planes</structfield> 141planes array must be passed in as well.</para>
128member must be set to NULL in that case.</para>
129 142
130 <para>By default <constant>VIDIOC_DQBUF</constant> blocks when no 143 <para>By default <constant>VIDIOC_DQBUF</constant> blocks when no
131buffer is in the outgoing queue. When the 144buffer is in the outgoing queue. When the
@@ -160,13 +173,6 @@ or no buffers have been allocated yet, or the
160 </listitem> 173 </listitem>
161 </varlistentry> 174 </varlistentry>
162 <varlistentry> 175 <varlistentry>
163 <term><errorcode>ENOMEM</errorcode></term>
164 <listitem>
165 <para>Not enough physical or virtual memory was available to
166enqueue a user pointer buffer.</para>
167 </listitem>
168 </varlistentry>
169 <varlistentry>
170 <term><errorcode>EIO</errorcode></term> 176 <term><errorcode>EIO</errorcode></term>
171 <listitem> 177 <listitem>
172 <para><constant>VIDIOC_DQBUF</constant> failed due to an 178 <para><constant>VIDIOC_DQBUF</constant> failed due to an
@@ -184,11 +190,3 @@ continue streaming.
184 </variablelist> 190 </variablelist>
185 </refsect1> 191 </refsect1>
186</refentry> 192</refentry>
187
188<!--
189Local Variables:
190mode: sgml
191sgml-parent-document: "v4l2.sgml"
192indent-tabs-mode: nil
193End:
194-->
diff --git a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
index d272f7ab91b..68b49d09e24 100644
--- a/Documentation/DocBook/v4l/vidioc-query-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
@@ -49,6 +49,10 @@ input</refpurpose>
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 51
52 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-QUERY-DV-TIMINGS; instead.
54 </para>
55
52 <para>The hardware may be able to detect the current DV preset 56 <para>The hardware may be able to detect the current DV preset
53automatically, similar to sensing the video standard. To do so, applications 57automatically, similar to sensing the video standard. To do so, applications
54call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a 58call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a
@@ -61,27 +65,14 @@ returned.</para>
61 65
62 <refsect1> 66 <refsect1>
63 &return-value; 67 &return-value;
68
64 <variablelist> 69 <variablelist>
65 <varlistentry> 70 <varlistentry>
66 <term><errorcode>EINVAL</errorcode></term> 71 <term><errorcode>ENODATA</errorcode></term>
67 <listitem>
68 <para>This ioctl is not supported.</para>
69 </listitem>
70 </varlistentry>
71 <varlistentry>
72 <term><errorcode>EBUSY</errorcode></term>
73 <listitem> 72 <listitem>
74 <para>The device is busy and therefore can not sense the preset</para> 73 <para>Digital video presets are not supported for this input or output.</para>
75 </listitem> 74 </listitem>
76 </varlistentry> 75 </varlistentry>
77 </variablelist> 76 </variablelist>
78 </refsect1> 77 </refsect1>
79</refentry> 78</refentry>
80
81<!--
82Local Variables:
83mode: sgml
84sgml-parent-document: "v4l2.sgml"
85indent-tabs-mode: nil
86End:
87-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
new file mode 100644
index 00000000000..e185f149e0a
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
@@ -0,0 +1,110 @@
1<refentry id="vidioc-query-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERY_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERY_DV_TIMINGS</refname>
9 <refpurpose>Sense the DV preset received by the current
10input</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_QUERY_DV_TIMINGS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>The hardware may be able to detect the current DV timings
59automatically, similar to sensing the video standard. To do so, applications
60call <constant>VIDIOC_QUERY_DV_TIMINGS</constant> with a pointer to a
61&v4l2-dv-timings;. Once the hardware detects the timings, it will fill in the
62timings structure.
63
64If the timings could not be detected because there was no signal, then
65<errorcode>ENOLINK</errorcode> is returned. If a signal was detected, but
66it was unstable and the receiver could not lock to the signal, then
67<errorcode>ENOLCK</errorcode> is returned. If the receiver could lock to the signal,
68but the format is unsupported (e.g. because the pixelclock is out of range
69of the hardware capabilities), then the driver fills in whatever timings it
70could find and returns <errorcode>ERANGE</errorcode>. In that case the application
71can call &VIDIOC-DV-TIMINGS-CAP; to compare the found timings with the hardware's
72capabilities in order to give more precise feedback to the user.
73</para>
74 </refsect1>
75
76 <refsect1>
77 &return-value;
78
79 <variablelist>
80 <varlistentry>
81 <term><errorcode>ENODATA</errorcode></term>
82 <listitem>
83 <para>Digital video timings are not supported for this input or output.</para>
84 </listitem>
85 </varlistentry>
86 <varlistentry>
87 <term><errorcode>ENOLINK</errorcode></term>
88 <listitem>
89 <para>No timings could be detected because no signal was found.
90</para>
91 </listitem>
92 </varlistentry>
93 <varlistentry>
94 <term><errorcode>ENOLCK</errorcode></term>
95 <listitem>
96 <para>The signal was unstable and the hardware could not lock on to it.
97</para>
98 </listitem>
99 </varlistentry>
100 <varlistentry>
101 <term><errorcode>ERANGE</errorcode></term>
102 <listitem>
103 <para>Timings were found, but they are out of range of the hardware
104capabilities.
105</para>
106 </listitem>
107 </varlistentry>
108 </variablelist>
109 </refsect1>
110</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-querybuf.xml b/Documentation/DocBook/media/v4l/vidioc-querybuf.xml
index 5c104d42d31..a597155c052 100644
--- a/Documentation/DocBook/v4l/vidioc-querybuf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-querybuf.xml
@@ -48,8 +48,8 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <para>This ioctl is part of the <link linkend="mmap">memory 51 <para>This ioctl is part of the <link linkend="mmap">streaming
52mapping</link> I/O method. It can be used to query the status of a 52</link> I/O method. It can be used to query the status of a
53buffer at any time after buffers have been allocated with the 53buffer at any time after buffers have been allocated with the
54&VIDIOC-REQBUFS; ioctl.</para> 54&VIDIOC-REQBUFS; ioctl.</para>
55 55
@@ -71,6 +71,7 @@ the structure.</para>
71 71
72 <para>In the <structfield>flags</structfield> field the 72 <para>In the <structfield>flags</structfield> field the
73<constant>V4L2_BUF_FLAG_MAPPED</constant>, 73<constant>V4L2_BUF_FLAG_MAPPED</constant>,
74<constant>V4L2_BUF_FLAG_PREPARED</constant>,
74<constant>V4L2_BUF_FLAG_QUEUED</constant> and 75<constant>V4L2_BUF_FLAG_QUEUED</constant> and
75<constant>V4L2_BUF_FLAG_DONE</constant> flags will be valid. The 76<constant>V4L2_BUF_FLAG_DONE</constant> flags will be valid. The
76<structfield>memory</structfield> field will be set to the current 77<structfield>memory</structfield> field will be set to the current
@@ -79,8 +80,10 @@ contains the offset of the buffer from the start of the device memory,
79the <structfield>length</structfield> field its size. For the multi-planar API, 80the <structfield>length</structfield> field its size. For the multi-planar API,
80fields <structfield>m.mem_offset</structfield> and 81fields <structfield>m.mem_offset</structfield> and
81<structfield>length</structfield> in the <structfield>m.planes</structfield> 82<structfield>length</structfield> in the <structfield>m.planes</structfield>
82array elements will be used instead. The driver may or may not set the remaining 83array elements will be used instead and the <structfield>length</structfield>
83fields and flags, they are meaningless in this context.</para> 84field of &v4l2-buffer; is set to the number of filled-in array elements.
85The driver may or may not set the remaining fields and flags, they are
86meaningless in this context.</para>
84 87
85 <para>The <structname>v4l2_buffer</structname> structure is 88 <para>The <structname>v4l2_buffer</structname> structure is
86 specified in <xref linkend="buffer" />.</para> 89 specified in <xref linkend="buffer" />.</para>
@@ -100,11 +103,3 @@ supported, or the <structfield>index</structfield> is out of bounds.</para>
100 </variablelist> 103 </variablelist>
101 </refsect1> 104 </refsect1>
102</refentry> 105</refentry>
103
104<!--
105Local Variables:
106mode: sgml
107sgml-parent-document: "v4l2.sgml"
108indent-tabs-mode: nil
109End:
110-->
diff --git a/Documentation/DocBook/v4l/vidioc-querycap.xml b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
index f29f1b86213..4c70215ae03 100644
--- a/Documentation/DocBook/v4l/vidioc-querycap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
@@ -67,9 +67,8 @@ driver is not compatible with this specification the ioctl returns an
67 <entry><para>Name of the driver, a unique NUL-terminated 67 <entry><para>Name of the driver, a unique NUL-terminated
68ASCII string. For example: "bttv". Driver specific applications can 68ASCII string. For example: "bttv". Driver specific applications can
69use this information to verify the driver identity. It is also useful 69use this information to verify the driver identity. It is also useful
70to work around known bugs, or to identify drivers in error reports. 70to work around known bugs, or to identify drivers in error reports.</para>
71The driver version is stored in the <structfield>version</structfield> 71<para>Storing strings in fixed sized arrays is bad
72field.</para><para>Storing strings in fixed sized arrays is bad
73practice but unavoidable here. Drivers and applications should take 72practice but unavoidable here. Drivers and applications should take
74precautions to never read or write beyond the end of the array and to 73precautions to never read or write beyond the end of the array and to
75make sure the strings are properly NUL-terminated.</para></entry> 74make sure the strings are properly NUL-terminated.</para></entry>
@@ -91,18 +90,24 @@ ambiguities.</entry>
91 <entry>__u8</entry> 90 <entry>__u8</entry>
92 <entry><structfield>bus_info</structfield>[32]</entry> 91 <entry><structfield>bus_info</structfield>[32]</entry>
93 <entry>Location of the device in the system, a 92 <entry>Location of the device in the system, a
94NUL-terminated ASCII string. For example: "PCI Slot 4". This 93NUL-terminated ASCII string. For example: "PCI:0000:05:06.0". This
95information is intended for users, to distinguish multiple 94information is intended for users, to distinguish multiple
96identical devices. If no such information is available the field may 95identical devices. If no such information is available the field must
97simply count the devices controlled by the driver, or contain the 96simply count the devices controlled by the driver ("platform:vivi-000").
98empty string (<structfield>bus_info</structfield>[0] = 0).<!-- XXX pci_dev->slot_name example --></entry> 97The bus_info must start with "PCI:" for PCI boards, "PCIe:" for PCI Express boards,
98"usb-" for USB devices, "I2C:" for i2c devices, "ISA:" for ISA devices,
99"parport" for parallel port devices and "platform:" for platform devices.</entry>
99 </row> 100 </row>
100 <row> 101 <row>
101 <entry>__u32</entry> 102 <entry>__u32</entry>
102 <entry><structfield>version</structfield></entry> 103 <entry><structfield>version</structfield></entry>
103 <entry><para>Version number of the driver. Together with 104 <entry><para>Version number of the driver.</para>
104the <structfield>driver</structfield> field this identifies a 105<para>Starting on kernel 3.1, the version reported is provided per
105particular driver. The version number is formatted using the 106V4L2 subsystem, following the same Kernel numberation scheme. However, it
107should not always return the same version as the kernel, if, for example,
108an stable or distribution-modified kernel uses the V4L2 stack from a
109newer kernel.</para>
110<para>The version number is formatted using the
106<constant>KERNEL_VERSION()</constant> macro:</para></entry> 111<constant>KERNEL_VERSION()</constant> macro:</para></entry>
107 </row> 112 </row>
108 <row> 113 <row>
@@ -121,12 +126,35 @@ printf ("Version: %u.%u.%u\n",
121 <row> 126 <row>
122 <entry>__u32</entry> 127 <entry>__u32</entry>
123 <entry><structfield>capabilities</structfield></entry> 128 <entry><structfield>capabilities</structfield></entry>
124 <entry>Device capabilities, see <xref 129 <entry>Available capabilities of the physical device as a whole, see <xref
125 linkend="device-capabilities" />.</entry> 130 linkend="device-capabilities" />. The same physical device can export
131 multiple devices in /dev (e.g. /dev/videoX, /dev/vbiY and /dev/radioZ).
132 The <structfield>capabilities</structfield> field should contain a union
133 of all capabilities available around the several V4L2 devices exported
134 to userspace.
135 For all those devices the <structfield>capabilities</structfield> field
136 returns the same set of capabilities. This allows applications to open
137 just one of the devices (typically the video device) and discover whether
138 video, vbi and/or radio are also supported.
139 </entry>
126 </row> 140 </row>
127 <row> 141 <row>
128 <entry>__u32</entry> 142 <entry>__u32</entry>
129 <entry><structfield>reserved</structfield>[4]</entry> 143 <entry><structfield>device_caps</structfield></entry>
144 <entry>Device capabilities of the opened device, see <xref
145 linkend="device-capabilities" />. Should contain the available capabilities
146 of that specific device node. So, for example, <structfield>device_caps</structfield>
147 of a radio device will only contain radio related capabilities and
148 no video or vbi capabilities. This field is only set if the <structfield>capabilities</structfield>
149 field contains the <constant>V4L2_CAP_DEVICE_CAPS</constant> capability.
150 Only the <structfield>capabilities</structfield> field can have the
151 <constant>V4L2_CAP_DEVICE_CAPS</constant> capability, <structfield>device_caps</structfield>
152 will never set <constant>V4L2_CAP_DEVICE_CAPS</constant>.
153 </entry>
154 </row>
155 <row>
156 <entry>__u32</entry>
157 <entry><structfield>reserved</structfield>[3]</entry>
130 <entry>Reserved for future extensions. Drivers must set 158 <entry>Reserved for future extensions. Drivers must set
131this array to zero.</entry> 159this array to zero.</entry>
132 </row> 160 </row>
@@ -166,6 +194,19 @@ linkend="output">Video Output</link> interface.</entry>
166 <link linkend="output">Video Output</link> interface.</entry> 194 <link linkend="output">Video Output</link> interface.</entry>
167 </row> 195 </row>
168 <row> 196 <row>
197 <entry><constant>V4L2_CAP_VIDEO_M2M</constant></entry>
198 <entry>0x00004000</entry>
199 <entry>The device supports the single-planar API through the
200 Video Memory-To-Memory interface.</entry>
201 </row>
202 <row>
203 <entry><constant>V4L2_CAP_VIDEO_M2M_MPLANE</constant></entry>
204 <entry>0x00008000</entry>
205 <entry>The device supports the
206 <link linkend="planar-apis">multi-planar API</link> through the
207 Video Memory-To-Memory interface.</entry>
208 </row>
209 <row>
169 <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry> 210 <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry>
170 <entry>0x00000004</entry> 211 <entry>0x00000004</entry>
171 <entry>The device supports the <link 212 <entry>The device supports the <link
@@ -273,6 +314,13 @@ linkend="async">asynchronous</link> I/O methods.</entry>
273 <entry>The device supports the <link 314 <entry>The device supports the <link
274linkend="mmap">streaming</link> I/O method.</entry> 315linkend="mmap">streaming</link> I/O method.</entry>
275 </row> 316 </row>
317 <row>
318 <entry><constant>V4L2_CAP_DEVICE_CAPS</constant></entry>
319 <entry>0x80000000</entry>
320 <entry>The driver fills the <structfield>device_caps</structfield>
321 field. This capability can only appear in the <structfield>capabilities</structfield>
322 field and never in the <structfield>device_caps</structfield> field.</entry>
323 </row>
276 </tbody> 324 </tbody>
277 </tgroup> 325 </tgroup>
278 </table> 326 </table>
@@ -280,24 +328,5 @@ linkend="mmap">streaming</link> I/O method.</entry>
280 328
281 <refsect1> 329 <refsect1>
282 &return-value; 330 &return-value;
283
284 <variablelist>
285 <varlistentry>
286 <term><errorcode>EINVAL</errorcode></term>
287 <listitem>
288 <para>The device is not compatible with this
289specification.</para>
290 </listitem>
291 </varlistentry>
292 </variablelist>
293 </refsect1> 331 </refsect1>
294</refentry> 332</refentry>
295
296<!--
297Local Variables:
298mode: sgml
299sgml-parent-document: "v4l2.sgml"
300indent-tabs-mode: nil
301End:
302-->
303
diff --git a/Documentation/DocBook/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
index 0d5e8283cf3..e6645b99655 100644
--- a/Documentation/DocBook/v4l/vidioc-queryctrl.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
@@ -127,7 +127,7 @@ the first control with a higher ID. Drivers which do not support this
127flag yet always return an &EINVAL;.</entry> 127flag yet always return an &EINVAL;.</entry>
128 </row> 128 </row>
129 <row> 129 <row>
130 <entry>&v4l2-ctrl-type;</entry> 130 <entry>__u32</entry>
131 <entry><structfield>type</structfield></entry> 131 <entry><structfield>type</structfield></entry>
132 <entry>Type of control, see <xref 132 <entry>Type of control, see <xref
133 linkend="v4l2-ctrl-type" />.</entry> 133 linkend="v4l2-ctrl-type" />.</entry>
@@ -156,7 +156,8 @@ signed value.</entry>
156 <entry>Maximum value, inclusive. This field gives an upper 156 <entry>Maximum value, inclusive. This field gives an upper
157bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the 157bound for <constant>V4L2_CTRL_TYPE_INTEGER</constant> controls and the
158highest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant> 158highest valid index for <constant>V4L2_CTRL_TYPE_MENU</constant>
159controls. 159controls. For <constant>V4L2_CTRL_TYPE_BITMASK</constant> controls it is the
160set of usable bits.
160For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the maximum value 161For <constant>V4L2_CTRL_TYPE_STRING</constant> controls the maximum value
161gives the maximum length of the string. This length <emphasis>does not include the terminating 162gives the maximum length of the string. This length <emphasis>does not include the terminating
162zero</emphasis>. It may not be valid for any other type of control, including 163zero</emphasis>. It may not be valid for any other type of control, including
@@ -214,11 +215,12 @@ the array to zero.</entry>
214 215
215 <table pgwide="1" frame="none" id="v4l2-querymenu"> 216 <table pgwide="1" frame="none" id="v4l2-querymenu">
216 <title>struct <structname>v4l2_querymenu</structname></title> 217 <title>struct <structname>v4l2_querymenu</structname></title>
217 <tgroup cols="3"> 218 <tgroup cols="4">
218 &cs-str; 219 &cs-str;
219 <tbody valign="top"> 220 <tbody valign="top">
220 <row> 221 <row>
221 <entry>__u32</entry> 222 <entry>__u32</entry>
223 <entry></entry>
222 <entry><structfield>id</structfield></entry> 224 <entry><structfield>id</structfield></entry>
223 <entry>Identifies the control, set by the application 225 <entry>Identifies the control, set by the application
224from the respective &v4l2-queryctrl; 226from the respective &v4l2-queryctrl;
@@ -226,18 +228,38 @@ from the respective &v4l2-queryctrl;
226 </row> 228 </row>
227 <row> 229 <row>
228 <entry>__u32</entry> 230 <entry>__u32</entry>
231 <entry></entry>
229 <entry><structfield>index</structfield></entry> 232 <entry><structfield>index</structfield></entry>
230 <entry>Index of the menu item, starting at zero, set by 233 <entry>Index of the menu item, starting at zero, set by
231 the application.</entry> 234 the application.</entry>
232 </row> 235 </row>
233 <row> 236 <row>
237 <entry>union</entry>
238 <entry></entry>
239 <entry></entry>
240 <entry></entry>
241 </row>
242 <row>
243 <entry></entry>
234 <entry>__u8</entry> 244 <entry>__u8</entry>
235 <entry><structfield>name</structfield>[32]</entry> 245 <entry><structfield>name</structfield>[32]</entry>
236 <entry>Name of the menu item, a NUL-terminated ASCII 246 <entry>Name of the menu item, a NUL-terminated ASCII
237string. This information is intended for the user.</entry> 247string. This information is intended for the user. This field is valid
248for <constant>V4L2_CTRL_FLAG_MENU</constant> type controls.</entry>
249 </row>
250 <row>
251 <entry></entry>
252 <entry>__s64</entry>
253 <entry><structfield>value</structfield></entry>
254 <entry>
255 Value of the integer menu item. This field is valid for
256 <constant>V4L2_CTRL_FLAG_INTEGER_MENU</constant> type
257 controls.
258 </entry>
238 </row> 259 </row>
239 <row> 260 <row>
240 <entry>__u32</entry> 261 <entry>__u32</entry>
262 <entry></entry>
241 <entry><structfield>reserved</structfield></entry> 263 <entry><structfield>reserved</structfield></entry>
242 <entry>Reserved for future extensions. Drivers must set 264 <entry>Reserved for future extensions. Drivers must set
243the array to zero.</entry> 265the array to zero.</entry>
@@ -291,6 +313,29 @@ the menu items can be enumerated with the
291<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> 313<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry>
292 </row> 314 </row>
293 <row> 315 <row>
316 <entry><constant>V4L2_CTRL_TYPE_INTEGER_MENU</constant></entry>
317 <entry>&ge; 0</entry>
318 <entry>1</entry>
319 <entry>N-1</entry>
320 <entry>
321 The control has a menu of N choices. The values of the
322 menu items can be enumerated with the
323 <constant>VIDIOC_QUERYMENU</constant> ioctl. This is
324 similar to <constant>V4L2_CTRL_TYPE_MENU</constant>
325 except that instead of strings, the menu items are
326 signed 64-bit integers.
327 </entry>
328 </row>
329 <row>
330 <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry>
331 <entry>0</entry>
332 <entry>n/a</entry>
333 <entry>any</entry>
334 <entry>A bitmask field. The maximum value is the set of bits that can
335be used, all other bits are to be 0. The maximum value is interpreted as a __u32,
336allowing the use of bit 31 in the bitmask.</entry>
337 </row>
338 <row>
294 <entry><constant>V4L2_CTRL_TYPE_BUTTON</constant></entry> 339 <entry><constant>V4L2_CTRL_TYPE_BUTTON</constant></entry>
295 <entry>0</entry> 340 <entry>0</entry>
296 <entry>0</entry> 341 <entry>0</entry>
@@ -396,6 +441,15 @@ flag is typically present for relative controls or action controls where
396writing a value will cause the device to carry out a given action 441writing a value will cause the device to carry out a given action
397(&eg; motor control) but no meaningful value can be returned.</entry> 442(&eg; motor control) but no meaningful value can be returned.</entry>
398 </row> 443 </row>
444 <row>
445 <entry><constant>V4L2_CTRL_FLAG_VOLATILE</constant></entry>
446 <entry>0x0080</entry>
447 <entry>This control is volatile, which means that the value of the control
448changes continuously. A typical example would be the current gain value if the device
449is in auto-gain mode. In such a case the hardware calculates the gain value based on
450the lighting conditions which can change over time. Note that setting a new value for
451a volatile control will have no effect. The new value will just be ignored.</entry>
452 </row>
399 </tbody> 453 </tbody>
400 </tgroup> 454 </tgroup>
401 </table> 455 </table>
@@ -424,11 +478,3 @@ or this particular menu item is not supported by the driver.</para>
424 </variablelist> 478 </variablelist>
425 </refsect1> 479 </refsect1>
426</refentry> 480</refentry>
427
428<!--
429Local Variables:
430mode: sgml
431sgml-parent-document: "v4l2.sgml"
432indent-tabs-mode: nil
433End:
434-->
diff --git a/Documentation/DocBook/v4l/vidioc-querystd.xml b/Documentation/DocBook/media/v4l/vidioc-querystd.xml
index 1a9e6039309..fe80a183d95 100644
--- a/Documentation/DocBook/v4l/vidioc-querystd.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-querystd.xml
@@ -62,28 +62,13 @@ current video input or output.</para>
62 62
63 <refsect1> 63 <refsect1>
64 &return-value; 64 &return-value;
65
66 <variablelist> 65 <variablelist>
67 <varlistentry> 66 <varlistentry>
68 <term><errorcode>EINVAL</errorcode></term> 67 <term><errorcode>ENODATA</errorcode></term>
69 <listitem>
70 <para>This ioctl is not supported.</para>
71 </listitem>
72 </varlistentry>
73 <varlistentry>
74 <term><errorcode>EBUSY</errorcode></term>
75 <listitem> 68 <listitem>
76 <para>The device is busy and therefore can not detect the standard</para> 69 <para>Standard video timings are not supported for this input or output.</para>
77 </listitem> 70 </listitem>
78 </varlistentry> 71 </varlistentry>
79 </variablelist> 72 </variablelist>
80 </refsect1> 73 </refsect1>
81</refentry> 74</refentry>
82
83<!--
84Local Variables:
85mode: sgml
86sgml-parent-document: "v4l2.sgml"
87indent-tabs-mode: nil
88End:
89-->
diff --git a/Documentation/DocBook/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
index 69800ae2334..78a06a9a5ec 100644
--- a/Documentation/DocBook/v4l/vidioc-reqbufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
@@ -48,28 +48,30 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <para>This ioctl is used to initiate <link linkend="mmap">memory 51<para>This ioctl is used to initiate <link linkend="mmap">memory mapped</link>,
52mapped</link> or <link linkend="userp">user pointer</link> 52<link linkend="userp">user pointer</link> or <link
53I/O. Memory mapped buffers are located in device memory and must be 53linkend="dmabuf">DMABUF</link> based I/O. Memory mapped buffers are located in
54allocated with this ioctl before they can be mapped into the 54device memory and must be allocated with this ioctl before they can be mapped
55application's address space. User buffers are allocated by 55into the application's address space. User buffers are allocated by
56applications themselves, and this ioctl is merely used to switch the 56applications themselves, and this ioctl is merely used to switch the driver
57driver into user pointer I/O mode and to setup some internal structures.</para> 57into user pointer I/O mode and to setup some internal structures.
58Similarly, DMABUF buffers are allocated by applications through a device
59driver, and this ioctl only configures the driver into DMABUF I/O mode without
60performing any direct allocation.</para>
58 61
59 <para>To allocate device buffers applications initialize all 62 <para>To allocate device buffers applications initialize all fields of the
60fields of the <structname>v4l2_requestbuffers</structname> structure. 63<structname>v4l2_requestbuffers</structname> structure. They set the
61They set the <structfield>type</structfield> field to the respective 64<structfield>type</structfield> field to the respective stream or buffer type,
62stream or buffer type, the <structfield>count</structfield> field to 65the <structfield>count</structfield> field to the desired number of buffers,
63the desired number of buffers, <structfield>memory</structfield> 66<structfield>memory</structfield> must be set to the requested I/O method and
64must be set to the requested I/O method and the <structfield>reserved</structfield> array 67the <structfield>reserved</structfield> array must be zeroed. When the ioctl is
65must be zeroed. When the ioctl 68called with a pointer to this structure the driver will attempt to allocate the
66is called with a pointer to this structure the driver will attempt to allocate 69requested number of buffers and it stores the actual number allocated in the
67the requested number of buffers and it stores the actual number 70<structfield>count</structfield> field. It can be smaller than the number
68allocated in the <structfield>count</structfield> field. It can be 71requested, even zero, when the driver runs out of free memory. A larger number
69smaller than the number requested, even zero, when the driver runs out 72is also possible when the driver requires more buffers to function correctly.
70of free memory. A larger number is also possible when the driver requires 73For example video output requires at least two buffers, one displayed and one
71more buffers to function correctly. For example video output requires at least two buffers, 74filled by the application.</para>
72one displayed and one filled by the application.</para>
73 <para>When the I/O method is not supported the ioctl 75 <para>When the I/O method is not supported the ioctl
74returns an &EINVAL;.</para> 76returns an &EINVAL;.</para>
75 77
@@ -92,25 +94,26 @@ streamoff.--></para>
92 <entry>The number of buffers requested or granted.</entry> 94 <entry>The number of buffers requested or granted.</entry>
93 </row> 95 </row>
94 <row> 96 <row>
95 <entry>&v4l2-buf-type;</entry> 97 <entry>__u32</entry>
96 <entry><structfield>type</structfield></entry> 98 <entry><structfield>type</structfield></entry>
97 <entry>Type of the stream or buffers, this is the same 99 <entry>Type of the stream or buffers, this is the same
98as the &v4l2-format; <structfield>type</structfield> field. See <xref 100as the &v4l2-format; <structfield>type</structfield> field. See <xref
99 linkend="v4l2-buf-type" /> for valid values.</entry> 101 linkend="v4l2-buf-type" /> for valid values.</entry>
100 </row> 102 </row>
101 <row> 103 <row>
102 <entry>&v4l2-memory;</entry> 104 <entry>__u32</entry>
103 <entry><structfield>memory</structfield></entry> 105 <entry><structfield>memory</structfield></entry>
104 <entry>Applications set this field to 106 <entry>Applications set this field to
105<constant>V4L2_MEMORY_MMAP</constant> or 107<constant>V4L2_MEMORY_MMAP</constant>,
106<constant>V4L2_MEMORY_USERPTR</constant>.</entry> 108<constant>V4L2_MEMORY_DMABUF</constant> or
109<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
110/>.</entry>
107 </row> 111 </row>
108 <row> 112 <row>
109 <entry>__u32</entry> 113 <entry>__u32</entry>
110 <entry><structfield>reserved</structfield>[2]</entry> 114 <entry><structfield>reserved</structfield>[2]</entry>
111 <entry>A place holder for future extensions and custom 115 <entry>A place holder for future extensions. This array should
112(driver defined) buffer types <constant>V4L2_BUF_TYPE_PRIVATE</constant> and 116be zeroed by applications.</entry>
113higher. This array should be zeroed by applications.</entry>
114 </row> 117 </row>
115 </tbody> 118 </tbody>
116 </tgroup> 119 </tgroup>
@@ -122,14 +125,6 @@ higher. This array should be zeroed by applications.</entry>
122 125
123 <variablelist> 126 <variablelist>
124 <varlistentry> 127 <varlistentry>
125 <term><errorcode>EBUSY</errorcode></term>
126 <listitem>
127 <para>The driver supports multiple opens and I/O is already
128in progress, or reallocation of buffers was attempted although one or
129more are still mapped.</para>
130 </listitem>
131 </varlistentry>
132 <varlistentry>
133 <term><errorcode>EINVAL</errorcode></term> 128 <term><errorcode>EINVAL</errorcode></term>
134 <listitem> 129 <listitem>
135 <para>The buffer type (<structfield>type</structfield> field) or the 130 <para>The buffer type (<structfield>type</structfield> field) or the
@@ -140,11 +135,3 @@ supported.</para>
140 </variablelist> 135 </variablelist>
141 </refsect1> 136 </refsect1>
142</refentry> 137</refentry>
143
144<!--
145Local Variables:
146mode: sgml
147sgml-parent-document: "v4l2.sgml"
148indent-tabs-mode: nil
149End:
150-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
new file mode 100644
index 00000000000..5b379e75219
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
@@ -0,0 +1,184 @@
1<refentry id="vidioc-s-hw-freq-seek">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_S_HW_FREQ_SEEK</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_S_HW_FREQ_SEEK</refname>
9 <refpurpose>Perform a hardware frequency seek</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_hw_freq_seek
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_S_HW_FREQ_SEEK</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>Start a hardware frequency seek from the current frequency.
53To do this applications initialize the <structfield>tuner</structfield>,
54<structfield>type</structfield>, <structfield>seek_upward</structfield>,
55<structfield>wrap_around</structfield>, <structfield>spacing</structfield>,
56<structfield>rangelow</structfield> and <structfield>rangehigh</structfield>
57fields, and zero out the <structfield>reserved</structfield> array of a
58&v4l2-hw-freq-seek; and call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant>
59ioctl with a pointer to this structure.</para>
60
61 <para>The <structfield>rangelow</structfield> and
62<structfield>rangehigh</structfield> fields can be set to a non-zero value to
63tell the driver to search a specific band. If the &v4l2-tuner;
64<structfield>capability</structfield> field has the
65<constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant> flag set, these values
66must fall within one of the bands returned by &VIDIOC-ENUM-FREQ-BANDS;. If
67the <constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant> flag is not set,
68then these values must exactly match those of one of the bands returned by
69&VIDIOC-ENUM-FREQ-BANDS;. If the current frequency of the tuner does not fall
70within the selected band it will be clamped to fit in the band before the
71seek is started.</para>
72
73 <para>If an error is returned, then the original frequency will
74 be restored.</para>
75
76 <para>This ioctl is supported if the <constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability is set.</para>
77
78 <para>If this ioctl is called from a non-blocking filehandle, then &EAGAIN; is
79 returned and no seek takes place.</para>
80
81 <table pgwide="1" frame="none" id="v4l2-hw-freq-seek">
82 <title>struct <structname>v4l2_hw_freq_seek</structname></title>
83 <tgroup cols="3">
84 &cs-str;
85 <tbody valign="top">
86 <row>
87 <entry>__u32</entry>
88 <entry><structfield>tuner</structfield></entry>
89 <entry>The tuner index number. This is the
90same value as in the &v4l2-input; <structfield>tuner</structfield>
91field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
92 </row>
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>type</structfield></entry>
96 <entry>The tuner type. This is the same value as in the
97&v4l2-tuner; <structfield>type</structfield> field. See <xref
98 linkend="v4l2-tuner-type" /></entry>
99 </row>
100 <row>
101 <entry>__u32</entry>
102 <entry><structfield>seek_upward</structfield></entry>
103 <entry>If non-zero, seek upward from the current frequency, else seek downward.</entry>
104 </row>
105 <row>
106 <entry>__u32</entry>
107 <entry><structfield>wrap_around</structfield></entry>
108 <entry>If non-zero, wrap around when at the end of the frequency range, else stop seeking.
109 The &v4l2-tuner; <structfield>capability</structfield> field will tell you what the
110 hardware supports.
111 </entry>
112 </row>
113 <row>
114 <entry>__u32</entry>
115 <entry><structfield>spacing</structfield></entry>
116 <entry>If non-zero, defines the hardware seek resolution in Hz. The driver selects the nearest value that is supported by the device. If spacing is zero a reasonable default value is used.</entry>
117 </row>
118 <row>
119 <entry>__u32</entry>
120 <entry><structfield>rangelow</structfield></entry>
121 <entry>If non-zero, the lowest tunable frequency of the band to
122search in units of 62.5 kHz, or if the &v4l2-tuner;
123<structfield>capability</structfield> field has the
124<constant>V4L2_TUNER_CAP_LOW</constant> flag set, in units of 62.5 Hz.
125If <structfield>rangelow</structfield> is zero a reasonable default value
126is used.</entry>
127 </row>
128 <row>
129 <entry>__u32</entry>
130 <entry><structfield>rangehigh</structfield></entry>
131 <entry>If non-zero, the highest tunable frequency of the band to
132search in units of 62.5 kHz, or if the &v4l2-tuner;
133<structfield>capability</structfield> field has the
134<constant>V4L2_TUNER_CAP_LOW</constant> flag set, in units of 62.5 Hz.
135If <structfield>rangehigh</structfield> is zero a reasonable default value
136is used.</entry>
137 </row>
138 <row>
139 <entry>__u32</entry>
140 <entry><structfield>reserved</structfield>[5]</entry>
141 <entry>Reserved for future extensions. Applications
142 must set the array to zero.</entry>
143 </row>
144 </tbody>
145 </tgroup>
146 </table>
147 </refsect1>
148
149 <refsect1>
150 &return-value;
151
152 <variablelist>
153 <varlistentry>
154 <term><errorcode>EINVAL</errorcode></term>
155 <listitem>
156 <para>The <structfield>tuner</structfield> index is out of
157bounds, the <structfield>wrap_around</structfield> value is not supported or
158one of the values in the <structfield>type</structfield>,
159<structfield>rangelow</structfield> or <structfield>rangehigh</structfield>
160fields is wrong.</para>
161 </listitem>
162 </varlistentry>
163 <varlistentry>
164 <term><errorcode>EAGAIN</errorcode></term>
165 <listitem>
166 <para>Attempted to call <constant>VIDIOC_S_HW_FREQ_SEEK</constant>
167 with the filehandle in non-blocking mode.</para>
168 </listitem>
169 </varlistentry>
170 <varlistentry>
171 <term><errorcode>ENODATA</errorcode></term>
172 <listitem>
173 <para>The hardware seek found no channels.</para>
174 </listitem>
175 </varlistentry>
176 <varlistentry>
177 <term><errorcode>EBUSY</errorcode></term>
178 <listitem>
179 <para>Another hardware seek is already in progress.</para>
180 </listitem>
181 </varlistentry>
182 </variablelist>
183 </refsect1>
184</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-streamon.xml b/Documentation/DocBook/media/v4l/vidioc-streamon.xml
index 75ed39bf4d2..716ea15e54a 100644
--- a/Documentation/DocBook/v4l/vidioc-streamon.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-streamon.xml
@@ -74,7 +74,12 @@ not transmitted yet. I/O returns to the same state as after calling
74stream type. This is the same as &v4l2-requestbuffers; 74stream type. This is the same as &v4l2-requestbuffers;
75<structfield>type</structfield>.</para> 75<structfield>type</structfield>.</para>
76 76
77 <para>Note applications can be preempted for unknown periods right 77 <para>If <constant>VIDIOC_STREAMON</constant> is called when streaming
78is already in progress, or if <constant>VIDIOC_STREAMOFF</constant> is called
79when streaming is already stopped, then the ioctl does nothing and 0 is
80returned.</para>
81
82 <para>Note that applications can be preempted for unknown periods right
78before or after the <constant>VIDIOC_STREAMON</constant> or 83before or after the <constant>VIDIOC_STREAMON</constant> or
79<constant>VIDIOC_STREAMOFF</constant> calls, there is no notion of 84<constant>VIDIOC_STREAMOFF</constant> calls, there is no notion of
80starting or stopping "now". Buffer timestamps can be used to 85starting or stopping "now". Buffer timestamps can be used to
@@ -88,9 +93,9 @@ synchronize with other events.</para>
88 <varlistentry> 93 <varlistentry>
89 <term><errorcode>EINVAL</errorcode></term> 94 <term><errorcode>EINVAL</errorcode></term>
90 <listitem> 95 <listitem>
91 <para>Streaming I/O is not supported, the buffer 96 <para>The buffer<structfield>type</structfield> is not supported,
92<structfield>type</structfield> is not supported, or no buffers have 97 or no buffers have been allocated (memory mapping) or enqueued
93been allocated (memory mapping) or enqueued (output) yet.</para> 98 (output) yet.</para>
94 </listitem> 99 </listitem>
95 </varlistentry> 100 </varlistentry>
96 <varlistentry> 101 <varlistentry>
@@ -105,11 +110,3 @@ been allocated (memory mapping) or enqueued (output) yet.</para>
105 </variablelist> 110 </variablelist>
106 </refsect1> 111 </refsect1>
107</refentry> 112</refentry>
108
109<!--
110Local Variables:
111mode: sgml
112sgml-parent-document: "v4l2.sgml"
113indent-tabs-mode: nil
114End:
115-->
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
index 2f8f4f0a023..2f8f4f0a023 100644
--- a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-interval.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
index 79ce42b7c60..79ce42b7c60 100644
--- a/Documentation/DocBook/v4l/vidioc-subdev-enum-frame-size.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
index a6b3432449f..a6b3432449f 100644
--- a/Documentation/DocBook/v4l/vidioc-subdev-enum-mbus-code.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
index 06197323a8c..4cddd788c58 100644
--- a/Documentation/DocBook/v4l/vidioc-subdev-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
@@ -58,9 +58,12 @@
58 <title>Description</title> 58 <title>Description</title>
59 59
60 <note> 60 <note>
61 <title>Experimental</title> 61 <title>Obsolete</title>
62 <para>This is an <link linkend="experimental">experimental</link> 62
63 interface and may change in the future.</para> 63 <para>This is an <link linkend="obsolete">obsolete</link>
64 interface and may be removed in the future. It is superseded by
65 <link linkend="vidioc-subdev-g-selection">the selection
66 API</link>.</para>
64 </note> 67 </note>
65 68
66 <para>To retrieve the current crop rectangle applications set the 69 <para>To retrieve the current crop rectangle applications set the
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-edid.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-edid.xml
new file mode 100644
index 00000000000..bbd18f0e6ed
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-edid.xml
@@ -0,0 +1,152 @@
1<refentry id="vidioc-subdev-g-edid">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_S_EDID</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_EDID</refname>
9 <refname>VIDIOC_SUBDEV_S_EDID</refname>
10 <refpurpose>Get or set the EDID of a video receiver/transmitter</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_subdev_edid *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 <funcsynopsis>
23 <funcprototype>
24 <funcdef>int <function>ioctl</function></funcdef>
25 <paramdef>int <parameter>fd</parameter></paramdef>
26 <paramdef>int <parameter>request</parameter></paramdef>
27 <paramdef>const struct v4l2_subdev_edid *<parameter>argp</parameter></paramdef>
28 </funcprototype>
29 </funcsynopsis>
30 </refsynopsisdiv>
31
32 <refsect1>
33 <title>Arguments</title>
34
35 <variablelist>
36 <varlistentry>
37 <term><parameter>fd</parameter></term>
38 <listitem>
39 <para>&fd;</para>
40 </listitem>
41 </varlistentry>
42 <varlistentry>
43 <term><parameter>request</parameter></term>
44 <listitem>
45 <para>VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_S_EDID</para>
46 </listitem>
47 </varlistentry>
48 <varlistentry>
49 <term><parameter>argp</parameter></term>
50 <listitem>
51 <para></para>
52 </listitem>
53 </varlistentry>
54 </variablelist>
55 </refsect1>
56
57 <refsect1>
58 <title>Description</title>
59 <para>These ioctls can be used to get or set an EDID associated with an input pad
60 from a receiver or an output pad of a transmitter subdevice.</para>
61
62 <para>To get the EDID data the application has to fill in the <structfield>pad</structfield>,
63 <structfield>start_block</structfield>, <structfield>blocks</structfield> and <structfield>edid</structfield>
64 fields and call <constant>VIDIOC_SUBDEV_G_EDID</constant>. The current EDID from block
65 <structfield>start_block</structfield> and of size <structfield>blocks</structfield>
66 will be placed in the memory <structfield>edid</structfield> points to. The <structfield>edid</structfield>
67 pointer must point to memory at least <structfield>blocks</structfield>&nbsp;*&nbsp;128 bytes
68 large (the size of one block is 128 bytes).</para>
69
70 <para>If there are fewer blocks than specified, then the driver will set <structfield>blocks</structfield>
71 to the actual number of blocks. If there are no EDID blocks available at all, then the error code
72 ENODATA is set.</para>
73
74 <para>If blocks have to be retrieved from the sink, then this call will block until they
75 have been read.</para>
76
77 <para>To set the EDID blocks of a receiver the application has to fill in the <structfield>pad</structfield>,
78 <structfield>blocks</structfield> and <structfield>edid</structfield> fields and set
79 <structfield>start_block</structfield> to 0. It is not possible to set part of an EDID,
80 it is always all or nothing. Setting the EDID data is only valid for receivers as it makes
81 no sense for a transmitter.</para>
82
83 <para>The driver assumes that the full EDID is passed in. If there are more EDID blocks than
84 the hardware can handle then the EDID is not written, but instead the error code E2BIG is set
85 and <structfield>blocks</structfield> is set to the maximum that the hardware supports.
86 If <structfield>start_block</structfield> is any
87 value other than 0 then the error code EINVAL is set.</para>
88
89 <para>To disable an EDID you set <structfield>blocks</structfield> to 0. Depending on the
90 hardware this will drive the hotplug pin low and/or block the source from reading the EDID
91 data in some way. In any case, the end result is the same: the EDID is no longer available.
92 </para>
93
94 <table pgwide="1" frame="none" id="v4l2-subdev-edid">
95 <title>struct <structname>v4l2_subdev_edid</structname></title>
96 <tgroup cols="3">
97 &cs-str;
98 <tbody valign="top">
99 <row>
100 <entry>__u32</entry>
101 <entry><structfield>pad</structfield></entry>
102 <entry>Pad for which to get/set the EDID blocks.</entry>
103 </row>
104 <row>
105 <entry>__u32</entry>
106 <entry><structfield>start_block</structfield></entry>
107 <entry>Read the EDID from starting with this block. Must be 0 when setting
108 the EDID.</entry>
109 </row>
110 <row>
111 <entry>__u32</entry>
112 <entry><structfield>blocks</structfield></entry>
113 <entry>The number of blocks to get or set. Must be less or equal to 256 (the
114 maximum number of blocks as defined by the standard). When you set the EDID and
115 <structfield>blocks</structfield> is 0, then the EDID is disabled or erased.</entry>
116 </row>
117 <row>
118 <entry>__u8&nbsp;*</entry>
119 <entry><structfield>edid</structfield></entry>
120 <entry>Pointer to memory that contains the EDID. The minimum size is
121 <structfield>blocks</structfield>&nbsp;*&nbsp;128.</entry>
122 </row>
123 <row>
124 <entry>__u32</entry>
125 <entry><structfield>reserved</structfield>[5]</entry>
126 <entry>Reserved for future extensions. Applications and drivers must
127 set the array to zero.</entry>
128 </row>
129 </tbody>
130 </tgroup>
131 </table>
132 </refsect1>
133
134 <refsect1>
135 &return-value;
136
137 <variablelist>
138 <varlistentry>
139 <term><errorcode>ENODATA</errorcode></term>
140 <listitem>
141 <para>The EDID data is not available.</para>
142 </listitem>
143 </varlistentry>
144 <varlistentry>
145 <term><errorcode>E2BIG</errorcode></term>
146 <listitem>
147 <para>The EDID data you provided is more than the hardware can handle.</para>
148 </listitem>
149 </varlistentry>
150 </variablelist>
151 </refsect1>
152</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml
index f367c570c53..a67cde6f8c5 100644
--- a/Documentation/DocBook/v4l/vidioc-subdev-g-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml
@@ -177,4 +177,7 @@
177 </varlistentry> 177 </varlistentry>
178 </variablelist> 178 </variablelist>
179 </refsect1> 179 </refsect1>
180 <refsect1>
181 &return-value;
182 </refsect1>
180</refentry> 183</refentry>
diff --git a/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml
index 0bc3ea22d31..0bc3ea22d31 100644
--- a/Documentation/DocBook/v4l/vidioc-subdev-g-frame-interval.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
new file mode 100644
index 00000000000..1ba9e999af3
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
@@ -0,0 +1,165 @@
1<refentry id="vidioc-subdev-g-selection">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_SELECTION</refname>
9 <refname>VIDIOC_SUBDEV_S_SELECTION</refname>
10 <refpurpose>Get or set selection rectangles on a subdev pad</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_subdev_selection *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental">experimental</link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>The selections are used to configure various image
59 processing functionality performed by the subdevs which affect the
60 image size. This currently includes cropping, scaling and
61 composition.</para>
62
63 <para>The selection API replaces <link
64 linkend="vidioc-subdev-g-crop">the old subdev crop API</link>. All
65 the function of the crop API, and more, are supported by the
66 selections API.</para>
67
68 <para>See <xref linkend="subdev"></xref> for
69 more information on how each selection target affects the image
70 processing pipeline inside the subdevice.</para>
71
72 <refsect2>
73 <title>Types of selection targets</title>
74
75 <para>There are two types of selection targets: actual and bounds. The
76 actual targets are the targets which configure the hardware. The BOUNDS
77 target will return a rectangle that contain all possible actual
78 rectangles.</para>
79 </refsect2>
80
81 <refsect2>
82 <title>Discovering supported features</title>
83
84 <para>To discover which targets are supported, the user can
85 perform <constant>VIDIOC_SUBDEV_G_SELECTION</constant> on them.
86 Any unsupported target will return
87 <constant>EINVAL</constant>.</para>
88
89 <para>Selection targets and flags are documented in <xref
90 linkend="v4l2-selections-common"/>.</para>
91
92 <table pgwide="1" frame="none" id="v4l2-subdev-selection">
93 <title>struct <structname>v4l2_subdev_selection</structname></title>
94 <tgroup cols="3">
95 &cs-str;
96 <tbody valign="top">
97 <row>
98 <entry>__u32</entry>
99 <entry><structfield>which</structfield></entry>
100 <entry>Active or try selection, from
101 &v4l2-subdev-format-whence;.</entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>pad</structfield></entry>
106 <entry>Pad number as reported by the media framework.</entry>
107 </row>
108 <row>
109 <entry>__u32</entry>
110 <entry><structfield>target</structfield></entry>
111 <entry>Target selection rectangle. See
112 <xref linkend="v4l2-selections-common" />.</entry>
113 </row>
114 <row>
115 <entry>__u32</entry>
116 <entry><structfield>flags</structfield></entry>
117 <entry>Flags. See
118 <xref linkend="v4l2-selection-flags" />.</entry>
119 </row>
120 <row>
121 <entry>&v4l2-rect;</entry>
122 <entry><structfield>rect</structfield></entry>
123 <entry>Selection rectangle, in pixels.</entry>
124 </row>
125 <row>
126 <entry>__u32</entry>
127 <entry><structfield>reserved</structfield>[8]</entry>
128 <entry>Reserved for future extensions. Applications and drivers must
129 set the array to zero.</entry>
130 </row>
131 </tbody>
132 </tgroup>
133 </table>
134 </refsect2>
135
136 </refsect1>
137
138 <refsect1>
139 &return-value;
140
141 <variablelist>
142 <varlistentry>
143 <term><errorcode>EBUSY</errorcode></term>
144 <listitem>
145 <para>The selection rectangle can't be changed because the
146 pad is currently busy. This can be caused, for instance, by
147 an active video stream on the pad. The ioctl must not be
148 retried without performing another action to fix the problem
149 first. Only returned by
150 <constant>VIDIOC_SUBDEV_S_SELECTION</constant></para>
151 </listitem>
152 </varlistentry>
153 <varlistentry>
154 <term><errorcode>EINVAL</errorcode></term>
155 <listitem>
156 <para>The &v4l2-subdev-selection;
157 <structfield>pad</structfield> references a non-existing
158 pad, the <structfield>which</structfield> field references a
159 non-existing format, or the selection target is not
160 supported on the given subdev pad.</para>
161 </listitem>
162 </varlistentry>
163 </variablelist>
164 </refsect1>
165</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
new file mode 100644
index 00000000000..5c70b616d81
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
@@ -0,0 +1,206 @@
1<refentry id="vidioc-subscribe-event">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refname>
9 <refpurpose>Subscribe or unsubscribe event</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_event_subscription
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>Subscribe or unsubscribe V4L2 event. Subscribed events are
53 dequeued by using the &VIDIOC-DQEVENT; ioctl.</para>
54
55 <table frame="none" pgwide="1" id="v4l2-event-subscription">
56 <title>struct <structname>v4l2_event_subscription</structname></title>
57 <tgroup cols="3">
58 &cs-str;
59 <tbody valign="top">
60 <row>
61 <entry>__u32</entry>
62 <entry><structfield>type</structfield></entry>
63 <entry>Type of the event.</entry>
64 </row>
65 <row>
66 <entry>__u32</entry>
67 <entry><structfield>id</structfield></entry>
68 <entry>ID of the event source. If there is no ID associated with
69 the event source, then set this to 0. Whether or not an event
70 needs an ID depends on the event type.</entry>
71 </row>
72 <row>
73 <entry>__u32</entry>
74 <entry><structfield>flags</structfield></entry>
75 <entry>Event flags, see <xref linkend="event-flags" />.</entry>
76 </row>
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>reserved</structfield>[5]</entry>
80 <entry>Reserved for future extensions. Drivers and applications
81 must set the array to zero.</entry>
82 </row>
83 </tbody>
84 </tgroup>
85 </table>
86
87 <table frame="none" pgwide="1" id="event-type">
88 <title>Event Types</title>
89 <tgroup cols="3">
90 &cs-def;
91 <tbody valign="top">
92 <row>
93 <entry><constant>V4L2_EVENT_ALL</constant></entry>
94 <entry>0</entry>
95 <entry>All events. V4L2_EVENT_ALL is valid only for
96 VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
97 </entry>
98 </row>
99 <row>
100 <entry><constant>V4L2_EVENT_VSYNC</constant></entry>
101 <entry>1</entry>
102 <entry>This event is triggered on the vertical sync.
103 This event has a &v4l2-event-vsync; associated with it.
104 </entry>
105 </row>
106 <row>
107 <entry><constant>V4L2_EVENT_EOS</constant></entry>
108 <entry>2</entry>
109 <entry>This event is triggered when the end of a stream is reached.
110 This is typically used with MPEG decoders to report to the application
111 when the last of the MPEG stream has been decoded.
112 </entry>
113 </row>
114 <row>
115 <entry><constant>V4L2_EVENT_CTRL</constant></entry>
116 <entry>3</entry>
117 <entry><para>This event requires that the <structfield>id</structfield>
118 matches the control ID from which you want to receive events.
119 This event is triggered if the control's value changes, if a
120 button control is pressed or if the control's flags change.
121 This event has a &v4l2-event-ctrl; associated with it. This struct
122 contains much of the same information as &v4l2-queryctrl; and
123 &v4l2-control;.</para>
124
125 <para>If the event is generated due to a call to &VIDIOC-S-CTRL; or
126 &VIDIOC-S-EXT-CTRLS;, then the event will <emphasis>not</emphasis> be sent to
127 the file handle that called the ioctl function. This prevents
128 nasty feedback loops. If you <emphasis>do</emphasis> want to get the
129 event, then set the <constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant>
130 flag.
131 </para>
132
133 <para>This event type will ensure that no information is lost when
134 more events are raised than there is room internally. In that
135 case the &v4l2-event-ctrl; of the second-oldest event is kept,
136 but the <structfield>changes</structfield> field of the
137 second-oldest event is ORed with the <structfield>changes</structfield>
138 field of the oldest event.</para>
139 </entry>
140 </row>
141 <row>
142 <entry><constant>V4L2_EVENT_FRAME_SYNC</constant></entry>
143 <entry>4</entry>
144 <entry>
145 <para>Triggered immediately when the reception of a
146 frame has begun. This event has a
147 &v4l2-event-frame-sync; associated with it.</para>
148
149 <para>If the hardware needs to be stopped in the case of a
150 buffer underrun it might not be able to generate this event.
151 In such cases the <structfield>frame_sequence</structfield>
152 field in &v4l2-event-frame-sync; will not be incremented. This
153 causes two consecutive frame sequence numbers to have n times
154 frame interval in between them.</para>
155 </entry>
156 </row>
157 <row>
158 <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry>
159 <entry>0x08000000</entry>
160 <entry>Base event number for driver-private events.</entry>
161 </row>
162 </tbody>
163 </tgroup>
164 </table>
165
166 <table pgwide="1" frame="none" id="event-flags">
167 <title>Event Flags</title>
168 <tgroup cols="3">
169 &cs-def;
170 <tbody valign="top">
171 <row>
172 <entry><constant>V4L2_EVENT_SUB_FL_SEND_INITIAL</constant></entry>
173 <entry>0x0001</entry>
174 <entry>When this event is subscribed an initial event will be sent
175 containing the current status. This only makes sense for events
176 that are triggered by a status change such as <constant>V4L2_EVENT_CTRL</constant>.
177 Other events will ignore this flag.</entry>
178 </row>
179 <row>
180 <entry><constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant></entry>
181 <entry>0x0002</entry>
182 <entry><para>If set, then events directly caused by an ioctl will also be sent to
183 the filehandle that called that ioctl. For example, changing a control using
184 &VIDIOC-S-CTRL; will cause a V4L2_EVENT_CTRL to be sent back to that same
185 filehandle. Normally such events are suppressed to prevent feedback loops
186 where an application changes a control to a one value and then another, and
187 then receives an event telling it that that control has changed to the first
188 value.</para>
189
190 <para>Since it can't tell whether that event was caused by another application
191 or by the &VIDIOC-S-CTRL; call it is hard to decide whether to set the
192 control to the value in the event, or ignore it.</para>
193
194 <para>Think carefully when you set this flag so you won't get into situations
195 like that.</para>
196 </entry>
197 </row>
198 </tbody>
199 </tgroup>
200 </table>
201
202 </refsect1>
203 <refsect1>
204 &return-value;
205 </refsect1>
206</refentry>
diff --git a/Documentation/DocBook/media/vbi_525.gif.b64 b/Documentation/DocBook/media/vbi_525.gif.b64
new file mode 100644
index 00000000000..d5dcf06f2ae
--- /dev/null
+++ b/Documentation/DocBook/media/vbi_525.gif.b64
@@ -0,0 +1,84 @@
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
84E9gqF8bNWgAAOw==
diff --git a/Documentation/DocBook/media/vbi_625.gif.b64 b/Documentation/DocBook/media/vbi_625.gif.b64
new file mode 100644
index 00000000000..831f49a0282
--- /dev/null
+++ b/Documentation/DocBook/media/vbi_625.gif.b64
@@ -0,0 +1,90 @@
1R0lGODlhKgPIAIAAAAAAAP///yH5BAEAAAEALAAAAAAqA8gAAAL+jI+py+0Po5y02ouz3rz7D4bi
2SJbmiabqWgJs475LLCt0fdy4oeN9/QPuEEFZkXVcJZXDXNP5pC0TgGrOCqVMidhAVdqVbLmx73Wc
3FXfNabGFzfbG3Rz0bDO/2G1hzJ7o8ceT56dB+Gb4JciD16fnh3VI97bmOCE4tyhVUSbHKOlg1xnp
46aWFKDfaecrqQlrK2vqK2bjImPFaiLuKuxvY+2HLq1tniHcLzFmWy6mnitxMeWs5iaZo0xZhTahj
5rdzXHa3m6Eod+h1+LW7MXpx83P7962y+ju4O//5oGr8PHUvs36VjoCBsujTsxp5t0MIB1MZLYb07
6CBt+QlWRHz/+Zto62NLYD+Ouj7Q+ZlMj0J80kCr1iaSHT6WmeAXPAXOVzNs0hw8fHAwzkeLATz9E
7xVo2qCa2o7AA9Wz5cmXIgFAhKu2Yb2q1rFSrDmUZFeUgrQaLdhWriFZKGKt6LNTSlopXthevrIUB
8d9rSp6FGcbnLwCRYe2ELo+VK+CxEwF9XkoypeCtZn05dTiqlNupMxnyWxXkL17OVtHz7loMTdO+4
9pGsMsz0dKbVcyK7LXsWbyKSweTA95qatDHho4T7TqqsdWN1toaFbExNMHMkTzimgR2cSZfpgI9qt
10T8aePbz4IQebeLcsZDz56ecjv2g/9z37+fTNd6+vPb/+/fz++/v/D2CAAg5IYIEGHohgggouyGCD
11Dj4IYYQSTkhhhRZeiGGGGm7IYYcefghiiCKOSGKJJp6IYooqrsjidyrAh9yL+K2nng/31WgjjtzN
12mKOO8lFHxhlJxRjkkEY2tloWy51k2mxAVoaQQkImRiRuIyEmD5ZIomeVYMLIZhMkS6rWm4vJecZl
13cWBsRomUz+Vlymg4bWflYnGWo5FOGZ02FphPYmbkmHQmRxRSgzJXpntl/UlmcIca5ItvilJJx2OS
14TkrZo5k6CgemfBDFKJPF7ZRTIZsMgxUip4qKKFN5UropSKD54xasW9p6a65VBiYmb/dc2qZuwMaH
15laXvZEb+FbKPCKpkm68KutBoTshZWpN6MRqtm6H+8ZmTulabqplhXikuNtBhgqqnM6SLa7jE2nZd
16rGzK5CeUqMxJq6l2YavvTn6yGVG7zGn77aZgvOvuruvGexnCndXLq5YCC2Vsmg2LUzGcTSm8r7fg
170pUKxMgwdOdY/O4JaMkFf/pqyiv/Jau9CY/asqatOlwnzuM6JvHMOsPsZaQZ/3zzV0NfdnS4HL3c
18KsBZpnIk01NCHbXP1o4MsSjgyAzp0xsddzHRHqOz2289d83wmb46e/aibauZNhXGMWuz3KjNG6Vz
19+fooHY/p8Q0ejYDL6PeO9hX+4+DVsRr4DjByPMLjE5v+ILnUJ1Qe9t+Cb855j4d/jrnVfSuOQuii
20N+5555qrbjjrrTt+Y4uyz0577bbfjnvuuu/Oe+++/w588MIPT3zxxh+PfPLKL8+87rWGYLqI0TdP
21ffWwM249oXKDgC/y02cPfvgkkPJ97t137075HKovfvvuQ1KXh9zKJ6V37A7P/vv6739Oa0BFnoRK
22QG9+2PlJMLDnu/zxb4EMxJPJ/DLA/sXvF0EogsgG5hQDkupeCOydAhkIwvcdAYJeqYdfymOMCvLK
23Swe7yKqgkLU4dZB3AaRbCG8YwhrOEGazUaHJNuKboqjQaRBMSDrqBkOu4W9uTAQbDp8IRSV2jFtm
242Y7+thwIDyzi64VIBKIMvQip+/Gwit5Tkw2jiMbsGcVRPfyhBTdGq7gY6ovoG1UL6ximJSwtVLjT
25YRr/mMZZFctJRZSgLswiR73gMWcsqw0Jx0a8DwJyksAj4CCjRr7T2aSCiQTiIiMGsvg8UorBkyQl
26T7k7S3aNXQJEm2lWxcl9bRGFnWFM2TAIyuOZEpUpOqNHLhgMX9ahXqq02xZTQrCdRQyWdpolq+Yk
27uTdqMoG8BOEnZSSsHYLRRmukFAnFGKOA2ayVsBjhNkUgTVcab5fVNNE1F5fNk33wnY2y2iOBWbQ2
288rFj9axLNBmZy3W2c4H0vFwXcTmUeXaxmBmUlf3+LkmSdJprn5kb50AvWruCUu6g3gKNQrtZmns+
29dJUU/WE/6bjRgAIUoyx1J0e599I0eNQ+INXVPaEH0ZTeAZzE2QI7WwrU7Hw0KzNdT00rOkqckjSm
309jynUvMJyaBKVX5MDSJN9jHUj+UzqTCdGtWcOECJyAmf8CqSbWDTxLSiVa1MZA1b5+bWt5ImZHI1
31Dj2YZddgiSyvel1rXc3w17bSNbCiIWxhDUsGwyoWbNdYrGITO1jCJjatRXIsYs/gV7betbJkhZtM
32ndqChkaPJ6fYTdk2g9pyQUmVrJVJQDS6Qnak9pBX1RxXxyfa2o4LmoG7LW6nVdJjgfa3imzc/Ez+
33K9ubKNdiuWytSJz7XKbCliKzxapuE+fJ3k5wHVOoX3AB4tvIAYKnxEUp4Yp7Xj5Od6LLtS5tmYtQ
348Lo2uq5Fbns5+N7Xei68T82ufl3J2/Tyt78Bxm6BS5fb9HJ0vXI57X2jcUv50pe7842uffOLX/f+
35t3UDPmAS59Xd8X63MR32sD9tO1zxfti4y0phcjEMYdV+dsISpnB9XfzgVuS4xgberk79S+Pdphid
36CRbwkEML3KpKmMH6OC6OYaxjKGtVNdDlMYn1e2ENZ3jLQdbuFxe34grL68hdRa+RyaviQo02g51F
37kpN74WApV0rGFumy0sQs3yxzOcpatjOY/eX+Zbols06wCXSbrwzWPyt5w9hdsHQfHVM0L5POMfPz
38mC09Zj3HWM6XZPToFo3nT7Nv0F7e3KhJ+WNHa5rPe04opUkN4FDf+cZwfnGfWY3pH59am2UGda51
39PZ5dj7glb+4Xp5d66yl3VNax/nVzHx3nZM9ZuCiutrV7vN9gZ3t1xW7xjqct7YoK2dlUZnasV+3q
40Y2cqwsL2tY2vLerrDfu68ea2t40dbmS32nIzfreVkYblJ+d73d8GOLxLzeFtHzzhC1e0qgW+705H
41fJrlJveyLb5sdIN74gSnNsM/DvJ6N1zk2H5dt1Vla45v8tWofjbG+01hjUt80wO/dMgRXvL+nOsc
42CHM1Qs/fw9fhkEtMmrBhovMW2Mn+Vel1Zbpcnf50r7KN6CMpOj6DjoSfZ/3o1dG6Erz+da5Pdexk
43L7vZz472tKt97Wxvu9vfDve4y33udK+73e+O97zrfe9877vf/w74wAt+8IQvvOEPj/jEK37xjG+8
444x8P+chLfvKUr7zlL4/5zGt+85zvvOfx7sNrXfzzpC89gyQB6zqbfvWsL9Bh7xgyNbd+9rT3zxwr
453aly1n73vAcdMw7rxt4Lf/iE4+LX2rJH4it/+bLNvSI7JXbmS3/61K++9a+P/exrf/vc7773vw/+
468It//OQvv/nPj/70q3/97G+/+98P//j+y3/+9K+//e+P//zrf//877///w+AASiAA0iABWiAB4iA
47CaiAC8iADeiADwiBtoc4n+Y6FChvFYg6qaOBG/g6HNiBq3OBE7gua1I1FCd1JKhsXkVa4jaCPRRD
48XoOCKUg1MMeCtVQZ0RdVZQVD/+I1dzImWsMT0AKDUmeCR3I3HHOELXdSahMoP/g0n/GCUdKETvgn
495MMnJ3MYX4VFRQgoUChIboMmybdSIHOFYqhSfQFoJlWDQGOEYjMLs2A5b7iC6kQzaCJ6ayhLX6VN
50JONAgHVUdSiHu2KFPoaHD5QykrZDsYEq3VQSUzQ5qzUyMniDOTiGNoeFGPE8/DZjQjj+XzhIiXfm
51ibymegeFLBqkiZFYM4XoMXqjiqNHiskSikqIKIX2iDA3K9mSJ9QiiZmAiq3YhrIIjCoYjOrFilQo
52dGamibzoMlxoViozBrhIg8yojDOYjM6hi9XoXZcohf/whVaBWYi4LZXQh7WYhNsiil9Gi6eIe4lY
53KsP4Um6yV+04jKVIV7U4ilVIVKkYKzXGUAZHS3QoGbEniRv0j/tYWpmojqT1h+5yTANZaY5Whc8g
54Q8QEJ/AIjlrTi+aIMkn0M7lgKAupPQTTjWiIexfpDBZhhp+4PQ/Zj2TYUNpYh81CkRsJezKYSUt4
55hi6piDBJkuOYkji5ks5nSUA4JZz+uI1KMpPHyBIjeTVqBpKvcYNRmCTRCJBNmYtPaZV22Ip5cHv8
56xpVEWJVQiZRMKZakYZRS+HNkyYRaqJYtaIRS6Y0zGI/zRmlEJoIKFoIeaIF6mYEg6Jcf+JeNlpd/
57Y0qFGTsY2JeCGZiKCZiNuZeO+ZiMCZnnZZikg2CWaVCYiWSaWV6I6XB8mZiRKZmiGYGlaZqniZqp
58qZqryZqt2WuDOZl4uZikKZux+ZmzGZq5WZu2mZmc2ZueeZm+aZfC2V+wyZupZpy0eZu4uZzHuZlE
59OYUK85UlaJA6uJTSuTXU6IvTeJbwpUw9CDluKTZAWZ3N8TZiWZdulZ7UaY9s6Z3+NqidDjmNmFiR
60ntAtKRiI9qknh+GFgoh842iTqvCR7QmWDmmI79mT6hJKCgpVBkpm5RmewQWODRqSP5mTMWmhFLow
61XyOPzdBCC/VfBVmJBqOS5BlfIPomJeqOGvqd40mX71gL53km8RQscdOi6siRCHqiOMqNDGouwCSi
62TUKCSXmUYLSfRzmHYYmeD3mK98meI+qLKgqhUbqWBEqIDpqhUOqS63mOXfqkPJp6SgpgF+RgTnNv
636Uil8MiOKcpr9AhHzNgsUjpiSZMRXGqidzqCV7c2ERqkVLqicroXdEozb5qQZNSeikimiSiROEGk
64YMhm+FifPTo5v7dPGNkyWTr+pzJ6oQ6ahy76p16KqSy6oYLqp6DqpTB6qqU4oeeIkBjzhDv5iNMZ
65n1NapUlKq/DplOT4P1+6qTwqXbEoqp7lqakao5qKqz66klwqTFQkWJAzV0Z3V31KosT5msmpm7up
66nMH5OcCprdaKrdn6m9yqU5W5reK6meUKms05mteqruwart7aru46rncZr99qr/farelar/mqr+/K
67nPvqr//qmgNLsAVrsAeLsAl7O8ansNP3U9ZjKaHasID0sNxTsc3Dbi86sfxzaPzRsZOUse62sR9y
68Ho8BI+RUp1KhhlMVshc7sgMSG8N0pUGZi8HET2KRYUxGSS37sh60jMuCZgD+Sqgn6U+xtLLTJqIS
695bInEkD7+LE9qyASQShBCBX3g0j66KHFZbRDS3CkhkfQtLQu9UqGKrJQmyD+s1O1MpciRrYn9opm
70xkrPMkO0VEVqe7QNdFlm2yIFpoxusap1ezO8lTWdFJVu25U3qjKpeDBhWyI1BKx6CyJJJWltyahW
71dCrRgowf9kKH26s3qXrSAkV+BLm086EvKaYNirIZpyqlK2Lsxbmiij5xG7qjKzwh9oxA8k8eCmtf
72m10+pTFXyrgkEry0GyDd5Q2ykbtmtE1DtFN2YUGY2ranyjzDq3ePi05PO3U+IEzF6rsV8byg25mT
73BpJS+0aryqnTe33mC1P+WUVv+iYE6otUMzss4utNpuu6yGlN6auxWWtUMbFGWZW8S6Gza1hiXHJg
74w4lD1Jt38EtBNOW/NMdN+ysqBYwwFDwXB1ycxCsgDGxV/du+7ssdHAyhFtwuJFy/Ioy4GuyxEjwQ
757OtpMxfCLEwnJvwyNGxTD6qjKkwjLvy++QjBPVy2UmTD0zTETYXCWqrD9MHDMexxuMbEAdxGAZwJ
76sNoCQOGH2MtZjhVZSWdZr7d0W9x00cqseAV2Z7VXz2pZYNx0XRxXSafGXRzGUwjHbwVZcxzHscfG
7739hEWWzHalXH2/saYsWrxYqSMnxxA6xyhoRviTxpyMqkV/Zy9+iPEMf+v+q2cqaGw8BSxEsGaZyR
78jWsWZmdmyM92xLOGyD9cyfdWc7iBN5Dsb678b6ZMyaWVcqjcY6XcbKfMySAGiqO8iUFMaJncaxh8
79rpucboucyoxMXTksybP2ygZnYzIXRrXsxLfsy3Wmy5A8wGH6Wbh8admMaNesusCMS+AMw7RcawUH
80wgm5otzscs8sy+mMzNW8cSjmzeNmzrkcaUr4yYFGzhh0z738z4c80PaLcvK8yo08nu68o84cy/qM
810Adtyay8rcRcXsY8yW56buKsptPTzwkX0C6Xzx03zy1MzcccngxdcfDcbNE8yyatziSdbSFdzgX9
82yxqdaRxdZIpm0b/+iaY+PcgeJs2UEW3KjKeQGMmPDM2cHNHJbMv1DNKAbMpYLNKJ2kH1I9W5TNWk
83nNWwTHJ9M9SKnNDL7Mgq7YpevdTa/NJuUNRPjXNvbWQKt3NwPdc8nSNhjRdtTc9wqtQOjdZ+PclN
84jc4TrdBy/dV0bdcjp62SZNYEdtdr3RF6jdKH2s6VLYqN/cuCDdOETdYX2G6f7dmGfdg3F9c7gtex
85FdOXvNCWrV6sDZF3KNGqbNT6FNqKDWyiXdqkXdeL/diazdYnDdXsfNmuXWVq7duRDdznPNqJrdvM
86vdu8XdG4DWan3bypTdFlTdzmNm4ufdzTbN2FbdvFLN3OvdzkHd7RF93bJf3b393ZKZ3dSY3Z2AzZ
873s3ZAhzd551mNv3Ozw3U5lHGpfPfl3NGA351Rmfgj6XHd7xYUKdZCR51rGE2vVJ1E04eAU45Fl7F
881htMGv5LHN7hXZ3EIS7iI07iJW7iJ47iKa7iK87iLe7iLw7jMS7jM07jNW7jN47jOa7jO87jPe7j
89Pw7kQV68E+EQhqrAQs6aZmirzYzkQC4aAmmIygHlTS7kP0G3gRJ8VB7kAGCRbQB8uqflTu6Ci4jl
90ehjmPs7laf58XB7Fau6DR56aBQAAOw==
diff --git a/Documentation/DocBook/media/vbi_hsync.gif.b64 b/Documentation/DocBook/media/vbi_hsync.gif.b64
new file mode 100644
index 00000000000..cdafabed5c1
--- /dev/null
+++ b/Documentation/DocBook/media/vbi_hsync.gif.b64
@@ -0,0 +1,43 @@
1R0lGODlhBwHJAOcAAAAAAAEBAQICAgMDAwQEBAUFBQYGBgcHBwgICAkJCQoKCgsLCwwMDA0NDQ4O
2Dg8PDxAQEBERERISEhMTExQUFBUVFRYWFhcXFxgYGBkZGRoaGhsbGxwcHB0dHR4eHh8fHyAgICEh
3ISIiIiMjIyQkJCUlJSYmJicnJygoKCkpKSoqKisrKywsLC0tLS4uLi8vLzAwMDExMTIyMjMzMzQ0
4NDU1NTY2Njc3Nzg4ODk5OTo6Ojs7Ozw8PD09PT4+Pj8/P0BAQEFBQUJCQkNDQ0REREVFRUZGRkdH
5R0hISElJSUpKSktLS0xMTE1NTU5OTk9PT1BQUFFRUVJSUlNTU1RUVFVVVVZWVldXV1hYWFlZWVpa
6WltbW1xcXF1dXV5eXl9fX2BgYGFhYWJiYmNjY2RkZGVlZWZmZmdnZ2hoaGlpaWpqamtra2xsbG1t
7bW5ubm9vb3BwcHFxcXJycnNzc3R0dHV1dXZ2dnd3d3h4eHl5eXp6ent7e3x8fH19fX5+fn9/f4CA
8gIGBgYKCgoODg4SEhIWFhYaGhoeHh4iIiImJiYqKiouLi4yMjI2NjY6Ojo+Pj5CQkJGRkZKSkpOT
9k5SUlJWVlZaWlpeXl5iYmJmZmZqampubm5ycnJ2dnZ6enp+fn6CgoKGhoaKioqOjo6SkpKWlpaam
10pqenp6ioqKmpqaqqqqurq6ysrK2tra6urq+vr7CwsLGxsbKysrOzs7S0tLW1tba2tre3t7i4uLm5
11ubq6uru7u7y8vL29vb6+vr+/v8DAwMHBwcLCwsPDw8TExMXFxcbGxsfHx8jIyMnJycrKysvLy8zM
12zM3Nzc7Ozs/Pz9DQ0NHR0dLS0tPT09TU1NXV1dbW1tfX19jY2NnZ2dra2tvb29zc3N3d3d7e3t/f
133+Dg4OHh4eLi4uPj4+Tk5OXl5ebm5ufn5+jo6Onp6erq6uvr6+zs7O3t7e7u7u/v7/Dw8PHx8fLy
148vPz8/T09PX19fb29vf39/j4+Pn5+fr6+vv7+/z8/P39/f7+/v///ywAAAAABwHJAAAI/gD/CRxI
15sKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPHjyBDihxJsqTJkyhTqlzJsqXLlzBjypxJs6bN
16mzhz6tzJs6fPn0CDCh1KtKjRo0iTKl3KtKnTp1CjSp1KtarVqyQBYN1aVSvXr1C9gh2rVOxCsV4B
17mE2b0GxDt2TjtnWo9l9du2rrar2bl+BavQL3ApZLeC5du3j77g2MF/FAtIv1AoZb+Gfey5gza97M
18ua/ByJ4XI8b8+PHl0ZkrE6XsuCDr1xD5ip7d2m9pv6IZqxYK+zPC3g/T0mabGLdk4YEH7wYK3PZB
19yqyXSw/++3l139OzS4R+Hbtr7eCp/nv/bp18+PMKuZcfj7792fXm47ufz/52fd308zu/X3u/fv3N
20+Sfgf/MFaJ98BLpnIH4IJojegv0d6GB7EEI4oXYVdnfhgxoOyOCG4WXIH4jTidggiSV2KOGHKGa3
21oIUtqvaiijEuNyN8NUp344g5EqYef9H1KNePJwYpJFlEehjhkT7iuCKLTMZl4olRgjWlklV+deWT
22WWpJ45JgdrnVllCKOeaXMJrZFZpfqmkVmWG6SRWcRsoZFZl12hkWmzxemCdXeAr555lOgjnof4de
23tSOVG0KWaFl3GVponH52ZumlmGaq6aaY0pjmhJppmRqQbTaKm6gewgnio2uSOumq/jpO+qmDrE5F
24p6AtSZZeSrf2WOtEoZEmm2C/Astnn6CapKtjbClWZki95lhsbLcRtxmlHkVb47TBWcuYcGvxeiyj
25fp7kGbOJEZscStrGyK1T7bb4blPxojgvU4Hiulu+vto4Lpck3rvUoljCuq+npZp6cKGz0uovwwmX
26u3CRESc7sZINJyhwWbJW7PDFXGZM4MZI1WsvyCF7rDHKZYqMKMuSvmqwS5yOypHJAcP0K8k4z5xr
27RTz/C7DPLO2crdDPEr2S0R31rDDNQB/dMbISQ01R0FOT+/TPV0vtqtZVc21s0wjLLONFJG8XNdkQ
28y5z2UNy+TW3XbN8Ho9xBxa3z/to3lz0i3nljBPhbfG+UZMoqG5db2+KJ9O7gDDHd99dUstpscsgR
29x6CzqC0O0uN70z05xVlHdNpwgvUHGWrFef5RppGHPjawNddue3nB5nYufsKmu/vrhL/3kuRqq1Tr
306pd/G+6HymGLdvC7Dl+46cYD7aywoSleXGOtj5RnnZALP3vx7Bb2J/iyk6++subTZanz2ZJ2te2R
31st8+9NaFHx/x1Jff5GFz0Z9/+Dc3c9EnSK4ryfLG1z89GaY6AjwQARvnQLfBr24XpFrizGSk+tlv
32aOJbXwULxj3/gTB6DBwhCD2oQLBtkIR66mAEVTe9AqqQhCzMigvNhsIbrnCG/m6ZIAB9+MPqwfCB
33IryhDI14QiQ2kIiUyqH3dqhBHtoJfSZs4gu16CYsGpCKYDyinLz4QS5W8YwcjF0WkxbCJxKRjC0M
34oxnlmCU46tA19BPiCO04xZjM8IBq/GL63hjIMloNitiS4uv+aMUxRk5/ihQXIhMJSUaiUUzgq6RM
35LEmhR5qLk2LsoieVBco5YnKUCiwlG2OIyqyoMoNpPIsm/TjJRMKya698JYZiB7kELq2W6OvlLT8H
36TF62MJfM+R3+lnnIAB5zk8zBHOZks7/BqEuXwXwmLS1DzestDnmNud5MsqlDZPKGWMkzT+9CBc33
375PGd8IynPOfJwkilLp37/gniN8dZyDgOcienCadudnc6anavnT30p/SKokvH9fOO/+RmqxIK0YUi
38EosBNVz2tnnRR9KzUxyFYjAzqpHehZSQbdxYEBEqUhcVM0WTbGhNZBor+7xNj8SMaT7TJc1Tgcug
39Bf2LNZnlKODp1KYCbR64ujcZ0OBxe5FR3jAfqsSdNiujucMnPnl3uaxiraNI3ep3hro8161uNLbB
40G00fNk3abG+aAiXqcKqlGG8Oy6hgLang+HnUjERyiBFV4VpZitKa5rWEgKJjldgpKs5d9KOQjeym
41XkrSMdnzpYatpWY3y1l6NXGB3RlsZ9eDzp7ydKmnW1dAlTnaQ94zruEkS2tUnfra1iIUdRvlHueu
42iS7N2daic1VncEEz3N/6MbVyNU1TV0tUdL3VuF6aKnQhJdrpWve62M2udrfL3e5697vgDa94x0ve
438lIkIAA7
diff --git a/Documentation/DocBook/media.tmpl b/Documentation/DocBook/media_api.tmpl
index 88f2cc680cc..4e8e8985cc1 100644
--- a/Documentation/DocBook/media.tmpl
+++ b/Documentation/DocBook/media_api.tmpl
@@ -8,7 +8,8 @@
8<!ENTITY ie "i.&nbsp;e."> 8<!ENTITY ie "i.&nbsp;e.">
9<!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>."> 9<!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>.">
10<!ENTITY i2c "I<superscript>2</superscript>C"> 10<!ENTITY i2c "I<superscript>2</superscript>C">
11<!ENTITY return-value "<title>Return Value</title><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately:</para>"> 11<!ENTITY return-value "<title>Return Value</title><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately. The generic error codes are described at the <link linkend='gen-errors'>Generic Error Codes</link> chapter.</para>">
12<!ENTITY return-value-dvb "<para>RETURN VALUE</para><para>On success <returnvalue>0</returnvalue> is returned, on error <returnvalue>-1</returnvalue> and the <varname>errno</varname> variable is set appropriately. The generic error codes are described at the <link linkend='gen-errors'>Generic Error Codes</link> chapter.</para>">
12<!ENTITY manvol "<manvolnum>2</manvolnum>"> 13<!ENTITY manvol "<manvolnum>2</manvolnum>">
13 14
14<!-- Table templates: structs, structs w/union, defines. --> 15<!-- Table templates: structs, structs w/union, defines. -->
@@ -110,6 +111,11 @@ Foundation. A copy of the license is included in the chapter entitled
110&sub-media-controller; 111&sub-media-controller;
111</part> 112</part>
112 113
114<chapter id="gen_errors">
115&sub-gen-errors;
116</chapter>
117
118
113&sub-fdl-appendix; 119&sub-fdl-appendix;
114 120
115</book> 121</book>
diff --git a/Documentation/DocBook/v4l/bayer.pdf b/Documentation/DocBook/v4l/bayer.pdf
deleted file mode 100644
index 905e60e6cd4..00000000000
--- a/Documentation/DocBook/v4l/bayer.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/bayer.png b/Documentation/DocBook/v4l/bayer.png
deleted file mode 100644
index 9b15fb22e81..00000000000
--- a/Documentation/DocBook/v4l/bayer.png
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/controls.xml b/Documentation/DocBook/v4l/controls.xml
deleted file mode 100644
index a920ee80f64..00000000000
--- a/Documentation/DocBook/v4l/controls.xml
+++ /dev/null
@@ -1,2103 +0,0 @@
1 <section id="control">
2 <title>User Controls</title>
3
4 <para>Devices typically have a number of user-settable controls
5such as brightness, saturation and so on, which would be presented to
6the user on a graphical user interface. But, different devices
7will have different controls available, and furthermore, the range of
8possible values, and the default value will vary from device to
9device. The control ioctls provide the information and a mechanism to
10create a nice user interface for these controls that will work
11correctly with any device.</para>
12
13 <para>All controls are accessed using an ID value. V4L2 defines
14several IDs for specific purposes. Drivers can also implement their
15own custom controls using <constant>V4L2_CID_PRIVATE_BASE</constant>
16and higher values. The pre-defined control IDs have the prefix
17<constant>V4L2_CID_</constant>, and are listed in <xref
18linkend="control-id" />. The ID is used when querying the attributes of
19a control, and when getting or setting the current value.</para>
20
21 <para>Generally applications should present controls to the user
22without assumptions about their purpose. Each control comes with a
23name string the user is supposed to understand. When the purpose is
24non-intuitive the driver writer should provide a user manual, a user
25interface plug-in or a driver specific panel application. Predefined
26IDs were introduced to change a few controls programmatically, for
27example to mute a device during a channel switch.</para>
28
29 <para>Drivers may enumerate different controls after switching
30the current video input or output, tuner or modulator, or audio input
31or output. Different in the sense of other bounds, another default and
32current value, step size or other menu items. A control with a certain
33<emphasis>custom</emphasis> ID can also change name and
34type.<footnote>
35 <para>It will be more convenient for applications if drivers
36make use of the <constant>V4L2_CTRL_FLAG_DISABLED</constant> flag, but
37that was never required.</para>
38 </footnote> Control values are stored globally, they do not
39change when switching except to stay within the reported bounds. They
40also do not change &eg; when the device is opened or closed, when the
41tuner radio frequency is changed or generally never without
42application request. Since V4L2 specifies no event mechanism, panel
43applications intended to cooperate with other panel applications (be
44they built into a larger application, as a TV viewer) may need to
45regularly poll control values to update their user
46interface.<footnote>
47 <para>Applications could call an ioctl to request events.
48After another process called &VIDIOC-S-CTRL; or another ioctl changing
49shared properties the &func-select; function would indicate
50readability until any ioctl (querying the properties) is
51called.</para>
52 </footnote></para>
53
54 <table pgwide="1" frame="none" id="control-id">
55 <title>Control IDs</title>
56 <tgroup cols="3">
57 &cs-def;
58 <thead>
59 <row>
60 <entry>ID</entry>
61 <entry>Type</entry>
62 <entry>Description</entry>
63 </row>
64 </thead>
65 <tbody valign="top">
66 <row>
67 <entry><constant>V4L2_CID_BASE</constant></entry>
68 <entry></entry>
69 <entry>First predefined ID, equal to
70<constant>V4L2_CID_BRIGHTNESS</constant>.</entry>
71 </row>
72 <row>
73 <entry><constant>V4L2_CID_USER_BASE</constant></entry>
74 <entry></entry>
75 <entry>Synonym of <constant>V4L2_CID_BASE</constant>.</entry>
76 </row>
77 <row>
78 <entry><constant>V4L2_CID_BRIGHTNESS</constant></entry>
79 <entry>integer</entry>
80 <entry>Picture brightness, or more precisely, the black
81level.</entry>
82 </row>
83 <row>
84 <entry><constant>V4L2_CID_CONTRAST</constant></entry>
85 <entry>integer</entry>
86 <entry>Picture contrast or luma gain.</entry>
87 </row>
88 <row>
89 <entry><constant>V4L2_CID_SATURATION</constant></entry>
90 <entry>integer</entry>
91 <entry>Picture color saturation or chroma gain.</entry>
92 </row>
93 <row>
94 <entry><constant>V4L2_CID_HUE</constant></entry>
95 <entry>integer</entry>
96 <entry>Hue or color balance.</entry>
97 </row>
98 <row>
99 <entry><constant>V4L2_CID_AUDIO_VOLUME</constant></entry>
100 <entry>integer</entry>
101 <entry>Overall audio volume. Note some drivers also
102provide an OSS or ALSA mixer interface.</entry>
103 </row>
104 <row>
105 <entry><constant>V4L2_CID_AUDIO_BALANCE</constant></entry>
106 <entry>integer</entry>
107 <entry>Audio stereo balance. Minimum corresponds to all
108the way left, maximum to right.</entry>
109 </row>
110 <row>
111 <entry><constant>V4L2_CID_AUDIO_BASS</constant></entry>
112 <entry>integer</entry>
113 <entry>Audio bass adjustment.</entry>
114 </row>
115 <row>
116 <entry><constant>V4L2_CID_AUDIO_TREBLE</constant></entry>
117 <entry>integer</entry>
118 <entry>Audio treble adjustment.</entry>
119 </row>
120 <row>
121 <entry><constant>V4L2_CID_AUDIO_MUTE</constant></entry>
122 <entry>boolean</entry>
123 <entry>Mute audio, &ie; set the volume to zero, however
124without affecting <constant>V4L2_CID_AUDIO_VOLUME</constant>. Like
125ALSA drivers, V4L2 drivers must mute at load time to avoid excessive
126noise. Actually the entire device should be reset to a low power
127consumption state.</entry>
128 </row>
129 <row>
130 <entry><constant>V4L2_CID_AUDIO_LOUDNESS</constant></entry>
131 <entry>boolean</entry>
132 <entry>Loudness mode (bass boost).</entry>
133 </row>
134 <row>
135 <entry><constant>V4L2_CID_BLACK_LEVEL</constant></entry>
136 <entry>integer</entry>
137 <entry>Another name for brightness (not a synonym of
138<constant>V4L2_CID_BRIGHTNESS</constant>). This control is deprecated
139and should not be used in new drivers and applications.</entry>
140 </row>
141 <row>
142 <entry><constant>V4L2_CID_AUTO_WHITE_BALANCE</constant></entry>
143 <entry>boolean</entry>
144 <entry>Automatic white balance (cameras).</entry>
145 </row>
146 <row>
147 <entry><constant>V4L2_CID_DO_WHITE_BALANCE</constant></entry>
148 <entry>button</entry>
149 <entry>This is an action control. When set (the value is
150ignored), the device will do a white balance and then hold the current
151setting. Contrast this with the boolean
152<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant>, which, when
153activated, keeps adjusting the white balance.</entry>
154 </row>
155 <row>
156 <entry><constant>V4L2_CID_RED_BALANCE</constant></entry>
157 <entry>integer</entry>
158 <entry>Red chroma balance.</entry>
159 </row>
160 <row>
161 <entry><constant>V4L2_CID_BLUE_BALANCE</constant></entry>
162 <entry>integer</entry>
163 <entry>Blue chroma balance.</entry>
164 </row>
165 <row>
166 <entry><constant>V4L2_CID_GAMMA</constant></entry>
167 <entry>integer</entry>
168 <entry>Gamma adjust.</entry>
169 </row>
170 <row>
171 <entry><constant>V4L2_CID_WHITENESS</constant></entry>
172 <entry>integer</entry>
173 <entry>Whiteness for grey-scale devices. This is a synonym
174for <constant>V4L2_CID_GAMMA</constant>. This control is deprecated
175and should not be used in new drivers and applications.</entry>
176 </row>
177 <row>
178 <entry><constant>V4L2_CID_EXPOSURE</constant></entry>
179 <entry>integer</entry>
180 <entry>Exposure (cameras). [Unit?]</entry>
181 </row>
182 <row>
183 <entry><constant>V4L2_CID_AUTOGAIN</constant></entry>
184 <entry>boolean</entry>
185 <entry>Automatic gain/exposure control.</entry>
186 </row>
187 <row>
188 <entry><constant>V4L2_CID_GAIN</constant></entry>
189 <entry>integer</entry>
190 <entry>Gain control.</entry>
191 </row>
192 <row>
193 <entry><constant>V4L2_CID_HFLIP</constant></entry>
194 <entry>boolean</entry>
195 <entry>Mirror the picture horizontally.</entry>
196 </row>
197 <row>
198 <entry><constant>V4L2_CID_VFLIP</constant></entry>
199 <entry>boolean</entry>
200 <entry>Mirror the picture vertically.</entry>
201 </row>
202 <row>
203 <entry><constant>V4L2_CID_HCENTER_DEPRECATED</constant> (formerly <constant>V4L2_CID_HCENTER</constant>)</entry>
204 <entry>integer</entry>
205 <entry>Horizontal image centering. This control is
206deprecated. New drivers and applications should use the <link
207linkend="camera-controls">Camera class controls</link>
208<constant>V4L2_CID_PAN_ABSOLUTE</constant>,
209<constant>V4L2_CID_PAN_RELATIVE</constant> and
210<constant>V4L2_CID_PAN_RESET</constant> instead.</entry>
211 </row>
212 <row>
213 <entry><constant>V4L2_CID_VCENTER_DEPRECATED</constant>
214 (formerly <constant>V4L2_CID_VCENTER</constant>)</entry>
215 <entry>integer</entry>
216 <entry>Vertical image centering. Centering is intended to
217<emphasis>physically</emphasis> adjust cameras. For image cropping see
218<xref linkend="crop" />, for clipping <xref linkend="overlay" />. This
219control is deprecated. New drivers and applications should use the
220<link linkend="camera-controls">Camera class controls</link>
221<constant>V4L2_CID_TILT_ABSOLUTE</constant>,
222<constant>V4L2_CID_TILT_RELATIVE</constant> and
223<constant>V4L2_CID_TILT_RESET</constant> instead.</entry>
224 </row>
225 <row id="v4l2-power-line-frequency">
226 <entry><constant>V4L2_CID_POWER_LINE_FREQUENCY</constant></entry>
227 <entry>enum</entry>
228 <entry>Enables a power line frequency filter to avoid
229flicker. Possible values for <constant>enum v4l2_power_line_frequency</constant> are:
230<constant>V4L2_CID_POWER_LINE_FREQUENCY_DISABLED</constant> (0),
231<constant>V4L2_CID_POWER_LINE_FREQUENCY_50HZ</constant> (1) and
232<constant>V4L2_CID_POWER_LINE_FREQUENCY_60HZ</constant> (2).</entry>
233 </row>
234 <row>
235 <entry><constant>V4L2_CID_HUE_AUTO</constant></entry>
236 <entry>boolean</entry>
237 <entry>Enables automatic hue control by the device. The
238effect of setting <constant>V4L2_CID_HUE</constant> while automatic
239hue control is enabled is undefined, drivers should ignore such
240request.</entry>
241 </row>
242 <row>
243 <entry><constant>V4L2_CID_WHITE_BALANCE_TEMPERATURE</constant></entry>
244 <entry>integer</entry>
245 <entry>This control specifies the white balance settings
246as a color temperature in Kelvin. A driver should have a minimum of
2472800 (incandescent) to 6500 (daylight). For more information about
248color temperature see <ulink
249url="http://en.wikipedia.org/wiki/Color_temperature">Wikipedia</ulink>.</entry>
250 </row>
251 <row>
252 <entry><constant>V4L2_CID_SHARPNESS</constant></entry>
253 <entry>integer</entry>
254 <entry>Adjusts the sharpness filters in a camera. The
255minimum value disables the filters, higher values give a sharper
256picture.</entry>
257 </row>
258 <row>
259 <entry><constant>V4L2_CID_BACKLIGHT_COMPENSATION</constant></entry>
260 <entry>integer</entry>
261 <entry>Adjusts the backlight compensation in a camera. The
262minimum value disables backlight compensation.</entry>
263 </row>
264 <row>
265 <entry><constant>V4L2_CID_CHROMA_AGC</constant></entry>
266 <entry>boolean</entry>
267 <entry>Chroma automatic gain control.</entry>
268 </row>
269 <row>
270 <entry><constant>V4L2_CID_CHROMA_GAIN</constant></entry>
271 <entry>integer</entry>
272 <entry>Adjusts the Chroma gain control (for use when chroma AGC
273 is disabled).</entry>
274 </row>
275 <row>
276 <entry><constant>V4L2_CID_COLOR_KILLER</constant></entry>
277 <entry>boolean</entry>
278 <entry>Enable the color killer (&ie; force a black &amp; white image in case of a weak video signal).</entry>
279 </row>
280 <row id="v4l2-colorfx">
281 <entry><constant>V4L2_CID_COLORFX</constant></entry>
282 <entry>enum</entry>
283 <entry>Selects a color effect. Possible values for
284<constant>enum v4l2_colorfx</constant> are:
285<constant>V4L2_COLORFX_NONE</constant> (0),
286<constant>V4L2_COLORFX_BW</constant> (1),
287<constant>V4L2_COLORFX_SEPIA</constant> (2),
288<constant>V4L2_COLORFX_NEGATIVE</constant> (3),
289<constant>V4L2_COLORFX_EMBOSS</constant> (4),
290<constant>V4L2_COLORFX_SKETCH</constant> (5),
291<constant>V4L2_COLORFX_SKY_BLUE</constant> (6),
292<constant>V4L2_COLORFX_GRASS_GREEN</constant> (7),
293<constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and
294<constant>V4L2_COLORFX_VIVID</constant> (9).</entry>
295 </row>
296 <row>
297 <entry><constant>V4L2_CID_ROTATE</constant></entry>
298 <entry>integer</entry>
299 <entry>Rotates the image by specified angle. Common angles are 90,
300 270 and 180. Rotating the image to 90 and 270 will reverse the height
301 and width of the display window. It is necessary to set the new height and
302 width of the picture using the &VIDIOC-S-FMT; ioctl according to
303 the rotation angle selected.</entry>
304 </row>
305 <row>
306 <entry><constant>V4L2_CID_BG_COLOR</constant></entry>
307 <entry>integer</entry>
308 <entry>Sets the background color on the current output device.
309 Background color needs to be specified in the RGB24 format. The
310 supplied 32 bit value is interpreted as bits 0-7 Red color information,
311 bits 8-15 Green color information, bits 16-23 Blue color
312 information and bits 24-31 must be zero.</entry>
313 </row>
314 <row>
315 <entry><constant>V4L2_CID_ILLUMINATORS_1</constant>
316 <constant>V4L2_CID_ILLUMINATORS_2</constant></entry>
317 <entry>boolean</entry>
318 <entry>Switch on or off the illuminator 1 or 2 of the device
319 (usually a microscope).</entry>
320 </row>
321 <row>
322 <entry><constant>V4L2_CID_LASTP1</constant></entry>
323 <entry></entry>
324 <entry>End of the predefined control IDs (currently
325<constant>V4L2_CID_ILLUMINATORS_2</constant> + 1).</entry>
326 </row>
327 <row>
328 <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry>
329 <entry></entry>
330 <entry>ID of the first custom (driver specific) control.
331Applications depending on particular custom controls should check the
332driver name and version, see <xref linkend="querycap" />.</entry>
333 </row>
334 </tbody>
335 </tgroup>
336 </table>
337
338 <para>Applications can enumerate the available controls with the
339&VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls, get and set a
340control value with the &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls.
341Drivers must implement <constant>VIDIOC_QUERYCTRL</constant>,
342<constant>VIDIOC_G_CTRL</constant> and
343<constant>VIDIOC_S_CTRL</constant> when the device has one or more
344controls, <constant>VIDIOC_QUERYMENU</constant> when it has one or
345more menu type controls.</para>
346
347 <example>
348 <title>Enumerating all controls</title>
349
350 <programlisting>
351&v4l2-queryctrl; queryctrl;
352&v4l2-querymenu; querymenu;
353
354static void
355enumerate_menu (void)
356{
357 printf (" Menu items:\n");
358
359 memset (&amp;querymenu, 0, sizeof (querymenu));
360 querymenu.id = queryctrl.id;
361
362 for (querymenu.index = queryctrl.minimum;
363 querymenu.index &lt;= queryctrl.maximum;
364 querymenu.index++) {
365 if (0 == ioctl (fd, &VIDIOC-QUERYMENU;, &amp;querymenu)) {
366 printf (" %s\n", querymenu.name);
367 }
368 }
369}
370
371memset (&amp;queryctrl, 0, sizeof (queryctrl));
372
373for (queryctrl.id = V4L2_CID_BASE;
374 queryctrl.id &lt; V4L2_CID_LASTP1;
375 queryctrl.id++) {
376 if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
377 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
378 continue;
379
380 printf ("Control %s\n", queryctrl.name);
381
382 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
383 enumerate_menu ();
384 } else {
385 if (errno == EINVAL)
386 continue;
387
388 perror ("VIDIOC_QUERYCTRL");
389 exit (EXIT_FAILURE);
390 }
391}
392
393for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
394 queryctrl.id++) {
395 if (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
396 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
397 continue;
398
399 printf ("Control %s\n", queryctrl.name);
400
401 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
402 enumerate_menu ();
403 } else {
404 if (errno == EINVAL)
405 break;
406
407 perror ("VIDIOC_QUERYCTRL");
408 exit (EXIT_FAILURE);
409 }
410}
411</programlisting>
412 </example>
413
414 <example>
415 <title>Changing controls</title>
416
417 <programlisting>
418&v4l2-queryctrl; queryctrl;
419&v4l2-control; control;
420
421memset (&amp;queryctrl, 0, sizeof (queryctrl));
422queryctrl.id = V4L2_CID_BRIGHTNESS;
423
424if (-1 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
425 if (errno != EINVAL) {
426 perror ("VIDIOC_QUERYCTRL");
427 exit (EXIT_FAILURE);
428 } else {
429 printf ("V4L2_CID_BRIGHTNESS is not supported\n");
430 }
431} else if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED) {
432 printf ("V4L2_CID_BRIGHTNESS is not supported\n");
433} else {
434 memset (&amp;control, 0, sizeof (control));
435 control.id = V4L2_CID_BRIGHTNESS;
436 control.value = queryctrl.default_value;
437
438 if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &amp;control)) {
439 perror ("VIDIOC_S_CTRL");
440 exit (EXIT_FAILURE);
441 }
442}
443
444memset (&amp;control, 0, sizeof (control));
445control.id = V4L2_CID_CONTRAST;
446
447if (0 == ioctl (fd, &VIDIOC-G-CTRL;, &amp;control)) {
448 control.value += 1;
449
450 /* The driver may clamp the value or return ERANGE, ignored here */
451
452 if (-1 == ioctl (fd, &VIDIOC-S-CTRL;, &amp;control)
453 &amp;&amp; errno != ERANGE) {
454 perror ("VIDIOC_S_CTRL");
455 exit (EXIT_FAILURE);
456 }
457/* Ignore if V4L2_CID_CONTRAST is unsupported */
458} else if (errno != EINVAL) {
459 perror ("VIDIOC_G_CTRL");
460 exit (EXIT_FAILURE);
461}
462
463control.id = V4L2_CID_AUDIO_MUTE;
464control.value = TRUE; /* silence */
465
466/* Errors ignored */
467ioctl (fd, VIDIOC_S_CTRL, &amp;control);
468</programlisting>
469 </example>
470 </section>
471
472 <section id="extended-controls">
473 <title>Extended Controls</title>
474
475 <section>
476 <title>Introduction</title>
477
478 <para>The control mechanism as originally designed was meant
479to be used for user settings (brightness, saturation, etc). However,
480it turned out to be a very useful model for implementing more
481complicated driver APIs where each driver implements only a subset of
482a larger API.</para>
483
484 <para>The MPEG encoding API was the driving force behind
485designing and implementing this extended control mechanism: the MPEG
486standard is quite large and the currently supported hardware MPEG
487encoders each only implement a subset of this standard. Further more,
488many parameters relating to how the video is encoded into an MPEG
489stream are specific to the MPEG encoding chip since the MPEG standard
490only defines the format of the resulting MPEG stream, not how the
491video is actually encoded into that format.</para>
492
493 <para>Unfortunately, the original control API lacked some
494features needed for these new uses and so it was extended into the
495(not terribly originally named) extended control API.</para>
496
497 <para>Even though the MPEG encoding API was the first effort
498to use the Extended Control API, nowadays there are also other classes
499of Extended Controls, such as Camera Controls and FM Transmitter Controls.
500The Extended Controls API as well as all Extended Controls classes are
501described in the following text.</para>
502 </section>
503
504 <section>
505 <title>The Extended Control API</title>
506
507 <para>Three new ioctls are available: &VIDIOC-G-EXT-CTRLS;,
508&VIDIOC-S-EXT-CTRLS; and &VIDIOC-TRY-EXT-CTRLS;. These ioctls act on
509arrays of controls (as opposed to the &VIDIOC-G-CTRL; and
510&VIDIOC-S-CTRL; ioctls that act on a single control). This is needed
511since it is often required to atomically change several controls at
512once.</para>
513
514 <para>Each of the new ioctls expects a pointer to a
515&v4l2-ext-controls;. This structure contains a pointer to the control
516array, a count of the number of controls in that array and a control
517class. Control classes are used to group similar controls into a
518single class. For example, control class
519<constant>V4L2_CTRL_CLASS_USER</constant> contains all user controls
520(&ie; all controls that can also be set using the old
521<constant>VIDIOC_S_CTRL</constant> ioctl). Control class
522<constant>V4L2_CTRL_CLASS_MPEG</constant> contains all controls
523relating to MPEG encoding, etc.</para>
524
525 <para>All controls in the control array must belong to the
526specified control class. An error is returned if this is not the
527case.</para>
528
529 <para>It is also possible to use an empty control array (count
530== 0) to check whether the specified control class is
531supported.</para>
532
533 <para>The control array is a &v4l2-ext-control; array. The
534<structname>v4l2_ext_control</structname> structure is very similar to
535&v4l2-control;, except for the fact that it also allows for 64-bit
536values and pointers to be passed.</para>
537
538 <para>It is important to realize that due to the flexibility of
539controls it is necessary to check whether the control you want to set
540actually is supported in the driver and what the valid range of values
541is. So use the &VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls to
542check this. Also note that it is possible that some of the menu
543indices in a control of type <constant>V4L2_CTRL_TYPE_MENU</constant>
544may not be supported (<constant>VIDIOC_QUERYMENU</constant> will
545return an error). A good example is the list of supported MPEG audio
546bitrates. Some drivers only support one or two bitrates, others
547support a wider range.</para>
548 </section>
549
550 <section>
551 <title>Enumerating Extended Controls</title>
552
553 <para>The recommended way to enumerate over the extended
554controls is by using &VIDIOC-QUERYCTRL; in combination with the
555<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag:</para>
556
557 <informalexample>
558 <programlisting>
559&v4l2-queryctrl; qctrl;
560
561qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
562while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;qctrl)) {
563 /* ... */
564 qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
565}
566</programlisting>
567 </informalexample>
568
569 <para>The initial control ID is set to 0 ORed with the
570<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag. The
571<constant>VIDIOC_QUERYCTRL</constant> ioctl will return the first
572control with a higher ID than the specified one. When no such controls
573are found an error is returned.</para>
574
575 <para>If you want to get all controls within a specific control
576class, then you can set the initial
577<structfield>qctrl.id</structfield> value to the control class and add
578an extra check to break out of the loop when a control of another
579control class is found:</para>
580
581 <informalexample>
582 <programlisting>
583qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
584while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;qctrl)) {
585 if (V4L2_CTRL_ID2CLASS (qctrl.id) != V4L2_CTRL_CLASS_MPEG)
586 break;
587 /* ... */
588 qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
589 }
590</programlisting>
591 </informalexample>
592
593 <para>The 32-bit <structfield>qctrl.id</structfield> value is
594subdivided into three bit ranges: the top 4 bits are reserved for
595flags (&eg; <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>) and are not
596actually part of the ID. The remaining 28 bits form the control ID, of
597which the most significant 12 bits define the control class and the
598least significant 16 bits identify the control within the control
599class. It is guaranteed that these last 16 bits are always non-zero
600for controls. The range of 0x1000 and up are reserved for
601driver-specific controls. The macro
602<constant>V4L2_CTRL_ID2CLASS(id)</constant> returns the control class
603ID based on a control ID.</para>
604
605 <para>If the driver does not support extended controls, then
606<constant>VIDIOC_QUERYCTRL</constant> will fail when used in
607combination with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>. In
608that case the old method of enumerating control should be used (see
6091.8). But if it is supported, then it is guaranteed to enumerate over
610all controls, including driver-private controls.</para>
611 </section>
612
613 <section>
614 <title>Creating Control Panels</title>
615
616 <para>It is possible to create control panels for a graphical
617user interface where the user can select the various controls.
618Basically you will have to iterate over all controls using the method
619described above. Each control class starts with a control of type
620<constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant>.
621<constant>VIDIOC_QUERYCTRL</constant> will return the name of this
622control class which can be used as the title of a tab page within a
623control panel.</para>
624
625 <para>The flags field of &v4l2-queryctrl; also contains hints on
626the behavior of the control. See the &VIDIOC-QUERYCTRL; documentation
627for more details.</para>
628 </section>
629
630 <section id="mpeg-controls">
631 <title>MPEG Control Reference</title>
632
633 <para>Below all controls within the MPEG control class are
634described. First the generic controls, then controls specific for
635certain hardware.</para>
636
637 <section>
638 <title>Generic MPEG Controls</title>
639
640 <table pgwide="1" frame="none" id="mpeg-control-id">
641 <title>MPEG Control IDs</title>
642 <tgroup cols="4">
643 <colspec colname="c1" colwidth="1*" />
644 <colspec colname="c2" colwidth="6*" />
645 <colspec colname="c3" colwidth="2*" />
646 <colspec colname="c4" colwidth="6*" />
647 <spanspec namest="c1" nameend="c2" spanname="id" />
648 <spanspec namest="c2" nameend="c4" spanname="descr" />
649 <thead>
650 <row>
651 <entry spanname="id" align="left">ID</entry>
652 <entry align="left">Type</entry>
653 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
654 </row>
655 </thead>
656 <tbody valign="top">
657 <row><entry></entry></row>
658 <row>
659 <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant>&nbsp;</entry>
660 <entry>class</entry>
661 </row><row><entry spanname="descr">The MPEG class
662descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
663description of this control class. This description can be used as the
664caption of a Tab page in a GUI, for example.</entry>
665 </row>
666 <row><entry></entry></row>
667 <row id="v4l2-mpeg-stream-type">
668 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_TYPE</constant>&nbsp;</entry>
669 <entry>enum&nbsp;v4l2_mpeg_stream_type</entry>
670 </row><row><entry spanname="descr">The MPEG-1, -2 or -4
671output stream type. One cannot assume anything here. Each hardware
672MPEG encoder tends to support different subsets of the available MPEG
673stream types. The currently defined stream types are:</entry>
674 </row>
675 <row>
676 <entrytbl spanname="descr" cols="2">
677 <tbody valign="top">
678 <row>
679 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_PS</constant>&nbsp;</entry>
680 <entry>MPEG-2 program stream</entry>
681 </row>
682 <row>
683 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_TS</constant>&nbsp;</entry>
684 <entry>MPEG-2 transport stream</entry>
685 </row>
686 <row>
687 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_SS</constant>&nbsp;</entry>
688 <entry>MPEG-1 system stream</entry>
689 </row>
690 <row>
691 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_DVD</constant>&nbsp;</entry>
692 <entry>MPEG-2 DVD-compatible stream</entry>
693 </row>
694 <row>
695 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_VCD</constant>&nbsp;</entry>
696 <entry>MPEG-1 VCD-compatible stream</entry>
697 </row>
698 <row>
699 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD</constant>&nbsp;</entry>
700 <entry>MPEG-2 SVCD-compatible stream</entry>
701 </row>
702 </tbody>
703 </entrytbl>
704 </row>
705 <row><entry></entry></row>
706 <row>
707 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PMT</constant>&nbsp;</entry>
708 <entry>integer</entry>
709 </row><row><entry spanname="descr">Program Map Table
710Packet ID for the MPEG transport stream (default 16)</entry>
711 </row>
712 <row><entry></entry></row>
713 <row>
714 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_AUDIO</constant>&nbsp;</entry>
715 <entry>integer</entry>
716 </row><row><entry spanname="descr">Audio Packet ID for
717the MPEG transport stream (default 256)</entry>
718 </row>
719 <row><entry></entry></row>
720 <row>
721 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_VIDEO</constant>&nbsp;</entry>
722 <entry>integer</entry>
723 </row><row><entry spanname="descr">Video Packet ID for
724the MPEG transport stream (default 260)</entry>
725 </row>
726 <row><entry></entry></row>
727 <row>
728 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PCR</constant>&nbsp;</entry>
729 <entry>integer</entry>
730 </row><row><entry spanname="descr">Packet ID for the
731MPEG transport stream carrying PCR fields (default 259)</entry>
732 </row>
733 <row><entry></entry></row>
734 <row>
735 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_AUDIO</constant>&nbsp;</entry>
736 <entry>integer</entry>
737 </row><row><entry spanname="descr">Audio ID for MPEG
738PES</entry>
739 </row>
740 <row><entry></entry></row>
741 <row>
742 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_VIDEO</constant>&nbsp;</entry>
743 <entry>integer</entry>
744 </row><row><entry spanname="descr">Video ID for MPEG
745PES</entry>
746 </row>
747 <row><entry></entry></row>
748 <row id="v4l2-mpeg-stream-vbi-fmt">
749 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_VBI_FMT</constant>&nbsp;</entry>
750 <entry>enum&nbsp;v4l2_mpeg_stream_vbi_fmt</entry>
751 </row><row><entry spanname="descr">Some cards can embed
752VBI data (&eg; Closed Caption, Teletext) into the MPEG stream. This
753control selects whether VBI data should be embedded, and if so, what
754embedding method should be used. The list of possible VBI formats
755depends on the driver. The currently defined VBI format types
756are:</entry>
757 </row>
758 <row>
759 <entrytbl spanname="descr" cols="2">
760 <tbody valign="top">
761 <row>
762 <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_NONE</constant>&nbsp;</entry>
763 <entry>No VBI in the MPEG stream</entry>
764 </row>
765 <row>
766 <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant>&nbsp;</entry>
767 <entry>VBI in private packets, IVTV format (documented
768in the kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.vbi</filename>)</entry>
769 </row>
770 </tbody>
771 </entrytbl>
772 </row>
773 <row><entry></entry></row>
774 <row id="v4l2-mpeg-audio-sampling-freq">
775 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ</constant>&nbsp;</entry>
776 <entry>enum&nbsp;v4l2_mpeg_audio_sampling_freq</entry>
777 </row><row><entry spanname="descr">MPEG Audio sampling
778frequency. Possible values are:</entry>
779 </row>
780 <row>
781 <entrytbl spanname="descr" cols="2">
782 <tbody valign="top">
783 <row>
784 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100</constant>&nbsp;</entry>
785 <entry>44.1 kHz</entry>
786 </row>
787 <row>
788 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000</constant>&nbsp;</entry>
789 <entry>48 kHz</entry>
790 </row>
791 <row>
792 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000</constant>&nbsp;</entry>
793 <entry>32 kHz</entry>
794 </row>
795 </tbody>
796 </entrytbl>
797 </row>
798 <row><entry></entry></row>
799 <row id="v4l2-mpeg-audio-encoding">
800 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant>&nbsp;</entry>
801 <entry>enum&nbsp;v4l2_mpeg_audio_encoding</entry>
802 </row><row><entry spanname="descr">MPEG Audio encoding.
803Possible values are:</entry>
804 </row>
805 <row>
806 <entrytbl spanname="descr" cols="2">
807 <tbody valign="top">
808 <row>
809 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_1</constant>&nbsp;</entry>
810 <entry>MPEG-1/2 Layer I encoding</entry>
811 </row>
812 <row>
813 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_2</constant>&nbsp;</entry>
814 <entry>MPEG-1/2 Layer II encoding</entry>
815 </row>
816 <row>
817 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_3</constant>&nbsp;</entry>
818 <entry>MPEG-1/2 Layer III encoding</entry>
819 </row>
820 <row>
821 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AAC</constant>&nbsp;</entry>
822 <entry>MPEG-2/4 AAC (Advanced Audio Coding)</entry>
823 </row>
824 <row>
825 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AC3</constant>&nbsp;</entry>
826 <entry>AC-3 aka ATSC A/52 encoding</entry>
827 </row>
828 </tbody>
829 </entrytbl>
830 </row>
831 <row><entry></entry></row>
832 <row id="v4l2-mpeg-audio-l1-bitrate">
833 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L1_BITRATE</constant>&nbsp;</entry>
834 <entry>enum&nbsp;v4l2_mpeg_audio_l1_bitrate</entry>
835 </row><row><entry spanname="descr">MPEG-1/2 Layer I bitrate.
836Possible values are:</entry>
837 </row>
838 <row>
839 <entrytbl spanname="descr" cols="2">
840 <tbody valign="top">
841 <row>
842 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_32K</constant>&nbsp;</entry>
843 <entry>32 kbit/s</entry></row>
844 <row>
845 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_64K</constant>&nbsp;</entry>
846 <entry>64 kbit/s</entry>
847 </row>
848 <row>
849 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_96K</constant>&nbsp;</entry>
850 <entry>96 kbit/s</entry>
851 </row>
852 <row>
853 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_128K</constant>&nbsp;</entry>
854 <entry>128 kbit/s</entry>
855 </row>
856 <row>
857 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_160K</constant>&nbsp;</entry>
858 <entry>160 kbit/s</entry>
859 </row>
860 <row>
861 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_192K</constant>&nbsp;</entry>
862 <entry>192 kbit/s</entry>
863 </row>
864 <row>
865 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_224K</constant>&nbsp;</entry>
866 <entry>224 kbit/s</entry>
867 </row>
868 <row>
869 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_256K</constant>&nbsp;</entry>
870 <entry>256 kbit/s</entry>
871 </row>
872 <row>
873 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_288K</constant>&nbsp;</entry>
874 <entry>288 kbit/s</entry>
875 </row>
876 <row>
877 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_320K</constant>&nbsp;</entry>
878 <entry>320 kbit/s</entry>
879 </row>
880 <row>
881 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_352K</constant>&nbsp;</entry>
882 <entry>352 kbit/s</entry>
883 </row>
884 <row>
885 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_384K</constant>&nbsp;</entry>
886 <entry>384 kbit/s</entry>
887 </row>
888 <row>
889 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_416K</constant>&nbsp;</entry>
890 <entry>416 kbit/s</entry>
891 </row>
892 <row>
893 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_448K</constant>&nbsp;</entry>
894 <entry>448 kbit/s</entry>
895 </row>
896 </tbody>
897 </entrytbl>
898 </row>
899 <row><entry></entry></row>
900 <row id="v4l2-mpeg-audio-l2-bitrate">
901 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L2_BITRATE</constant>&nbsp;</entry>
902 <entry>enum&nbsp;v4l2_mpeg_audio_l2_bitrate</entry>
903 </row><row><entry spanname="descr">MPEG-1/2 Layer II bitrate.
904Possible values are:</entry>
905 </row>
906 <row>
907 <entrytbl spanname="descr" cols="2">
908 <tbody valign="top">
909 <row>
910 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_32K</constant>&nbsp;</entry>
911 <entry>32 kbit/s</entry>
912 </row>
913 <row>
914 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_48K</constant>&nbsp;</entry>
915 <entry>48 kbit/s</entry>
916 </row>
917 <row>
918 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_56K</constant>&nbsp;</entry>
919 <entry>56 kbit/s</entry>
920 </row>
921 <row>
922 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_64K</constant>&nbsp;</entry>
923 <entry>64 kbit/s</entry>
924 </row>
925 <row>
926 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_80K</constant>&nbsp;</entry>
927 <entry>80 kbit/s</entry>
928 </row>
929 <row>
930 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_96K</constant>&nbsp;</entry>
931 <entry>96 kbit/s</entry>
932 </row>
933 <row>
934 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_112K</constant>&nbsp;</entry>
935 <entry>112 kbit/s</entry>
936 </row>
937 <row>
938 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_128K</constant>&nbsp;</entry>
939 <entry>128 kbit/s</entry>
940 </row>
941 <row>
942 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_160K</constant>&nbsp;</entry>
943 <entry>160 kbit/s</entry>
944 </row>
945 <row>
946 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_192K</constant>&nbsp;</entry>
947 <entry>192 kbit/s</entry>
948 </row>
949 <row>
950 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_224K</constant>&nbsp;</entry>
951 <entry>224 kbit/s</entry>
952 </row>
953 <row>
954 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_256K</constant>&nbsp;</entry>
955 <entry>256 kbit/s</entry>
956 </row>
957 <row>
958 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_320K</constant>&nbsp;</entry>
959 <entry>320 kbit/s</entry>
960 </row>
961 <row>
962 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_384K</constant>&nbsp;</entry>
963 <entry>384 kbit/s</entry>
964 </row>
965 </tbody>
966 </entrytbl>
967 </row>
968 <row><entry></entry></row>
969 <row id="v4l2-mpeg-audio-l3-bitrate">
970 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L3_BITRATE</constant>&nbsp;</entry>
971 <entry>enum&nbsp;v4l2_mpeg_audio_l3_bitrate</entry>
972 </row><row><entry spanname="descr">MPEG-1/2 Layer III bitrate.
973Possible values are:</entry>
974 </row>
975 <row>
976 <entrytbl spanname="descr" cols="2">
977 <tbody valign="top">
978 <row>
979 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_32K</constant>&nbsp;</entry>
980 <entry>32 kbit/s</entry>
981 </row>
982 <row>
983 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_40K</constant>&nbsp;</entry>
984 <entry>40 kbit/s</entry>
985 </row>
986 <row>
987 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_48K</constant>&nbsp;</entry>
988 <entry>48 kbit/s</entry>
989 </row>
990 <row>
991 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_56K</constant>&nbsp;</entry>
992 <entry>56 kbit/s</entry>
993 </row>
994 <row>
995 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_64K</constant>&nbsp;</entry>
996 <entry>64 kbit/s</entry>
997 </row>
998 <row>
999 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_80K</constant>&nbsp;</entry>
1000 <entry>80 kbit/s</entry>
1001 </row>
1002 <row>
1003 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_96K</constant>&nbsp;</entry>
1004 <entry>96 kbit/s</entry>
1005 </row>
1006 <row>
1007 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_112K</constant>&nbsp;</entry>
1008 <entry>112 kbit/s</entry>
1009 </row>
1010 <row>
1011 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_128K</constant>&nbsp;</entry>
1012 <entry>128 kbit/s</entry>
1013 </row>
1014 <row>
1015 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_160K</constant>&nbsp;</entry>
1016 <entry>160 kbit/s</entry>
1017 </row>
1018 <row>
1019 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_192K</constant>&nbsp;</entry>
1020 <entry>192 kbit/s</entry>
1021 </row>
1022 <row>
1023 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_224K</constant>&nbsp;</entry>
1024 <entry>224 kbit/s</entry>
1025 </row>
1026 <row>
1027 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_256K</constant>&nbsp;</entry>
1028 <entry>256 kbit/s</entry>
1029 </row>
1030 <row>
1031 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_320K</constant>&nbsp;</entry>
1032 <entry>320 kbit/s</entry>
1033 </row>
1034 </tbody>
1035 </entrytbl>
1036 </row>
1037 <row><entry></entry></row>
1038 <row>
1039 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AAC_BITRATE</constant>&nbsp;</entry>
1040 <entry>integer</entry>
1041 </row><row><entry spanname="descr">AAC bitrate in bits per second.</entry>
1042 </row>
1043 <row><entry></entry></row>
1044 <row id="v4l2-mpeg-audio-ac3-bitrate">
1045 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AC3_BITRATE</constant>&nbsp;</entry>
1046 <entry>enum&nbsp;v4l2_mpeg_audio_ac3_bitrate</entry>
1047 </row><row><entry spanname="descr">AC-3 bitrate.
1048Possible values are:</entry>
1049 </row>
1050 <row>
1051 <entrytbl spanname="descr" cols="2">
1052 <tbody valign="top">
1053 <row>
1054 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_32K</constant>&nbsp;</entry>
1055 <entry>32 kbit/s</entry>
1056 </row>
1057 <row>
1058 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_40K</constant>&nbsp;</entry>
1059 <entry>40 kbit/s</entry>
1060 </row>
1061 <row>
1062 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_48K</constant>&nbsp;</entry>
1063 <entry>48 kbit/s</entry>
1064 </row>
1065 <row>
1066 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_56K</constant>&nbsp;</entry>
1067 <entry>56 kbit/s</entry>
1068 </row>
1069 <row>
1070 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_64K</constant>&nbsp;</entry>
1071 <entry>64 kbit/s</entry>
1072 </row>
1073 <row>
1074 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_80K</constant>&nbsp;</entry>
1075 <entry>80 kbit/s</entry>
1076 </row>
1077 <row>
1078 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_96K</constant>&nbsp;</entry>
1079 <entry>96 kbit/s</entry>
1080 </row>
1081 <row>
1082 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_112K</constant>&nbsp;</entry>
1083 <entry>112 kbit/s</entry>
1084 </row>
1085 <row>
1086 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_128K</constant>&nbsp;</entry>
1087 <entry>128 kbit/s</entry>
1088 </row>
1089 <row>
1090 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_160K</constant>&nbsp;</entry>
1091 <entry>160 kbit/s</entry>
1092 </row>
1093 <row>
1094 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_192K</constant>&nbsp;</entry>
1095 <entry>192 kbit/s</entry>
1096 </row>
1097 <row>
1098 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_224K</constant>&nbsp;</entry>
1099 <entry>224 kbit/s</entry>
1100 </row>
1101 <row>
1102 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_256K</constant>&nbsp;</entry>
1103 <entry>256 kbit/s</entry>
1104 </row>
1105 <row>
1106 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_320K</constant>&nbsp;</entry>
1107 <entry>320 kbit/s</entry>
1108 </row>
1109 <row>
1110 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_384K</constant>&nbsp;</entry>
1111 <entry>384 kbit/s</entry>
1112 </row>
1113 <row>
1114 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_448K</constant>&nbsp;</entry>
1115 <entry>448 kbit/s</entry>
1116 </row>
1117 <row>
1118 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_512K</constant>&nbsp;</entry>
1119 <entry>512 kbit/s</entry>
1120 </row>
1121 <row>
1122 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_576K</constant>&nbsp;</entry>
1123 <entry>576 kbit/s</entry>
1124 </row>
1125 <row>
1126 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_640K</constant>&nbsp;</entry>
1127 <entry>640 kbit/s</entry>
1128 </row>
1129 </tbody>
1130 </entrytbl>
1131 </row>
1132 <row><entry></entry></row>
1133 <row id="v4l2-mpeg-audio-mode">
1134 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE</constant>&nbsp;</entry>
1135 <entry>enum&nbsp;v4l2_mpeg_audio_mode</entry>
1136 </row><row><entry spanname="descr">MPEG Audio mode.
1137Possible values are:</entry>
1138 </row>
1139 <row>
1140 <entrytbl spanname="descr" cols="2">
1141 <tbody valign="top">
1142 <row>
1143 <entry><constant>V4L2_MPEG_AUDIO_MODE_STEREO</constant>&nbsp;</entry>
1144 <entry>Stereo</entry>
1145 </row>
1146 <row>
1147 <entry><constant>V4L2_MPEG_AUDIO_MODE_JOINT_STEREO</constant>&nbsp;</entry>
1148 <entry>Joint Stereo</entry>
1149 </row>
1150 <row>
1151 <entry><constant>V4L2_MPEG_AUDIO_MODE_DUAL</constant>&nbsp;</entry>
1152 <entry>Bilingual</entry>
1153 </row>
1154 <row>
1155 <entry><constant>V4L2_MPEG_AUDIO_MODE_MONO</constant>&nbsp;</entry>
1156 <entry>Mono</entry>
1157 </row>
1158 </tbody>
1159 </entrytbl>
1160 </row>
1161 <row><entry></entry></row>
1162 <row id="v4l2-mpeg-audio-mode-extension">
1163 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE_EXTENSION</constant>&nbsp;</entry>
1164 <entry>enum&nbsp;v4l2_mpeg_audio_mode_extension</entry>
1165 </row><row><entry spanname="descr">Joint Stereo
1166audio mode extension. In Layer I and II they indicate which subbands
1167are in intensity stereo. All other subbands are coded in stereo. Layer
1168III is not (yet) supported. Possible values
1169are:</entry>
1170 </row>
1171 <row>
1172 <entrytbl spanname="descr" cols="2">
1173 <tbody valign="top">
1174 <row>
1175 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4</constant>&nbsp;</entry>
1176 <entry>Subbands 4-31 in intensity stereo</entry>
1177 </row>
1178 <row>
1179 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8</constant>&nbsp;</entry>
1180 <entry>Subbands 8-31 in intensity stereo</entry>
1181 </row>
1182 <row>
1183 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12</constant>&nbsp;</entry>
1184 <entry>Subbands 12-31 in intensity stereo</entry>
1185 </row>
1186 <row>
1187 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16</constant>&nbsp;</entry>
1188 <entry>Subbands 16-31 in intensity stereo</entry>
1189 </row>
1190 </tbody>
1191 </entrytbl>
1192 </row>
1193 <row><entry></entry></row>
1194 <row id="v4l2-mpeg-audio-emphasis">
1195 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_EMPHASIS</constant>&nbsp;</entry>
1196 <entry>enum&nbsp;v4l2_mpeg_audio_emphasis</entry>
1197 </row><row><entry spanname="descr">Audio Emphasis.
1198Possible values are:</entry>
1199 </row>
1200 <row>
1201 <entrytbl spanname="descr" cols="2">
1202 <tbody valign="top">
1203 <row>
1204 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_NONE</constant>&nbsp;</entry>
1205 <entry>None</entry>
1206 </row>
1207 <row>
1208 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS</constant>&nbsp;</entry>
1209 <entry>50/15 microsecond emphasis</entry>
1210 </row>
1211 <row>
1212 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17</constant>&nbsp;</entry>
1213 <entry>CCITT J.17</entry>
1214 </row>
1215 </tbody>
1216 </entrytbl>
1217 </row>
1218 <row><entry></entry></row>
1219 <row id="v4l2-mpeg-audio-crc">
1220 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_CRC</constant>&nbsp;</entry>
1221 <entry>enum&nbsp;v4l2_mpeg_audio_crc</entry>
1222 </row><row><entry spanname="descr">CRC method. Possible
1223values are:</entry>
1224 </row>
1225 <row>
1226 <entrytbl spanname="descr" cols="2">
1227 <tbody valign="top">
1228 <row>
1229 <entry><constant>V4L2_MPEG_AUDIO_CRC_NONE</constant>&nbsp;</entry>
1230 <entry>None</entry>
1231 </row>
1232 <row>
1233 <entry><constant>V4L2_MPEG_AUDIO_CRC_CRC16</constant>&nbsp;</entry>
1234 <entry>16 bit parity check</entry>
1235 </row>
1236 </tbody>
1237 </entrytbl>
1238 </row>
1239 <row><entry></entry></row>
1240 <row>
1241 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MUTE</constant>&nbsp;</entry>
1242 <entry>boolean</entry>
1243 </row><row><entry spanname="descr">Mutes the audio when
1244capturing. This is not done by muting audio hardware, which can still
1245produce a slight hiss, but in the encoder itself, guaranteeing a fixed
1246and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry>
1247 </row>
1248 <row><entry></entry></row>
1249 <row id="v4l2-mpeg-video-encoding">
1250 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant>&nbsp;</entry>
1251 <entry>enum&nbsp;v4l2_mpeg_video_encoding</entry>
1252 </row><row><entry spanname="descr">MPEG Video encoding
1253method. Possible values are:</entry>
1254 </row>
1255 <row>
1256 <entrytbl spanname="descr" cols="2">
1257 <tbody valign="top">
1258 <row>
1259 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_1</constant>&nbsp;</entry>
1260 <entry>MPEG-1 Video encoding</entry>
1261 </row>
1262 <row>
1263 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_2</constant>&nbsp;</entry>
1264 <entry>MPEG-2 Video encoding</entry>
1265 </row>
1266 <row>
1267 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC</constant>&nbsp;</entry>
1268 <entry>MPEG-4 AVC (H.264) Video encoding</entry>
1269 </row>
1270 </tbody>
1271 </entrytbl>
1272 </row>
1273 <row><entry></entry></row>
1274 <row id="v4l2-mpeg-video-aspect">
1275 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ASPECT</constant>&nbsp;</entry>
1276 <entry>enum&nbsp;v4l2_mpeg_video_aspect</entry>
1277 </row><row><entry spanname="descr">Video aspect.
1278Possible values are:</entry>
1279 </row>
1280 <row>
1281 <entrytbl spanname="descr" cols="2">
1282 <tbody valign="top">
1283 <row>
1284 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_1x1</constant>&nbsp;</entry>
1285 </row>
1286 <row>
1287 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_4x3</constant>&nbsp;</entry>
1288 </row>
1289 <row>
1290 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_16x9</constant>&nbsp;</entry>
1291 </row>
1292 <row>
1293 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_221x100</constant>&nbsp;</entry>
1294 </row>
1295 </tbody>
1296 </entrytbl>
1297 </row>
1298 <row><entry></entry></row>
1299 <row>
1300 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_B_FRAMES</constant>&nbsp;</entry>
1301 <entry>integer</entry>
1302 </row><row><entry spanname="descr">Number of B-Frames
1303(default 2)</entry>
1304 </row>
1305 <row><entry></entry></row>
1306 <row>
1307 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_SIZE</constant>&nbsp;</entry>
1308 <entry>integer</entry>
1309 </row><row><entry spanname="descr">GOP size (default
131012)</entry>
1311 </row>
1312 <row><entry></entry></row>
1313 <row>
1314 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_CLOSURE</constant>&nbsp;</entry>
1315 <entry>boolean</entry>
1316 </row><row><entry spanname="descr">GOP closure (default
13171)</entry>
1318 </row>
1319 <row><entry></entry></row>
1320 <row>
1321 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_PULLDOWN</constant>&nbsp;</entry>
1322 <entry>boolean</entry>
1323 </row><row><entry spanname="descr">Enable 3:2 pulldown
1324(default 0)</entry>
1325 </row>
1326 <row><entry></entry></row>
1327 <row id="v4l2-mpeg-video-bitrate-mode">
1328 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_MODE</constant>&nbsp;</entry>
1329 <entry>enum&nbsp;v4l2_mpeg_video_bitrate_mode</entry>
1330 </row><row><entry spanname="descr">Video bitrate mode.
1331Possible values are:</entry>
1332 </row>
1333 <row>
1334 <entrytbl spanname="descr" cols="2">
1335 <tbody valign="top">
1336 <row>
1337 <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_VBR</constant>&nbsp;</entry>
1338 <entry>Variable bitrate</entry>
1339 </row>
1340 <row>
1341 <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_CBR</constant>&nbsp;</entry>
1342 <entry>Constant bitrate</entry>
1343 </row>
1344 </tbody>
1345 </entrytbl>
1346 </row>
1347 <row><entry></entry></row>
1348 <row>
1349 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE</constant>&nbsp;</entry>
1350 <entry>integer</entry>
1351 </row><row><entry spanname="descr">Video bitrate in bits
1352per second.</entry>
1353 </row>
1354 <row><entry></entry></row>
1355 <row>
1356 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_PEAK</constant>&nbsp;</entry>
1357 <entry>integer</entry>
1358 </row><row><entry spanname="descr">Peak video bitrate in
1359bits per second. Must be larger or equal to the average video bitrate.
1360It is ignored if the video bitrate mode is set to constant
1361bitrate.</entry>
1362 </row>
1363 <row><entry></entry></row>
1364 <row>
1365 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION</constant>&nbsp;</entry>
1366 <entry>integer</entry>
1367 </row><row><entry spanname="descr">For every captured
1368frame, skip this many subsequent frames (default 0).</entry>
1369 </row>
1370 <row><entry></entry></row>
1371 <row>
1372 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE</constant>&nbsp;</entry>
1373 <entry>boolean</entry>
1374 </row>
1375 <row><entry spanname="descr">"Mutes" the video to a
1376fixed color when capturing. This is useful for testing, to produce a
1377fixed video bitstream. 0 = unmuted, 1 = muted.</entry>
1378 </row>
1379 <row><entry></entry></row>
1380 <row>
1381 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE_YUV</constant>&nbsp;</entry>
1382 <entry>integer</entry>
1383 </row><row><entry spanname="descr">Sets the "mute" color
1384of the video. The supplied 32-bit integer is interpreted as follows (bit
13850 = least significant bit):</entry>
1386 </row>
1387 <row>
1388 <entrytbl spanname="descr" cols="2">
1389 <tbody valign="top">
1390 <row>
1391 <entry>Bit 0:7</entry>
1392 <entry>V chrominance information</entry>
1393 </row>
1394 <row>
1395 <entry>Bit 8:15</entry>
1396 <entry>U chrominance information</entry>
1397 </row>
1398 <row>
1399 <entry>Bit 16:23</entry>
1400 <entry>Y luminance information</entry>
1401 </row>
1402 <row>
1403 <entry>Bit 24:31</entry>
1404 <entry>Must be zero.</entry>
1405 </row>
1406 </tbody>
1407 </entrytbl>
1408 </row>
1409 </tbody>
1410 </tgroup>
1411 </table>
1412 </section>
1413
1414 <section>
1415 <title>CX2341x MPEG Controls</title>
1416
1417 <para>The following MPEG class controls deal with MPEG
1418encoding settings that are specific to the Conexant CX23415 and
1419CX23416 MPEG encoding chips.</para>
1420
1421 <table pgwide="1" frame="none" id="cx2341x-control-id">
1422 <title>CX2341x Control IDs</title>
1423 <tgroup cols="4">
1424 <colspec colname="c1" colwidth="1*" />
1425 <colspec colname="c2" colwidth="6*" />
1426 <colspec colname="c3" colwidth="2*" />
1427 <colspec colname="c4" colwidth="6*" />
1428 <spanspec namest="c1" nameend="c2" spanname="id" />
1429 <spanspec namest="c2" nameend="c4" spanname="descr" />
1430 <thead>
1431 <row>
1432 <entry spanname="id" align="left">ID</entry>
1433 <entry align="left">Type</entry>
1434 </row><row><entry spanname="descr" align="left">Description</entry>
1435 </row>
1436 </thead>
1437 <tbody valign="top">
1438 <row><entry></entry></row>
1439 <row id="v4l2-mpeg-cx2341x-video-spatial-filter-mode">
1440 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE</constant>&nbsp;</entry>
1441 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_spatial_filter_mode</entry>
1442 </row><row><entry spanname="descr">Sets the Spatial
1443Filter mode (default <constant>MANUAL</constant>). Possible values
1444are:</entry>
1445 </row>
1446 <row>
1447 <entrytbl spanname="descr" cols="2">
1448 <tbody valign="top">
1449 <row>
1450 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL</constant>&nbsp;</entry>
1451 <entry>Choose the filter manually</entry>
1452 </row>
1453 <row>
1454 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO</constant>&nbsp;</entry>
1455 <entry>Choose the filter automatically</entry>
1456 </row>
1457 </tbody>
1458 </entrytbl>
1459 </row>
1460 <row><entry></entry></row>
1461 <row>
1462 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER</constant>&nbsp;</entry>
1463 <entry>integer&nbsp;(0-15)</entry>
1464 </row><row><entry spanname="descr">The setting for the
1465Spatial Filter. 0 = off, 15 = maximum. (Default is 0.)</entry>
1466 </row>
1467 <row><entry></entry></row>
1468 <row id="luma-spatial-filter-type">
1469 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE</constant>&nbsp;</entry>
1470 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</entry>
1471 </row><row><entry spanname="descr">Select the algorithm
1472to use for the Luma Spatial Filter (default
1473<constant>1D_HOR</constant>). Possible values:</entry>
1474 </row>
1475 <row>
1476 <entrytbl spanname="descr" cols="2">
1477 <tbody valign="top">
1478 <row>
1479 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF</constant>&nbsp;</entry>
1480 <entry>No filter</entry>
1481 </row>
1482 <row>
1483 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR</constant>&nbsp;</entry>
1484 <entry>One-dimensional horizontal</entry>
1485 </row>
1486 <row>
1487 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT</constant>&nbsp;</entry>
1488 <entry>One-dimensional vertical</entry>
1489 </row>
1490 <row>
1491 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE</constant>&nbsp;</entry>
1492 <entry>Two-dimensional separable</entry>
1493 </row>
1494 <row>
1495 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE</constant>&nbsp;</entry>
1496 <entry>Two-dimensional symmetrical
1497non-separable</entry>
1498 </row>
1499 </tbody>
1500 </entrytbl>
1501 </row>
1502 <row><entry></entry></row>
1503 <row id="chroma-spatial-filter-type">
1504 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE</constant>&nbsp;</entry>
1505 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</entry>
1506 </row><row><entry spanname="descr">Select the algorithm
1507for the Chroma Spatial Filter (default <constant>1D_HOR</constant>).
1508Possible values are:</entry>
1509 </row>
1510 <row>
1511 <entrytbl spanname="descr" cols="2">
1512 <tbody valign="top">
1513 <row>
1514 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF</constant>&nbsp;</entry>
1515 <entry>No filter</entry>
1516 </row>
1517 <row>
1518 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR</constant>&nbsp;</entry>
1519 <entry>One-dimensional horizontal</entry>
1520 </row>
1521 </tbody>
1522 </entrytbl>
1523 </row>
1524 <row><entry></entry></row>
1525 <row id="v4l2-mpeg-cx2341x-video-temporal-filter-mode">
1526 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE</constant>&nbsp;</entry>
1527 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_temporal_filter_mode</entry>
1528 </row><row><entry spanname="descr">Sets the Temporal
1529Filter mode (default <constant>MANUAL</constant>). Possible values
1530are:</entry>
1531 </row>
1532 <row>
1533 <entrytbl spanname="descr" cols="2">
1534 <tbody valign="top">
1535 <row>
1536 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL</constant>&nbsp;</entry>
1537 <entry>Choose the filter manually</entry>
1538 </row>
1539 <row>
1540 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO</constant>&nbsp;</entry>
1541 <entry>Choose the filter automatically</entry>
1542 </row>
1543 </tbody>
1544 </entrytbl>
1545 </row>
1546 <row><entry></entry></row>
1547 <row>
1548 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER</constant>&nbsp;</entry>
1549 <entry>integer&nbsp;(0-31)</entry>
1550 </row><row><entry spanname="descr">The setting for the
1551Temporal Filter. 0 = off, 31 = maximum. (Default is 8 for full-scale
1552capturing and 0 for scaled capturing.)</entry>
1553 </row>
1554 <row><entry></entry></row>
1555 <row id="v4l2-mpeg-cx2341x-video-median-filter-type">
1556 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE</constant>&nbsp;</entry>
1557 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_median_filter_type</entry>
1558 </row><row><entry spanname="descr">Median Filter Type
1559(default <constant>OFF</constant>). Possible values are:</entry>
1560 </row>
1561 <row>
1562 <entrytbl spanname="descr" cols="2">
1563 <tbody valign="top">
1564 <row>
1565 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF</constant>&nbsp;</entry>
1566 <entry>No filter</entry>
1567 </row>
1568 <row>
1569 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR</constant>&nbsp;</entry>
1570 <entry>Horizontal filter</entry>
1571 </row>
1572 <row>
1573 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT</constant>&nbsp;</entry>
1574 <entry>Vertical filter</entry>
1575 </row>
1576 <row>
1577 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT</constant>&nbsp;</entry>
1578 <entry>Horizontal and vertical filter</entry>
1579 </row>
1580 <row>
1581 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG</constant>&nbsp;</entry>
1582 <entry>Diagonal filter</entry>
1583 </row>
1584 </tbody>
1585 </entrytbl>
1586 </row>
1587 <row><entry></entry></row>
1588 <row>
1589 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM</constant>&nbsp;</entry>
1590 <entry>integer&nbsp;(0-255)</entry>
1591 </row><row><entry spanname="descr">Threshold above which
1592the luminance median filter is enabled (default 0)</entry>
1593 </row>
1594 <row><entry></entry></row>
1595 <row>
1596 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP</constant>&nbsp;</entry>
1597 <entry>integer&nbsp;(0-255)</entry>
1598 </row><row><entry spanname="descr">Threshold below which
1599the luminance median filter is enabled (default 255)</entry>
1600 </row>
1601 <row><entry></entry></row>
1602 <row>
1603 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM</constant>&nbsp;</entry>
1604 <entry>integer&nbsp;(0-255)</entry>
1605 </row><row><entry spanname="descr">Threshold above which
1606the chroma median filter is enabled (default 0)</entry>
1607 </row>
1608 <row><entry></entry></row>
1609 <row>
1610 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP</constant>&nbsp;</entry>
1611 <entry>integer&nbsp;(0-255)</entry>
1612 </row><row><entry spanname="descr">Threshold below which
1613the chroma median filter is enabled (default 255)</entry>
1614 </row>
1615 <row><entry></entry></row>
1616 <row>
1617 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS</constant>&nbsp;</entry>
1618 <entry>boolean</entry>
1619 </row>
1620 <row><entry spanname="descr">The CX2341X MPEG encoder
1621can insert one empty MPEG-2 PES packet into the stream between every
1622four video frames. The packet size is 2048 bytes, including the
1623packet_start_code_prefix and stream_id fields. The stream_id is 0xBF
1624(private stream 2). The payload consists of 0x00 bytes, to be filled
1625in by the application. 0 = do not insert, 1 = insert packets.</entry>
1626 </row>
1627 </tbody>
1628 </tgroup>
1629 </table>
1630 </section>
1631 </section>
1632
1633 <section id="camera-controls">
1634 <title>Camera Control Reference</title>
1635
1636 <para>The Camera class includes controls for mechanical (or
1637equivalent digital) features of a device such as controllable lenses
1638or sensors.</para>
1639
1640 <table pgwide="1" frame="none" id="camera-control-id">
1641 <title>Camera Control IDs</title>
1642 <tgroup cols="4">
1643 <colspec colname="c1" colwidth="1*" />
1644 <colspec colname="c2" colwidth="6*" />
1645 <colspec colname="c3" colwidth="2*" />
1646 <colspec colname="c4" colwidth="6*" />
1647 <spanspec namest="c1" nameend="c2" spanname="id" />
1648 <spanspec namest="c2" nameend="c4" spanname="descr" />
1649 <thead>
1650 <row>
1651 <entry spanname="id" align="left">ID</entry>
1652 <entry align="left">Type</entry>
1653 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
1654 </row>
1655 </thead>
1656 <tbody valign="top">
1657 <row><entry></entry></row>
1658 <row>
1659 <entry spanname="id"><constant>V4L2_CID_CAMERA_CLASS</constant>&nbsp;</entry>
1660 <entry>class</entry>
1661 </row><row><entry spanname="descr">The Camera class
1662descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
1663description of this control class.</entry>
1664 </row>
1665 <row><entry></entry></row>
1666
1667 <row id="v4l2-exposure-auto-type">
1668 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO</constant>&nbsp;</entry>
1669 <entry>enum&nbsp;v4l2_exposure_auto_type</entry>
1670 </row><row><entry spanname="descr">Enables automatic
1671adjustments of the exposure time and/or iris aperture. The effect of
1672manual changes of the exposure time or iris aperture while these
1673features are enabled is undefined, drivers should ignore such
1674requests. Possible values are:</entry>
1675 </row>
1676 <row>
1677 <entrytbl spanname="descr" cols="2">
1678 <tbody valign="top">
1679 <row>
1680 <entry><constant>V4L2_EXPOSURE_AUTO</constant>&nbsp;</entry>
1681 <entry>Automatic exposure time, automatic iris
1682aperture.</entry>
1683 </row>
1684 <row>
1685 <entry><constant>V4L2_EXPOSURE_MANUAL</constant>&nbsp;</entry>
1686 <entry>Manual exposure time, manual iris.</entry>
1687 </row>
1688 <row>
1689 <entry><constant>V4L2_EXPOSURE_SHUTTER_PRIORITY</constant>&nbsp;</entry>
1690 <entry>Manual exposure time, auto iris.</entry>
1691 </row>
1692 <row>
1693 <entry><constant>V4L2_EXPOSURE_APERTURE_PRIORITY</constant>&nbsp;</entry>
1694 <entry>Auto exposure time, manual iris.</entry>
1695 </row>
1696 </tbody>
1697 </entrytbl>
1698 </row>
1699 <row><entry></entry></row>
1700
1701 <row>
1702 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_ABSOLUTE</constant>&nbsp;</entry>
1703 <entry>integer</entry>
1704 </row><row><entry spanname="descr">Determines the exposure
1705time of the camera sensor. The exposure time is limited by the frame
1706interval. Drivers should interpret the values as 100 &micro;s units,
1707where the value 1 stands for 1/10000th of a second, 10000 for 1 second
1708and 100000 for 10 seconds.</entry>
1709 </row>
1710 <row><entry></entry></row>
1711
1712 <row>
1713 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO_PRIORITY</constant>&nbsp;</entry>
1714 <entry>boolean</entry>
1715 </row><row><entry spanname="descr">When
1716<constant>V4L2_CID_EXPOSURE_AUTO</constant> is set to
1717<constant>AUTO</constant> or <constant>APERTURE_PRIORITY</constant>,
1718this control determines if the device may dynamically vary the frame
1719rate. By default this feature is disabled (0) and the frame rate must
1720remain constant.</entry>
1721 </row>
1722 <row><entry></entry></row>
1723
1724 <row>
1725 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry>
1726 <entry>integer</entry>
1727 </row><row><entry spanname="descr">This control turns the
1728camera horizontally by the specified amount. The unit is undefined. A
1729positive value moves the camera to the right (clockwise when viewed
1730from above), a negative value to the left. A value of zero does not
1731cause motion. This is a write-only control.</entry>
1732 </row>
1733 <row><entry></entry></row>
1734
1735 <row>
1736 <entry spanname="id"><constant>V4L2_CID_TILT_RELATIVE</constant>&nbsp;</entry>
1737 <entry>integer</entry>
1738 </row><row><entry spanname="descr">This control turns the
1739camera vertically by the specified amount. The unit is undefined. A
1740positive value moves the camera up, a negative value down. A value of
1741zero does not cause motion. This is a write-only control.</entry>
1742 </row>
1743 <row><entry></entry></row>
1744
1745 <row>
1746 <entry spanname="id"><constant>V4L2_CID_PAN_RESET</constant>&nbsp;</entry>
1747 <entry>button</entry>
1748 </row><row><entry spanname="descr">When this control is set,
1749the camera moves horizontally to the default position.</entry>
1750 </row>
1751 <row><entry></entry></row>
1752
1753 <row>
1754 <entry spanname="id"><constant>V4L2_CID_TILT_RESET</constant>&nbsp;</entry>
1755 <entry>button</entry>
1756 </row><row><entry spanname="descr">When this control is set,
1757the camera moves vertically to the default position.</entry>
1758 </row>
1759 <row><entry></entry></row>
1760
1761 <row>
1762 <entry spanname="id"><constant>V4L2_CID_PAN_ABSOLUTE</constant>&nbsp;</entry>
1763 <entry>integer</entry>
1764 </row><row><entry spanname="descr">This control
1765turns the camera horizontally to the specified position. Positive
1766values move the camera to the right (clockwise when viewed from above),
1767negative values to the left. Drivers should interpret the values as arc
1768seconds, with valid values between -180 * 3600 and +180 * 3600
1769inclusive.</entry>
1770 </row>
1771 <row><entry></entry></row>
1772
1773 <row>
1774 <entry spanname="id"><constant>V4L2_CID_TILT_ABSOLUTE</constant>&nbsp;</entry>
1775 <entry>integer</entry>
1776 </row><row><entry spanname="descr">This control
1777turns the camera vertically to the specified position. Positive values
1778move the camera up, negative values down. Drivers should interpret the
1779values as arc seconds, with valid values between -180 * 3600 and +180
1780* 3600 inclusive.</entry>
1781 </row>
1782 <row><entry></entry></row>
1783
1784 <row>
1785 <entry spanname="id"><constant>V4L2_CID_FOCUS_ABSOLUTE</constant>&nbsp;</entry>
1786 <entry>integer</entry>
1787 </row><row><entry spanname="descr">This control sets the
1788focal point of the camera to the specified position. The unit is
1789undefined. Positive values set the focus closer to the camera,
1790negative values towards infinity.</entry>
1791 </row>
1792 <row><entry></entry></row>
1793
1794 <row>
1795 <entry spanname="id"><constant>V4L2_CID_FOCUS_RELATIVE</constant>&nbsp;</entry>
1796 <entry>integer</entry>
1797 </row><row><entry spanname="descr">This control moves the
1798focal point of the camera by the specified amount. The unit is
1799undefined. Positive values move the focus closer to the camera,
1800negative values towards infinity. This is a write-only control.</entry>
1801 </row>
1802 <row><entry></entry></row>
1803
1804 <row>
1805 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry>
1806 <entry>boolean</entry>
1807 </row><row><entry spanname="descr">Enables automatic focus
1808adjustments. The effect of manual focus adjustments while this feature
1809is enabled is undefined, drivers should ignore such requests.</entry>
1810 </row>
1811 <row><entry></entry></row>
1812
1813 <row>
1814 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry>
1815 <entry>integer</entry>
1816 </row><row><entry spanname="descr">Specify the objective lens
1817focal length as an absolute value. The zoom unit is driver-specific and its
1818value should be a positive integer.</entry>
1819 </row>
1820 <row><entry></entry></row>
1821
1822 <row>
1823 <entry spanname="id"><constant>V4L2_CID_ZOOM_RELATIVE</constant>&nbsp;</entry>
1824 <entry>integer</entry>
1825 </row><row><entry spanname="descr">Specify the objective lens
1826focal length relatively to the current value. Positive values move the zoom
1827lens group towards the telephoto direction, negative values towards the
1828wide-angle direction. The zoom unit is driver-specific. This is a write-only control.</entry>
1829 </row>
1830 <row><entry></entry></row>
1831
1832 <row>
1833 <entry spanname="id"><constant>V4L2_CID_ZOOM_CONTINUOUS</constant>&nbsp;</entry>
1834 <entry>integer</entry>
1835 </row><row><entry spanname="descr">Move the objective lens group
1836at the specified speed until it reaches physical device limits or until an
1837explicit request to stop the movement. A positive value moves the zoom lens
1838group towards the telephoto direction. A value of zero stops the zoom lens
1839group movement. A negative value moves the zoom lens group towards the
1840wide-angle direction. The zoom speed unit is driver-specific.</entry>
1841 </row>
1842 <row><entry></entry></row>
1843
1844 <row>
1845 <entry spanname="id"><constant>V4L2_CID_IRIS_ABSOLUTE</constant>&nbsp;</entry>
1846 <entry>integer</entry>
1847 </row><row><entry spanname="descr">This control sets the
1848camera's aperture to the specified value. The unit is undefined.
1849Larger values open the iris wider, smaller values close it.</entry>
1850 </row>
1851 <row><entry></entry></row>
1852
1853 <row>
1854 <entry spanname="id"><constant>V4L2_CID_IRIS_RELATIVE</constant>&nbsp;</entry>
1855 <entry>integer</entry>
1856 </row><row><entry spanname="descr">This control modifies the
1857camera's aperture by the specified amount. The unit is undefined.
1858Positive values open the iris one step further, negative values close
1859it one step further. This is a write-only control.</entry>
1860 </row>
1861 <row><entry></entry></row>
1862
1863 <row>
1864 <entry spanname="id"><constant>V4L2_CID_PRIVACY</constant>&nbsp;</entry>
1865 <entry>boolean</entry>
1866 </row><row><entry spanname="descr">Prevent video from being acquired
1867by the camera. When this control is set to <constant>TRUE</constant> (1), no
1868image can be captured by the camera. Common means to enforce privacy are
1869mechanical obturation of the sensor and firmware image processing, but the
1870device is not restricted to these methods. Devices that implement the privacy
1871control must support read access and may support write access.</entry>
1872 </row>
1873
1874 <row>
1875 <entry spanname="id"><constant>V4L2_CID_BAND_STOP_FILTER</constant>&nbsp;</entry>
1876 <entry>integer</entry>
1877 </row><row><entry spanname="descr">Switch the band-stop filter of a
1878camera sensor on or off, or specify its strength. Such band-stop filters can
1879be used, for example, to filter out the fluorescent light component.</entry>
1880 </row>
1881 <row><entry></entry></row>
1882 </tbody>
1883 </tgroup>
1884 </table>
1885 </section>
1886
1887 <section id="fm-tx-controls">
1888 <title>FM Transmitter Control Reference</title>
1889
1890 <para>The FM Transmitter (FM_TX) class includes controls for common features of
1891FM transmissions capable devices. Currently this class includes parameters for audio
1892compression, pilot tone generation, audio deviation limiter, RDS transmission and
1893tuning power features.</para>
1894
1895 <table pgwide="1" frame="none" id="fm-tx-control-id">
1896 <title>FM_TX Control IDs</title>
1897
1898 <tgroup cols="4">
1899 <colspec colname="c1" colwidth="1*" />
1900 <colspec colname="c2" colwidth="6*" />
1901 <colspec colname="c3" colwidth="2*" />
1902 <colspec colname="c4" colwidth="6*" />
1903 <spanspec namest="c1" nameend="c2" spanname="id" />
1904 <spanspec namest="c2" nameend="c4" spanname="descr" />
1905 <thead>
1906 <row>
1907 <entry spanname="id" align="left">ID</entry>
1908 <entry align="left">Type</entry>
1909 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
1910 </row>
1911 </thead>
1912 <tbody valign="top">
1913 <row><entry></entry></row>
1914 <row>
1915 <entry spanname="id"><constant>V4L2_CID_FM_TX_CLASS</constant>&nbsp;</entry>
1916 <entry>class</entry>
1917 </row><row><entry spanname="descr">The FM_TX class
1918descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
1919description of this control class.</entry>
1920 </row>
1921 <row>
1922 <entry spanname="id"><constant>V4L2_CID_RDS_TX_DEVIATION</constant>&nbsp;</entry>
1923 <entry>integer</entry>
1924 </row>
1925 <row><entry spanname="descr">Configures RDS signal frequency deviation level in Hz.
1926The range and step are driver-specific.</entry>
1927 </row>
1928 <row>
1929 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PI</constant>&nbsp;</entry>
1930 <entry>integer</entry>
1931 </row>
1932 <row><entry spanname="descr">Sets the RDS Programme Identification field
1933for transmission.</entry>
1934 </row>
1935 <row>
1936 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PTY</constant>&nbsp;</entry>
1937 <entry>integer</entry>
1938 </row>
1939 <row><entry spanname="descr">Sets the RDS Programme Type field for transmission.
1940This encodes up to 31 pre-defined programme types.</entry>
1941 </row>
1942 <row>
1943 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PS_NAME</constant>&nbsp;</entry>
1944 <entry>string</entry>
1945 </row>
1946 <row><entry spanname="descr">Sets the Programme Service name (PS_NAME) for transmission.
1947It is intended for static display on a receiver. It is the primary aid to listeners in programme service
1948identification and selection. In Annex E of <xref linkend="en50067" />, the RDS specification,
1949there is a full description of the correct character encoding for Programme Service name strings.
1950Also from RDS specification, PS is usually a single eight character text. However, it is also possible
1951to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured
1952with steps of 8 characters. The result is it must always contain a string with size multiple of 8.</entry>
1953 </row>
1954 <row>
1955 <entry spanname="id"><constant>V4L2_CID_RDS_TX_RADIO_TEXT</constant>&nbsp;</entry>
1956 <entry>string</entry>
1957 </row>
1958 <row><entry spanname="descr">Sets the Radio Text info for transmission. It is a textual description of
1959what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names,
1960programme-related information or any other text. In these cases, RadioText should be used in addition to
1961<constant>V4L2_CID_RDS_TX_PS_NAME</constant>. The encoding for Radio Text strings is also fully described
1962in Annex E of <xref linkend="en50067" />. The length of Radio Text strings depends on which RDS Block is being
1963used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible
1964to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured
1965with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry>
1966 </row>
1967 <row>
1968 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_ENABLED</constant>&nbsp;</entry>
1969 <entry>boolean</entry>
1970 </row>
1971 <row><entry spanname="descr">Enables or disables the audio deviation limiter feature.
1972The limiter is useful when trying to maximize the audio volume, minimize receiver-generated
1973distortion and prevent overmodulation.
1974</entry>
1975 </row>
1976 <row>
1977 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_RELEASE_TIME</constant>&nbsp;</entry>
1978 <entry>integer</entry>
1979 </row>
1980 <row><entry spanname="descr">Sets the audio deviation limiter feature release time.
1981Unit is in useconds. Step and range are driver-specific.</entry>
1982 </row>
1983 <row>
1984 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_DEVIATION</constant>&nbsp;</entry>
1985 <entry>integer</entry>
1986 </row>
1987 <row><entry spanname="descr">Configures audio frequency deviation level in Hz.
1988The range and step are driver-specific.</entry>
1989 </row>
1990 <row>
1991 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ENABLED</constant>&nbsp;</entry>
1992 <entry>boolean</entry>
1993 </row>
1994 <row><entry spanname="descr">Enables or disables the audio compression feature.
1995This feature amplifies signals below the threshold by a fixed gain and compresses audio
1996signals above the threshold by the ratio of Threshold/(Gain + Threshold).</entry>
1997 </row>
1998 <row>
1999 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_GAIN</constant>&nbsp;</entry>
2000 <entry>integer</entry>
2001 </row>
2002 <row><entry spanname="descr">Sets the gain for audio compression feature. It is
2003a dB value. The range and step are driver-specific.</entry>
2004 </row>
2005 <row>
2006 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_THRESHOLD</constant>&nbsp;</entry>
2007 <entry>integer</entry>
2008 </row>
2009 <row><entry spanname="descr">Sets the threshold level for audio compression freature.
2010It is a dB value. The range and step are driver-specific.</entry>
2011 </row>
2012 <row>
2013 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME</constant>&nbsp;</entry>
2014 <entry>integer</entry>
2015 </row>
2016 <row><entry spanname="descr">Sets the attack time for audio compression feature.
2017It is a useconds value. The range and step are driver-specific.</entry>
2018 </row>
2019 <row>
2020 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME</constant>&nbsp;</entry>
2021 <entry>integer</entry>
2022 </row>
2023 <row><entry spanname="descr">Sets the release time for audio compression feature.
2024It is a useconds value. The range and step are driver-specific.</entry>
2025 </row>
2026 <row>
2027 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_ENABLED</constant>&nbsp;</entry>
2028 <entry>boolean</entry>
2029 </row>
2030 <row><entry spanname="descr">Enables or disables the pilot tone generation feature.</entry>
2031 </row>
2032 <row>
2033 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_DEVIATION</constant>&nbsp;</entry>
2034 <entry>integer</entry>
2035 </row>
2036 <row><entry spanname="descr">Configures pilot tone frequency deviation level. Unit is
2037in Hz. The range and step are driver-specific.</entry>
2038 </row>
2039 <row>
2040 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_FREQUENCY</constant>&nbsp;</entry>
2041 <entry>integer</entry>
2042 </row>
2043 <row><entry spanname="descr">Configures pilot tone frequency value. Unit is
2044in Hz. The range and step are driver-specific.</entry>
2045 </row>
2046 <row>
2047 <entry spanname="id"><constant>V4L2_CID_TUNE_PREEMPHASIS</constant>&nbsp;</entry>
2048 <entry>integer</entry>
2049 </row>
2050 <row id="v4l2-preemphasis"><entry spanname="descr">Configures the pre-emphasis value for broadcasting.
2051A pre-emphasis filter is applied to the broadcast to accentuate the high audio frequencies.
2052Depending on the region, a time constant of either 50 or 75 useconds is used. The enum&nbsp;v4l2_preemphasis
2053defines possible values for pre-emphasis. Here they are:</entry>
2054 </row><row>
2055 <entrytbl spanname="descr" cols="2">
2056 <tbody valign="top">
2057 <row>
2058 <entry><constant>V4L2_PREEMPHASIS_DISABLED</constant>&nbsp;</entry>
2059 <entry>No pre-emphasis is applied.</entry>
2060 </row>
2061 <row>
2062 <entry><constant>V4L2_PREEMPHASIS_50_uS</constant>&nbsp;</entry>
2063 <entry>A pre-emphasis of 50 uS is used.</entry>
2064 </row>
2065 <row>
2066 <entry><constant>V4L2_PREEMPHASIS_75_uS</constant>&nbsp;</entry>
2067 <entry>A pre-emphasis of 75 uS is used.</entry>
2068 </row>
2069 </tbody>
2070 </entrytbl>
2071
2072 </row>
2073 <row>
2074 <entry spanname="id"><constant>V4L2_CID_TUNE_POWER_LEVEL</constant>&nbsp;</entry>
2075 <entry>integer</entry>
2076 </row>
2077 <row><entry spanname="descr">Sets the output power level for signal transmission.
2078Unit is in dBuV. Range and step are driver-specific.</entry>
2079 </row>
2080 <row>
2081 <entry spanname="id"><constant>V4L2_CID_TUNE_ANTENNA_CAPACITOR</constant>&nbsp;</entry>
2082 <entry>integer</entry>
2083 </row>
2084 <row><entry spanname="descr">This selects the value of antenna tuning capacitor
2085manually or automatically if set to zero. Unit, range and step are driver-specific.</entry>
2086 </row>
2087 <row><entry></entry></row>
2088 </tbody>
2089 </tgroup>
2090 </table>
2091
2092<para>For more details about RDS specification, refer to
2093<xref linkend="en50067" /> document, from CENELEC.</para>
2094 </section>
2095</section>
2096
2097 <!--
2098Local Variables:
2099mode: sgml
2100sgml-parent-document: "common.sgml"
2101indent-tabs-mode: nil
2102End:
2103 -->
diff --git a/Documentation/DocBook/v4l/crop.gif b/Documentation/DocBook/v4l/crop.gif
deleted file mode 100644
index 3b9e7d836d4..00000000000
--- a/Documentation/DocBook/v4l/crop.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/dev-event.xml b/Documentation/DocBook/v4l/dev-event.xml
deleted file mode 100644
index be5a98fb4fa..00000000000
--- a/Documentation/DocBook/v4l/dev-event.xml
+++ /dev/null
@@ -1,31 +0,0 @@
1 <title>Event Interface</title>
2
3 <para>The V4L2 event interface provides means for user to get
4 immediately notified on certain conditions taking place on a device.
5 This might include start of frame or loss of signal events, for
6 example.
7 </para>
8
9 <para>To receive events, the events the user is interested in first must
10 be subscribed using the &VIDIOC-SUBSCRIBE-EVENT; ioctl. Once an event is
11 subscribed, the events of subscribed types are dequeueable using the
12 &VIDIOC-DQEVENT; ioctl. Events may be unsubscribed using
13 VIDIOC_UNSUBSCRIBE_EVENT ioctl. The special event type V4L2_EVENT_ALL may
14 be used to unsubscribe all the events the driver supports.</para>
15
16 <para>The event subscriptions and event queues are specific to file
17 handles. Subscribing an event on one file handle does not affect
18 other file handles.
19 </para>
20
21 <para>The information on dequeueable events is obtained by using select or
22 poll system calls on video devices. The V4L2 events use POLLPRI events on
23 poll system call and exceptions on select system call. </para>
24
25 <!--
26Local Variables:
27mode: sgml
28sgml-parent-document: "v4l2.sgml"
29indent-tabs-mode: nil
30End:
31 -->
diff --git a/Documentation/DocBook/v4l/fieldseq_bt.gif b/Documentation/DocBook/v4l/fieldseq_bt.gif
deleted file mode 100644
index 60e8569a76c..00000000000
--- a/Documentation/DocBook/v4l/fieldseq_bt.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/fieldseq_tb.gif b/Documentation/DocBook/v4l/fieldseq_tb.gif
deleted file mode 100644
index 718492f1cfc..00000000000
--- a/Documentation/DocBook/v4l/fieldseq_tb.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/func-ioctl.xml b/Documentation/DocBook/v4l/func-ioctl.xml
deleted file mode 100644
index b60fd37a629..00000000000
--- a/Documentation/DocBook/v4l/func-ioctl.xml
+++ /dev/null
@@ -1,145 +0,0 @@
1<refentry id="func-ioctl">
2 <refmeta>
3 <refentrytitle>V4L2 ioctl()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-ioctl</refname>
9 <refpurpose>Program a V4L2 device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;sys/ioctl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>void *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>V4L2 ioctl request code as defined in the <filename>videodev2.h</filename> header file, for example
38VIDIOC_QUERYCAP.</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para>Pointer to a function parameter, usually a structure.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>The <function>ioctl()</function> function is used to program
54V4L2 devices. The argument <parameter>fd</parameter> must be an open
55file descriptor. An ioctl <parameter>request</parameter> has encoded
56in it whether the argument is an input, output or read/write
57parameter, and the size of the argument <parameter>argp</parameter> in
58bytes. Macros and defines specifying V4L2 ioctl requests are located
59in the <filename>videodev2.h</filename> header file.
60Applications should use their own copy, not include the version in the
61kernel sources on the system they compile on. All V4L2 ioctl requests,
62their respective function and parameters are specified in <xref
63 linkend="user-func" />.</para>
64 </refsect1>
65
66 <refsect1>
67 <title>Return Value</title>
68
69 <para>On success the <function>ioctl()</function> function returns
70<returnvalue>0</returnvalue> and does not reset the
71<varname>errno</varname> variable. On failure
72<returnvalue>-1</returnvalue> is returned, when the ioctl takes an
73output or read/write parameter it remains unmodified, and the
74<varname>errno</varname> variable is set appropriately. See below for
75possible error codes. Generic errors like <errorcode>EBADF</errorcode>
76or <errorcode>EFAULT</errorcode> are not listed in the sections
77discussing individual ioctl requests.</para>
78 <para>Note ioctls may return undefined error codes. Since errors
79may have side effects such as a driver reset applications should
80abort on unexpected errors.</para>
81
82 <variablelist>
83 <varlistentry>
84 <term><errorcode>EBADF</errorcode></term>
85 <listitem>
86 <para><parameter>fd</parameter> is not a valid open file
87descriptor.</para>
88 </listitem>
89 </varlistentry>
90 <varlistentry>
91 <term><errorcode>EBUSY</errorcode></term>
92 <listitem>
93 <para>The property cannot be changed right now. Typically
94this error code is returned when I/O is in progress or the driver
95supports multiple opens and another process locked the property.</para>
96 </listitem>
97 </varlistentry>
98 <varlistentry>
99 <term><errorcode>EFAULT</errorcode></term>
100 <listitem>
101 <para><parameter>argp</parameter> references an inaccessible
102memory area.</para>
103 </listitem>
104 </varlistentry>
105 <varlistentry>
106 <term><errorcode>ENOTTY</errorcode></term>
107 <listitem>
108 <para><parameter>fd</parameter> is not associated with a
109character special device.</para>
110 </listitem>
111 </varlistentry>
112 <varlistentry>
113 <term><errorcode>EINVAL</errorcode></term>
114 <listitem>
115 <para>The <parameter>request</parameter> or the data pointed
116to by <parameter>argp</parameter> is not valid. This is a very common
117error code, see the individual ioctl requests listed in <xref
118 linkend="user-func" /> for actual causes.</para>
119 </listitem>
120 </varlistentry>
121 <varlistentry>
122 <term><errorcode>ENOMEM</errorcode></term>
123 <listitem>
124 <para>Not enough physical or virtual memory was available to
125complete the request.</para>
126 </listitem>
127 </varlistentry>
128 <varlistentry>
129 <term><errorcode>ERANGE</errorcode></term>
130 <listitem>
131 <para>The application attempted to set a control with the
132&VIDIOC-S-CTRL; ioctl to a value which is out of bounds.</para>
133 </listitem>
134 </varlistentry>
135 </variablelist>
136 </refsect1>
137</refentry>
138
139<!--
140Local Variables:
141mode: sgml
142sgml-parent-document: "v4l2.sgml"
143indent-tabs-mode: nil
144End:
145-->
diff --git a/Documentation/DocBook/v4l/nv12mt.gif b/Documentation/DocBook/v4l/nv12mt.gif
deleted file mode 100644
index ef2d4cf8367..00000000000
--- a/Documentation/DocBook/v4l/nv12mt.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/nv12mt_example.gif b/Documentation/DocBook/v4l/nv12mt_example.gif
deleted file mode 100644
index df81d68108e..00000000000
--- a/Documentation/DocBook/v4l/nv12mt_example.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/pipeline.png b/Documentation/DocBook/v4l/pipeline.png
deleted file mode 100644
index f19b86c2c24..00000000000
--- a/Documentation/DocBook/v4l/pipeline.png
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/vbi_525.gif b/Documentation/DocBook/v4l/vbi_525.gif
deleted file mode 100644
index 5580b690d50..00000000000
--- a/Documentation/DocBook/v4l/vbi_525.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/vbi_625.gif b/Documentation/DocBook/v4l/vbi_625.gif
deleted file mode 100644
index 34e3251983c..00000000000
--- a/Documentation/DocBook/v4l/vbi_625.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/vbi_hsync.gif b/Documentation/DocBook/v4l/vbi_hsync.gif
deleted file mode 100644
index b02434d3b35..00000000000
--- a/Documentation/DocBook/v4l/vbi_hsync.gif
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/v4l/videodev2.h.xml b/Documentation/DocBook/v4l/videodev2.h.xml
deleted file mode 100644
index c50536a4f59..00000000000
--- a/Documentation/DocBook/v4l/videodev2.h.xml
+++ /dev/null
@@ -1,1946 +0,0 @@
1<programlisting>
2/*
3 * Video for Linux Two header file
4 *
5 * Copyright (C) 1999-2007 the contributors
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * Alternatively you can redistribute this file under the terms of the
18 * BSD license as stated below:
19 *
20 * Redistribution and use in source and binary forms, with or without
21 * modification, are permitted provided that the following conditions
22 * are met:
23 * 1. Redistributions of source code must retain the above copyright
24 * notice, this list of conditions and the following disclaimer.
25 * 2. Redistributions in binary form must reproduce the above copyright
26 * notice, this list of conditions and the following disclaimer in
27 * the documentation and/or other materials provided with the
28 * distribution.
29 * 3. The names of its contributors may not be used to endorse or promote
30 * products derived from this software without specific prior written
31 * permission.
32 *
33 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
34 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
35 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
36 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
37 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
38 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
39 * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
40 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
41 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
42 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
43 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
44 *
45 * Header file for v4l or V4L2 drivers and applications
46 * with public API.
47 * All kernel-specific stuff were moved to media/v4l2-dev.h, so
48 * no #if __KERNEL tests are allowed here
49 *
50 * See http://linuxtv.org for more info
51 *
52 * Author: Bill Dirks &lt;bill@thedirks.org&gt;
53 * Justin Schoeman
54 * Hans Verkuil &lt;hverkuil@xs4all.nl&gt;
55 * et al.
56 */
57#ifndef __LINUX_VIDEODEV2_H
58#define __LINUX_VIDEODEV2_H
59
60#ifdef __KERNEL__
61#include &lt;linux/time.h&gt; /* need struct timeval */
62#else
63#include &lt;sys/time.h&gt;
64#endif
65#include &lt;linux/compiler.h&gt;
66#include &lt;linux/ioctl.h&gt;
67#include &lt;linux/types.h&gt;
68
69/*
70 * Common stuff for both V4L1 and V4L2
71 * Moved from videodev.h
72 */
73#define VIDEO_MAX_FRAME 32
74#define VIDEO_MAX_PLANES 8
75
76#ifndef __KERNEL__
77
78/* These defines are V4L1 specific and should not be used with the V4L2 API!
79 They will be removed from this header in the future. */
80
81#define VID_TYPE_CAPTURE 1 /* Can capture */
82#define VID_TYPE_TUNER 2 /* Can tune */
83#define VID_TYPE_TELETEXT 4 /* Does teletext */
84#define VID_TYPE_OVERLAY 8 /* Overlay onto frame buffer */
85#define VID_TYPE_CHROMAKEY 16 /* Overlay by chromakey */
86#define VID_TYPE_CLIPPING 32 /* Can clip */
87#define VID_TYPE_FRAMERAM 64 /* Uses the frame buffer memory */
88#define VID_TYPE_SCALES 128 /* Scalable */
89#define VID_TYPE_MONOCHROME 256 /* Monochrome only */
90#define VID_TYPE_SUBCAPTURE 512 /* Can capture subareas of the image */
91#define VID_TYPE_MPEG_DECODER 1024 /* Can decode MPEG streams */
92#define VID_TYPE_MPEG_ENCODER 2048 /* Can encode MPEG streams */
93#define VID_TYPE_MJPEG_DECODER 4096 /* Can decode MJPEG streams */
94#define VID_TYPE_MJPEG_ENCODER 8192 /* Can encode MJPEG streams */
95#endif
96
97/*
98 * M I S C E L L A N E O U S
99 */
100
101/* Four-character-code (FOURCC) */
102#define v4l2_fourcc(a, b, c, d)\
103 ((__u32)(a) | ((__u32)(b) &lt;&lt; 8) | ((__u32)(c) &lt;&lt; 16) | ((__u32)(d) &lt;&lt; 24))
104
105/*
106 * E N U M S
107 */
108enum <link linkend="v4l2-field">v4l2_field</link> {
109 V4L2_FIELD_ANY = 0, /* driver can choose from none,
110 top, bottom, interlaced
111 depending on whatever it thinks
112 is approximate ... */
113 V4L2_FIELD_NONE = 1, /* this device has no fields ... */
114 V4L2_FIELD_TOP = 2, /* top field only */
115 V4L2_FIELD_BOTTOM = 3, /* bottom field only */
116 V4L2_FIELD_INTERLACED = 4, /* both fields interlaced */
117 V4L2_FIELD_SEQ_TB = 5, /* both fields sequential into one
118 buffer, top-bottom order */
119 V4L2_FIELD_SEQ_BT = 6, /* same as above + bottom-top order */
120 V4L2_FIELD_ALTERNATE = 7, /* both fields alternating into
121 separate buffers */
122 V4L2_FIELD_INTERLACED_TB = 8, /* both fields interlaced, top field
123 first and the top field is
124 transmitted first */
125 V4L2_FIELD_INTERLACED_BT = 9, /* both fields interlaced, top field
126 first and the bottom field is
127 transmitted first */
128};
129#define V4L2_FIELD_HAS_TOP(field) \
130 ((field) == V4L2_FIELD_TOP ||\
131 (field) == V4L2_FIELD_INTERLACED ||\
132 (field) == V4L2_FIELD_INTERLACED_TB ||\
133 (field) == V4L2_FIELD_INTERLACED_BT ||\
134 (field) == V4L2_FIELD_SEQ_TB ||\
135 (field) == V4L2_FIELD_SEQ_BT)
136#define V4L2_FIELD_HAS_BOTTOM(field) \
137 ((field) == V4L2_FIELD_BOTTOM ||\
138 (field) == V4L2_FIELD_INTERLACED ||\
139 (field) == V4L2_FIELD_INTERLACED_TB ||\
140 (field) == V4L2_FIELD_INTERLACED_BT ||\
141 (field) == V4L2_FIELD_SEQ_TB ||\
142 (field) == V4L2_FIELD_SEQ_BT)
143#define V4L2_FIELD_HAS_BOTH(field) \
144 ((field) == V4L2_FIELD_INTERLACED ||\
145 (field) == V4L2_FIELD_INTERLACED_TB ||\
146 (field) == V4L2_FIELD_INTERLACED_BT ||\
147 (field) == V4L2_FIELD_SEQ_TB ||\
148 (field) == V4L2_FIELD_SEQ_BT)
149
150enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> {
151 V4L2_BUF_TYPE_VIDEO_CAPTURE = 1,
152 V4L2_BUF_TYPE_VIDEO_OUTPUT = 2,
153 V4L2_BUF_TYPE_VIDEO_OVERLAY = 3,
154 V4L2_BUF_TYPE_VBI_CAPTURE = 4,
155 V4L2_BUF_TYPE_VBI_OUTPUT = 5,
156 V4L2_BUF_TYPE_SLICED_VBI_CAPTURE = 6,
157 V4L2_BUF_TYPE_SLICED_VBI_OUTPUT = 7,
158#if 1
159 /* Experimental */
160 V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY = 8,
161#endif
162 V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE = 9,
163 V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE = 10,
164 V4L2_BUF_TYPE_PRIVATE = 0x80,
165};
166
167#define V4L2_TYPE_IS_MULTIPLANAR(type) \
168 ((type) == V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE \
169 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE)
170
171#define V4L2_TYPE_IS_OUTPUT(type) \
172 ((type) == V4L2_BUF_TYPE_VIDEO_OUTPUT \
173 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE \
174 || (type) == V4L2_BUF_TYPE_VIDEO_OVERLAY \
175 || (type) == V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY \
176 || (type) == V4L2_BUF_TYPE_VBI_OUTPUT \
177 || (type) == V4L2_BUF_TYPE_SLICED_VBI_OUTPUT)
178
179enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> {
180 V4L2_TUNER_RADIO = 1,
181 V4L2_TUNER_ANALOG_TV = 2,
182 V4L2_TUNER_DIGITAL_TV = 3,
183};
184
185enum <link linkend="v4l2-memory">v4l2_memory</link> {
186 V4L2_MEMORY_MMAP = 1,
187 V4L2_MEMORY_USERPTR = 2,
188 V4L2_MEMORY_OVERLAY = 3,
189};
190
191/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
192enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> {
193 /* ITU-R 601 -- broadcast NTSC/PAL */
194 V4L2_COLORSPACE_SMPTE170M = 1,
195
196 /* 1125-Line (US) HDTV */
197 V4L2_COLORSPACE_SMPTE240M = 2,
198
199 /* HD and modern captures. */
200 V4L2_COLORSPACE_REC709 = 3,
201
202 /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */
203 V4L2_COLORSPACE_BT878 = 4,
204
205 /* These should be useful. Assume 601 extents. */
206 V4L2_COLORSPACE_470_SYSTEM_M = 5,
207 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
208
209 /* I know there will be cameras that send this. So, this is
210 * unspecified chromaticities and full 0-255 on each of the
211 * Y'CbCr components
212 */
213 V4L2_COLORSPACE_JPEG = 7,
214
215 /* For RGB colourspaces, this is probably a good start. */
216 V4L2_COLORSPACE_SRGB = 8,
217};
218
219enum <link linkend="v4l2-priority">v4l2_priority</link> {
220 V4L2_PRIORITY_UNSET = 0, /* not initialized */
221 V4L2_PRIORITY_BACKGROUND = 1,
222 V4L2_PRIORITY_INTERACTIVE = 2,
223 V4L2_PRIORITY_RECORD = 3,
224 V4L2_PRIORITY_DEFAULT = V4L2_PRIORITY_INTERACTIVE,
225};
226
227struct <link linkend="v4l2-rect">v4l2_rect</link> {
228 __s32 left;
229 __s32 top;
230 __s32 width;
231 __s32 height;
232};
233
234struct <link linkend="v4l2-fract">v4l2_fract</link> {
235 __u32 numerator;
236 __u32 denominator;
237};
238
239/*
240 * D R I V E R C A P A B I L I T I E S
241 */
242struct <link linkend="v4l2-capability">v4l2_capability</link> {
243 __u8 driver[16]; /* i.e.ie; "bttv" */
244 __u8 card[32]; /* i.e.ie; "Hauppauge WinTV" */
245 __u8 bus_info[32]; /* "PCI:" + pci_name(pci_dev) */
246 __u32 version; /* should use KERNEL_VERSION() */
247 __u32 capabilities; /* Device capabilities */
248 __u32 reserved[4];
249};
250
251/* Values for 'capabilities' field */
252#define V4L2_CAP_VIDEO_CAPTURE 0x00000001 /* Is a video capture device */
253#define V4L2_CAP_VIDEO_OUTPUT 0x00000002 /* Is a video output device */
254#define V4L2_CAP_VIDEO_OVERLAY 0x00000004 /* Can do video overlay */
255#define V4L2_CAP_VBI_CAPTURE 0x00000010 /* Is a raw VBI capture device */
256#define V4L2_CAP_VBI_OUTPUT 0x00000020 /* Is a raw VBI output device */
257#define V4L2_CAP_SLICED_VBI_CAPTURE 0x00000040 /* Is a sliced VBI capture device */
258#define V4L2_CAP_SLICED_VBI_OUTPUT 0x00000080 /* Is a sliced VBI output device */
259#define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */
260#define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */
261#define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */
262#define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */
263
264/* Is a video capture device that supports multiplanar formats */
265#define V4L2_CAP_VIDEO_CAPTURE_MPLANE 0x00001000
266/* Is a video output device that supports multiplanar formats */
267#define V4L2_CAP_VIDEO_OUTPUT_MPLANE 0x00002000
268
269#define V4L2_CAP_TUNER 0x00010000 /* has a tuner */
270#define V4L2_CAP_AUDIO 0x00020000 /* has audio support */
271#define V4L2_CAP_RADIO 0x00040000 /* is a radio device */
272#define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */
273
274#define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */
275#define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */
276#define V4L2_CAP_STREAMING 0x04000000 /* streaming I/O ioctls */
277
278/*
279 * V I D E O I M A G E F O R M A T
280 */
281struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> {
282 __u32 width;
283 __u32 height;
284 __u32 pixelformat;
285 enum <link linkend="v4l2-field">v4l2_field</link> field;
286 __u32 bytesperline; /* for padding, zero if unused */
287 __u32 sizeimage;
288 enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> colorspace;
289 __u32 priv; /* private data, depends on pixelformat */
290};
291
292/* Pixel format FOURCC depth Description */
293
294/* RGB formats */
295#define <link linkend="V4L2-PIX-FMT-RGB332">V4L2_PIX_FMT_RGB332</link> v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
296#define <link linkend="V4L2-PIX-FMT-RGB444">V4L2_PIX_FMT_RGB444</link> v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
297#define <link linkend="V4L2-PIX-FMT-RGB555">V4L2_PIX_FMT_RGB555</link> v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
298#define <link linkend="V4L2-PIX-FMT-RGB565">V4L2_PIX_FMT_RGB565</link> v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */
299#define <link linkend="V4L2-PIX-FMT-RGB555X">V4L2_PIX_FMT_RGB555X</link> v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */
300#define <link linkend="V4L2-PIX-FMT-RGB565X">V4L2_PIX_FMT_RGB565X</link> v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
301#define <link linkend="V4L2-PIX-FMT-BGR666">V4L2_PIX_FMT_BGR666</link> v4l2_fourcc('B', 'G', 'R', 'H') /* 18 BGR-6-6-6 */
302#define <link linkend="V4L2-PIX-FMT-BGR24">V4L2_PIX_FMT_BGR24</link> v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
303#define <link linkend="V4L2-PIX-FMT-RGB24">V4L2_PIX_FMT_RGB24</link> v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
304#define <link linkend="V4L2-PIX-FMT-BGR32">V4L2_PIX_FMT_BGR32</link> v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
305#define <link linkend="V4L2-PIX-FMT-RGB32">V4L2_PIX_FMT_RGB32</link> v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
306
307/* Grey formats */
308#define <link linkend="V4L2-PIX-FMT-GREY">V4L2_PIX_FMT_GREY</link> v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
309#define <link linkend="V4L2-PIX-FMT-Y4">V4L2_PIX_FMT_Y4</link> v4l2_fourcc('Y', '0', '4', ' ') /* 4 Greyscale */
310#define <link linkend="V4L2-PIX-FMT-Y6">V4L2_PIX_FMT_Y6</link> v4l2_fourcc('Y', '0', '6', ' ') /* 6 Greyscale */
311#define <link linkend="V4L2-PIX-FMT-Y10">V4L2_PIX_FMT_Y10</link> v4l2_fourcc('Y', '1', '0', ' ') /* 10 Greyscale */
312#define <link linkend="V4L2-PIX-FMT-Y16">V4L2_PIX_FMT_Y16</link> v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */
313
314/* Grey bit-packed formats */
315#define <link linkend="V4L2-PIX-FMT-Y10BPACK">V4L2_PIX_FMT_Y10BPACK</link> v4l2_fourcc('Y', '1', '0', 'B') /* 10 Greyscale bit-packed */
316
317/* Palette formats */
318#define <link linkend="V4L2-PIX-FMT-PAL8">V4L2_PIX_FMT_PAL8</link> v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */
319
320/* Luminance+Chrominance formats */
321#define <link linkend="V4L2-PIX-FMT-YVU410">V4L2_PIX_FMT_YVU410</link> v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */
322#define <link linkend="V4L2-PIX-FMT-YVU420">V4L2_PIX_FMT_YVU420</link> v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */
323#define <link linkend="V4L2-PIX-FMT-YUYV">V4L2_PIX_FMT_YUYV</link> v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */
324#define <link linkend="V4L2-PIX-FMT-YYUV">V4L2_PIX_FMT_YYUV</link> v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */
325#define <link linkend="V4L2-PIX-FMT-YVYU">V4L2_PIX_FMT_YVYU</link> v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */
326#define <link linkend="V4L2-PIX-FMT-UYVY">V4L2_PIX_FMT_UYVY</link> v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */
327#define <link linkend="V4L2-PIX-FMT-VYUY">V4L2_PIX_FMT_VYUY</link> v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */
328#define <link linkend="V4L2-PIX-FMT-YUV422P">V4L2_PIX_FMT_YUV422P</link> v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */
329#define <link linkend="V4L2-PIX-FMT-YUV411P">V4L2_PIX_FMT_YUV411P</link> v4l2_fourcc('4', '1', '1', 'P') /* 16 YVU411 planar */
330#define <link linkend="V4L2-PIX-FMT-Y41P">V4L2_PIX_FMT_Y41P</link> v4l2_fourcc('Y', '4', '1', 'P') /* 12 YUV 4:1:1 */
331#define <link linkend="V4L2-PIX-FMT-YUV444">V4L2_PIX_FMT_YUV444</link> v4l2_fourcc('Y', '4', '4', '4') /* 16 xxxxyyyy uuuuvvvv */
332#define <link linkend="V4L2-PIX-FMT-YUV555">V4L2_PIX_FMT_YUV555</link> v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */
333#define <link linkend="V4L2-PIX-FMT-YUV565">V4L2_PIX_FMT_YUV565</link> v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */
334#define <link linkend="V4L2-PIX-FMT-YUV32">V4L2_PIX_FMT_YUV32</link> v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */
335#define <link linkend="V4L2-PIX-FMT-YUV410">V4L2_PIX_FMT_YUV410</link> v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */
336#define <link linkend="V4L2-PIX-FMT-YUV420">V4L2_PIX_FMT_YUV420</link> v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */
337#define <link linkend="V4L2-PIX-FMT-HI240">V4L2_PIX_FMT_HI240</link> v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */
338#define <link linkend="V4L2-PIX-FMT-HM12">V4L2_PIX_FMT_HM12</link> v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */
339#define <link linkend="V4L2-PIX-FMT-M420">V4L2_PIX_FMT_M420</link> v4l2_fourcc('M', '4', '2', '0') /* 12 YUV 4:2:0 2 lines y, 1 line uv interleaved */
340
341/* two planes -- one Y, one Cr + Cb interleaved */
342#define <link linkend="V4L2-PIX-FMT-NV12">V4L2_PIX_FMT_NV12</link> v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */
343#define <link linkend="V4L2-PIX-FMT-NV21">V4L2_PIX_FMT_NV21</link> v4l2_fourcc('N', 'V', '2', '1') /* 12 Y/CrCb 4:2:0 */
344#define <link linkend="V4L2-PIX-FMT-NV16">V4L2_PIX_FMT_NV16</link> v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */
345#define <link linkend="V4L2-PIX-FMT-NV61">V4L2_PIX_FMT_NV61</link> v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */
346
347/* two non contiguous planes - one Y, one Cr + Cb interleaved */
348#define <link linkend="V4L2-PIX-FMT-NV12M">V4L2_PIX_FMT_NV12M</link> v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */
349#define <link linkend="V4L2-PIX-FMT-NV12MT">V4L2_PIX_FMT_NV12MT</link> v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */
350
351/* three non contiguous planes - Y, Cb, Cr */
352#define <link linkend="V4L2-PIX-FMT-YUV420M">V4L2_PIX_FMT_YUV420M</link> v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */
353
354/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
355#define <link linkend="V4L2-PIX-FMT-SBGGR8">V4L2_PIX_FMT_SBGGR8</link> v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
356#define <link linkend="V4L2-PIX-FMT-SGBRG8">V4L2_PIX_FMT_SGBRG8</link> v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */
357#define <link linkend="V4L2-PIX-FMT-SGRBG8">V4L2_PIX_FMT_SGRBG8</link> v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */
358#define <link linkend="V4L2-PIX-FMT-SRGGB8">V4L2_PIX_FMT_SRGGB8</link> v4l2_fourcc('R', 'G', 'G', 'B') /* 8 RGRG.. GBGB.. */
359#define <link linkend="V4L2-PIX-FMT-SBGGR10">V4L2_PIX_FMT_SBGGR10</link> v4l2_fourcc('B', 'G', '1', '0') /* 10 BGBG.. GRGR.. */
360#define <link linkend="V4L2-PIX-FMT-SGBRG10">V4L2_PIX_FMT_SGBRG10</link> v4l2_fourcc('G', 'B', '1', '0') /* 10 GBGB.. RGRG.. */
361#define <link linkend="V4L2-PIX-FMT-SGRBG10">V4L2_PIX_FMT_SGRBG10</link> v4l2_fourcc('B', 'A', '1', '0') /* 10 GRGR.. BGBG.. */
362#define <link linkend="V4L2-PIX-FMT-SRGGB10">V4L2_PIX_FMT_SRGGB10</link> v4l2_fourcc('R', 'G', '1', '0') /* 10 RGRG.. GBGB.. */
363 /* 10bit raw bayer DPCM compressed to 8 bits */
364#define <link linkend="V4L2-PIX-FMT-SGRBG10DPCM8">V4L2_PIX_FMT_SGRBG10DPCM8</link> v4l2_fourcc('B', 'D', '1', '0')
365 /*
366 * 10bit raw bayer, expanded to 16 bits
367 * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb...
368 */
369#define <link linkend="V4L2-PIX-FMT-SBGGR16">V4L2_PIX_FMT_SBGGR16</link> v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */
370
371/* compressed formats */
372#define <link linkend="V4L2-PIX-FMT-MJPEG">V4L2_PIX_FMT_MJPEG</link> v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */
373#define <link linkend="V4L2-PIX-FMT-JPEG">V4L2_PIX_FMT_JPEG</link> v4l2_fourcc('J', 'P', 'E', 'G') /* JFIF JPEG */
374#define <link linkend="V4L2-PIX-FMT-DV">V4L2_PIX_FMT_DV</link> v4l2_fourcc('d', 'v', 's', 'd') /* 1394 */
375#define <link linkend="V4L2-PIX-FMT-MPEG">V4L2_PIX_FMT_MPEG</link> v4l2_fourcc('M', 'P', 'E', 'G') /* MPEG-1/2/4 */
376
377/* Vendor-specific formats */
378#define <link linkend="V4L2-PIX-FMT-CPIA1">V4L2_PIX_FMT_CPIA1</link> v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
379#define <link linkend="V4L2-PIX-FMT-WNVA">V4L2_PIX_FMT_WNVA</link> v4l2_fourcc('W', 'N', 'V', 'A') /* Winnov hw compress */
380#define <link linkend="V4L2-PIX-FMT-SN9C10X">V4L2_PIX_FMT_SN9C10X</link> v4l2_fourcc('S', '9', '1', '0') /* SN9C10x compression */
381#define <link linkend="V4L2-PIX-FMT-SN9C20X-I420">V4L2_PIX_FMT_SN9C20X_I420</link> v4l2_fourcc('S', '9', '2', '0') /* SN9C20x YUV 4:2:0 */
382#define <link linkend="V4L2-PIX-FMT-PWC1">V4L2_PIX_FMT_PWC1</link> v4l2_fourcc('P', 'W', 'C', '1') /* pwc older webcam */
383#define <link linkend="V4L2-PIX-FMT-PWC2">V4L2_PIX_FMT_PWC2</link> v4l2_fourcc('P', 'W', 'C', '2') /* pwc newer webcam */
384#define <link linkend="V4L2-PIX-FMT-ET61X251">V4L2_PIX_FMT_ET61X251</link> v4l2_fourcc('E', '6', '2', '5') /* ET61X251 compression */
385#define <link linkend="V4L2-PIX-FMT-SPCA501">V4L2_PIX_FMT_SPCA501</link> v4l2_fourcc('S', '5', '0', '1') /* YUYV per line */
386#define <link linkend="V4L2-PIX-FMT-SPCA505">V4L2_PIX_FMT_SPCA505</link> v4l2_fourcc('S', '5', '0', '5') /* YYUV per line */
387#define <link linkend="V4L2-PIX-FMT-SPCA508">V4L2_PIX_FMT_SPCA508</link> v4l2_fourcc('S', '5', '0', '8') /* YUVY per line */
388#define <link linkend="V4L2-PIX-FMT-SPCA561">V4L2_PIX_FMT_SPCA561</link> v4l2_fourcc('S', '5', '6', '1') /* compressed GBRG bayer */
389#define <link linkend="V4L2-PIX-FMT-PAC207">V4L2_PIX_FMT_PAC207</link> v4l2_fourcc('P', '2', '0', '7') /* compressed BGGR bayer */
390#define <link linkend="V4L2-PIX-FMT-MR97310A">V4L2_PIX_FMT_MR97310A</link> v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */
391#define <link linkend="V4L2-PIX-FMT-SN9C2028">V4L2_PIX_FMT_SN9C2028</link> v4l2_fourcc('S', 'O', 'N', 'X') /* compressed GBRG bayer */
392#define <link linkend="V4L2-PIX-FMT-SQ905C">V4L2_PIX_FMT_SQ905C</link> v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */
393#define <link linkend="V4L2-PIX-FMT-PJPG">V4L2_PIX_FMT_PJPG</link> v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */
394#define <link linkend="V4L2-PIX-FMT-OV511">V4L2_PIX_FMT_OV511</link> v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */
395#define <link linkend="V4L2-PIX-FMT-OV518">V4L2_PIX_FMT_OV518</link> v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */
396#define <link linkend="V4L2-PIX-FMT-STV0680">V4L2_PIX_FMT_STV0680</link> v4l2_fourcc('S', '6', '8', '0') /* stv0680 bayer */
397#define <link linkend="V4L2-PIX-FMT-TM6000">V4L2_PIX_FMT_TM6000</link> v4l2_fourcc('T', 'M', '6', '0') /* tm5600/tm60x0 */
398#define <link linkend="V4L2-PIX-FMT-CIT-YYVYUY">V4L2_PIX_FMT_CIT_YYVYUY</link> v4l2_fourcc('C', 'I', 'T', 'V') /* one line of Y then 1 line of VYUY */
399#define <link linkend="V4L2-PIX-FMT-KONICA420">V4L2_PIX_FMT_KONICA420</link> v4l2_fourcc('K', 'O', 'N', 'I') /* YUV420 planar in blocks of 256 pixels */
400
401/*
402 * F O R M A T E N U M E R A T I O N
403 */
404struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link> {
405 __u32 index; /* Format number */
406 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type; /* buffer type */
407 __u32 flags;
408 __u8 description[32]; /* Description string */
409 __u32 pixelformat; /* Format fourcc */
410 __u32 reserved[4];
411};
412
413#define V4L2_FMT_FLAG_COMPRESSED 0x0001
414#define V4L2_FMT_FLAG_EMULATED 0x0002
415
416#if 1
417 /* Experimental Frame Size and frame rate enumeration */
418/*
419 * F R A M E S I Z E E N U M E R A T I O N
420 */
421enum <link linkend="v4l2-frmsizetypes">v4l2_frmsizetypes</link> {
422 V4L2_FRMSIZE_TYPE_DISCRETE = 1,
423 V4L2_FRMSIZE_TYPE_CONTINUOUS = 2,
424 V4L2_FRMSIZE_TYPE_STEPWISE = 3,
425};
426
427struct <link linkend="v4l2-frmsize-discrete">v4l2_frmsize_discrete</link> {
428 __u32 width; /* Frame width [pixel] */
429 __u32 height; /* Frame height [pixel] */
430};
431
432struct <link linkend="v4l2-frmsize-stepwise">v4l2_frmsize_stepwise</link> {
433 __u32 min_width; /* Minimum frame width [pixel] */
434 __u32 max_width; /* Maximum frame width [pixel] */
435 __u32 step_width; /* Frame width step size [pixel] */
436 __u32 min_height; /* Minimum frame height [pixel] */
437 __u32 max_height; /* Maximum frame height [pixel] */
438 __u32 step_height; /* Frame height step size [pixel] */
439};
440
441struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link> {
442 __u32 index; /* Frame size number */
443 __u32 pixel_format; /* Pixel format */
444 __u32 type; /* Frame size type the device supports. */
445
446 union { /* Frame size */
447 struct <link linkend="v4l2-frmsize-discrete">v4l2_frmsize_discrete</link> discrete;
448 struct <link linkend="v4l2-frmsize-stepwise">v4l2_frmsize_stepwise</link> stepwise;
449 };
450
451 __u32 reserved[2]; /* Reserved space for future use */
452};
453
454/*
455 * F R A M E R A T E E N U M E R A T I O N
456 */
457enum <link linkend="v4l2-frmivaltypes">v4l2_frmivaltypes</link> {
458 V4L2_FRMIVAL_TYPE_DISCRETE = 1,
459 V4L2_FRMIVAL_TYPE_CONTINUOUS = 2,
460 V4L2_FRMIVAL_TYPE_STEPWISE = 3,
461};
462
463struct <link linkend="v4l2-frmival-stepwise">v4l2_frmival_stepwise</link> {
464 struct <link linkend="v4l2-fract">v4l2_fract</link> min; /* Minimum frame interval [s] */
465 struct <link linkend="v4l2-fract">v4l2_fract</link> max; /* Maximum frame interval [s] */
466 struct <link linkend="v4l2-fract">v4l2_fract</link> step; /* Frame interval step size [s] */
467};
468
469struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link> {
470 __u32 index; /* Frame format index */
471 __u32 pixel_format; /* Pixel format */
472 __u32 width; /* Frame width */
473 __u32 height; /* Frame height */
474 __u32 type; /* Frame interval type the device supports. */
475
476 union { /* Frame interval */
477 struct <link linkend="v4l2-fract">v4l2_fract</link> discrete;
478 struct <link linkend="v4l2-frmival-stepwise">v4l2_frmival_stepwise</link> stepwise;
479 };
480
481 __u32 reserved[2]; /* Reserved space for future use */
482};
483#endif
484
485/*
486 * T I M E C O D E
487 */
488struct <link linkend="v4l2-timecode">v4l2_timecode</link> {
489 __u32 type;
490 __u32 flags;
491 __u8 frames;
492 __u8 seconds;
493 __u8 minutes;
494 __u8 hours;
495 __u8 userbits[4];
496};
497
498/* Type */
499#define V4L2_TC_TYPE_24FPS 1
500#define V4L2_TC_TYPE_25FPS 2
501#define V4L2_TC_TYPE_30FPS 3
502#define V4L2_TC_TYPE_50FPS 4
503#define V4L2_TC_TYPE_60FPS 5
504
505/* Flags */
506#define V4L2_TC_FLAG_DROPFRAME 0x0001 /* "drop-frame" mode */
507#define V4L2_TC_FLAG_COLORFRAME 0x0002
508#define V4L2_TC_USERBITS_field 0x000C
509#define V4L2_TC_USERBITS_USERDEFINED 0x0000
510#define V4L2_TC_USERBITS_8BITCHARS 0x0008
511/* The above is based on SMPTE timecodes */
512
513struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link> {
514 int quality;
515
516 int APPn; /* Number of APP segment to be written,
517 * must be 0..15 */
518 int APP_len; /* Length of data in JPEG APPn segment */
519 char APP_data[60]; /* Data in the JPEG APPn segment. */
520
521 int COM_len; /* Length of data in JPEG COM segment */
522 char COM_data[60]; /* Data in JPEG COM segment */
523
524 __u32 jpeg_markers; /* Which markers should go into the JPEG
525 * output. Unless you exactly know what
526 * you do, leave them untouched.
527 * Inluding less markers will make the
528 * resulting code smaller, but there will
529 * be fewer applications which can read it.
530 * The presence of the APP and COM marker
531 * is influenced by APP_len and COM_len
532 * ONLY, not by this property! */
533
534#define V4L2_JPEG_MARKER_DHT (1&lt;&lt;3) /* Define Huffman Tables */
535#define V4L2_JPEG_MARKER_DQT (1&lt;&lt;4) /* Define Quantization Tables */
536#define V4L2_JPEG_MARKER_DRI (1&lt;&lt;5) /* Define Restart Interval */
537#define V4L2_JPEG_MARKER_COM (1&lt;&lt;6) /* Comment segment */
538#define V4L2_JPEG_MARKER_APP (1&lt;&lt;7) /* App segment, driver will
539 * allways use APP0 */
540};
541
542/*
543 * M E M O R Y - M A P P I N G B U F F E R S
544 */
545struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> {
546 __u32 count;
547 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
548 enum <link linkend="v4l2-memory">v4l2_memory</link> memory;
549 __u32 reserved[2];
550};
551
552/**
553 * struct <link linkend="v4l2-plane">v4l2_plane</link> - plane info for multi-planar buffers
554 * @bytesused: number of bytes occupied by data in the plane (payload)
555 * @length: size of this plane (NOT the payload) in bytes
556 * @mem_offset: when memory in the associated struct <link linkend="v4l2-buffer">v4l2_buffer</link> is
557 * V4L2_MEMORY_MMAP, equals the offset from the start of
558 * the device memory for this plane (or is a "cookie" that
559 * should be passed to mmap() called on the video node)
560 * @userptr: when memory is V4L2_MEMORY_USERPTR, a userspace pointer
561 * pointing to this plane
562 * @data_offset: offset in the plane to the start of data; usually 0,
563 * unless there is a header in front of the data
564 *
565 * Multi-planar buffers consist of one or more planes, e.g. an YCbCr buffer
566 * with two planes can have one plane for Y, and another for interleaved CbCr
567 * components. Each plane can reside in a separate memory buffer, or even in
568 * a completely separate memory node (e.g. in embedded devices).
569 */
570struct <link linkend="v4l2-plane">v4l2_plane</link> {
571 __u32 bytesused;
572 __u32 length;
573 union {
574 __u32 mem_offset;
575 unsigned long userptr;
576 } m;
577 __u32 data_offset;
578 __u32 reserved[11];
579};
580
581/**
582 * struct <link linkend="v4l2-buffer">v4l2_buffer</link> - video buffer info
583 * @index: id number of the buffer
584 * @type: buffer type (type == *_MPLANE for multiplanar buffers)
585 * @bytesused: number of bytes occupied by data in the buffer (payload);
586 * unused (set to 0) for multiplanar buffers
587 * @flags: buffer informational flags
588 * @field: field order of the image in the buffer
589 * @timestamp: frame timestamp
590 * @timecode: frame timecode
591 * @sequence: sequence count of this frame
592 * @memory: the method, in which the actual video data is passed
593 * @offset: for non-multiplanar buffers with memory == V4L2_MEMORY_MMAP;
594 * offset from the start of the device memory for this plane,
595 * (or a "cookie" that should be passed to mmap() as offset)
596 * @userptr: for non-multiplanar buffers with memory == V4L2_MEMORY_USERPTR;
597 * a userspace pointer pointing to this buffer
598 * @planes: for multiplanar buffers; userspace pointer to the array of plane
599 * info structs for this buffer
600 * @length: size in bytes of the buffer (NOT its payload) for single-plane
601 * buffers (when type != *_MPLANE); number of elements in the
602 * planes array for multi-plane buffers
603 * @input: input number from which the video data has has been captured
604 *
605 * Contains data exchanged by application and driver using one of the Streaming
606 * I/O methods.
607 */
608struct <link linkend="v4l2-buffer">v4l2_buffer</link> {
609 __u32 index;
610 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
611 __u32 bytesused;
612 __u32 flags;
613 enum <link linkend="v4l2-field">v4l2_field</link> field;
614 struct timeval timestamp;
615 struct <link linkend="v4l2-timecode">v4l2_timecode</link> timecode;
616 __u32 sequence;
617
618 /* memory location */
619 enum <link linkend="v4l2-memory">v4l2_memory</link> memory;
620 union {
621 __u32 offset;
622 unsigned long userptr;
623 struct <link linkend="v4l2-plane">v4l2_plane</link> *planes;
624 } m;
625 __u32 length;
626 __u32 input;
627 __u32 reserved;
628};
629
630/* Flags for 'flags' field */
631#define V4L2_BUF_FLAG_MAPPED 0x0001 /* Buffer is mapped (flag) */
632#define V4L2_BUF_FLAG_QUEUED 0x0002 /* Buffer is queued for processing */
633#define V4L2_BUF_FLAG_DONE 0x0004 /* Buffer is ready */
634#define V4L2_BUF_FLAG_KEYFRAME 0x0008 /* Image is a keyframe (I-frame) */
635#define V4L2_BUF_FLAG_PFRAME 0x0010 /* Image is a P-frame */
636#define V4L2_BUF_FLAG_BFRAME 0x0020 /* Image is a B-frame */
637/* Buffer is ready, but the data contained within is corrupted. */
638#define V4L2_BUF_FLAG_ERROR 0x0040
639#define V4L2_BUF_FLAG_TIMECODE 0x0100 /* timecode field is valid */
640#define V4L2_BUF_FLAG_INPUT 0x0200 /* input field is valid */
641
642/*
643 * O V E R L A Y P R E V I E W
644 */
645struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link> {
646 __u32 capability;
647 __u32 flags;
648/* FIXME: in theory we should pass something like PCI device + memory
649 * region + offset instead of some physical address */
650 void *base;
651 struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> fmt;
652};
653/* Flags for the 'capability' field. Read only */
654#define V4L2_FBUF_CAP_EXTERNOVERLAY 0x0001
655#define V4L2_FBUF_CAP_CHROMAKEY 0x0002
656#define V4L2_FBUF_CAP_LIST_CLIPPING 0x0004
657#define V4L2_FBUF_CAP_BITMAP_CLIPPING 0x0008
658#define V4L2_FBUF_CAP_LOCAL_ALPHA 0x0010
659#define V4L2_FBUF_CAP_GLOBAL_ALPHA 0x0020
660#define V4L2_FBUF_CAP_LOCAL_INV_ALPHA 0x0040
661#define V4L2_FBUF_CAP_SRC_CHROMAKEY 0x0080
662/* Flags for the 'flags' field. */
663#define V4L2_FBUF_FLAG_PRIMARY 0x0001
664#define V4L2_FBUF_FLAG_OVERLAY 0x0002
665#define V4L2_FBUF_FLAG_CHROMAKEY 0x0004
666#define V4L2_FBUF_FLAG_LOCAL_ALPHA 0x0008
667#define V4L2_FBUF_FLAG_GLOBAL_ALPHA 0x0010
668#define V4L2_FBUF_FLAG_LOCAL_INV_ALPHA 0x0020
669#define V4L2_FBUF_FLAG_SRC_CHROMAKEY 0x0040
670
671struct <link linkend="v4l2-clip">v4l2_clip</link> {
672 struct <link linkend="v4l2-rect">v4l2_rect</link> c;
673 struct <link linkend="v4l2-clip">v4l2_clip</link> __user *next;
674};
675
676struct <link linkend="v4l2-window">v4l2_window</link> {
677 struct <link linkend="v4l2-rect">v4l2_rect</link> w;
678 enum <link linkend="v4l2-field">v4l2_field</link> field;
679 __u32 chromakey;
680 struct <link linkend="v4l2-clip">v4l2_clip</link> __user *clips;
681 __u32 clipcount;
682 void __user *bitmap;
683 __u8 global_alpha;
684};
685
686/*
687 * C A P T U R E P A R A M E T E R S
688 */
689struct <link linkend="v4l2-captureparm">v4l2_captureparm</link> {
690 __u32 capability; /* Supported modes */
691 __u32 capturemode; /* Current mode */
692 struct <link linkend="v4l2-fract">v4l2_fract</link> timeperframe; /* Time per frame in .1us units */
693 __u32 extendedmode; /* Driver-specific extensions */
694 __u32 readbuffers; /* # of buffers for read */
695 __u32 reserved[4];
696};
697
698/* Flags for 'capability' and 'capturemode' fields */
699#define V4L2_MODE_HIGHQUALITY 0x0001 /* High quality imaging mode */
700#define V4L2_CAP_TIMEPERFRAME 0x1000 /* timeperframe field is supported */
701
702struct <link linkend="v4l2-outputparm">v4l2_outputparm</link> {
703 __u32 capability; /* Supported modes */
704 __u32 outputmode; /* Current mode */
705 struct <link linkend="v4l2-fract">v4l2_fract</link> timeperframe; /* Time per frame in seconds */
706 __u32 extendedmode; /* Driver-specific extensions */
707 __u32 writebuffers; /* # of buffers for write */
708 __u32 reserved[4];
709};
710
711/*
712 * I N P U T I M A G E C R O P P I N G
713 */
714struct <link linkend="v4l2-cropcap">v4l2_cropcap</link> {
715 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
716 struct <link linkend="v4l2-rect">v4l2_rect</link> bounds;
717 struct <link linkend="v4l2-rect">v4l2_rect</link> defrect;
718 struct <link linkend="v4l2-fract">v4l2_fract</link> pixelaspect;
719};
720
721struct <link linkend="v4l2-crop">v4l2_crop</link> {
722 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
723 struct <link linkend="v4l2-rect">v4l2_rect</link> c;
724};
725
726/*
727 * A N A L O G V I D E O S T A N D A R D
728 */
729
730typedef __u64 v4l2_std_id;
731
732/* one bit for each */
733#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
734#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
735#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
736#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
737#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
738#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
739#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
740#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
741
742#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
743#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
744#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
745#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
746
747#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
748#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
749#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
750#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
751
752#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
753#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
754#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
755#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
756#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
757#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
758#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
759#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
760
761/* ATSC/HDTV */
762#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
763#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
764
765/* FIXME:
766 Although std_id is 64 bits, there is an issue on PPC32 architecture that
767 makes switch(__u64) to break. So, there's a hack on v4l2-common.c rounding
768 this value to 32 bits.
769 As, currently, the max value is for V4L2_STD_ATSC_16_VSB (30 bits wide),
770 it should work fine. However, if needed to add more than two standards,
771 v4l2-common.c should be fixed.
772 */
773
774/* some merged standards */
775#define V4L2_STD_MN (V4L2_STD_PAL_M|V4L2_STD_PAL_N|V4L2_STD_PAL_Nc|V4L2_STD_NTSC)
776#define V4L2_STD_B (V4L2_STD_PAL_B|V4L2_STD_PAL_B1|V4L2_STD_SECAM_B)
777#define V4L2_STD_GH (V4L2_STD_PAL_G|V4L2_STD_PAL_H|V4L2_STD_SECAM_G|V4L2_STD_SECAM_H)
778#define V4L2_STD_DK (V4L2_STD_PAL_DK|V4L2_STD_SECAM_DK)
779
780/* some common needed stuff */
781#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
782 V4L2_STD_PAL_B1 |\
783 V4L2_STD_PAL_G)
784#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
785 V4L2_STD_PAL_D1 |\
786 V4L2_STD_PAL_K)
787#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
788 V4L2_STD_PAL_DK |\
789 V4L2_STD_PAL_H |\
790 V4L2_STD_PAL_I)
791#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
792 V4L2_STD_NTSC_M_JP |\
793 V4L2_STD_NTSC_M_KR)
794#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\
795 V4L2_STD_SECAM_K |\
796 V4L2_STD_SECAM_K1)
797#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
798 V4L2_STD_SECAM_G |\
799 V4L2_STD_SECAM_H |\
800 V4L2_STD_SECAM_DK |\
801 V4L2_STD_SECAM_L |\
802 V4L2_STD_SECAM_LC)
803
804#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
805 V4L2_STD_PAL_60 |\
806 V4L2_STD_NTSC |\
807 V4L2_STD_NTSC_443)
808#define V4L2_STD_625_50 (V4L2_STD_PAL |\
809 V4L2_STD_PAL_N |\
810 V4L2_STD_PAL_Nc |\
811 V4L2_STD_SECAM)
812#define V4L2_STD_ATSC (V4L2_STD_ATSC_8_VSB |\
813 V4L2_STD_ATSC_16_VSB)
814
815#define V4L2_STD_UNKNOWN 0
816#define V4L2_STD_ALL (V4L2_STD_525_60 |\
817 V4L2_STD_625_50)
818
819struct <link linkend="v4l2-standard">v4l2_standard</link> {
820 __u32 index;
821 v4l2_std_id id;
822 __u8 name[24];
823 struct <link linkend="v4l2-fract">v4l2_fract</link> frameperiod; /* Frames, not fields */
824 __u32 framelines;
825 __u32 reserved[4];
826};
827
828/*
829 * V I D E O T I M I N G S D V P R E S E T
830 */
831struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link> {
832 __u32 preset;
833 __u32 reserved[4];
834};
835
836/*
837 * D V P R E S E T S E N U M E R A T I O N
838 */
839struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link> {
840 __u32 index;
841 __u32 preset;
842 __u8 name[32]; /* Name of the preset timing */
843 __u32 width;
844 __u32 height;
845 __u32 reserved[4];
846};
847
848/*
849 * D V P R E S E T V A L U E S
850 */
851#define V4L2_DV_INVALID 0
852#define V4L2_DV_480P59_94 1 /* BT.1362 */
853#define V4L2_DV_576P50 2 /* BT.1362 */
854#define V4L2_DV_720P24 3 /* SMPTE 296M */
855#define V4L2_DV_720P25 4 /* SMPTE 296M */
856#define V4L2_DV_720P30 5 /* SMPTE 296M */
857#define V4L2_DV_720P50 6 /* SMPTE 296M */
858#define V4L2_DV_720P59_94 7 /* SMPTE 274M */
859#define V4L2_DV_720P60 8 /* SMPTE 274M/296M */
860#define V4L2_DV_1080I29_97 9 /* BT.1120/ SMPTE 274M */
861#define V4L2_DV_1080I30 10 /* BT.1120/ SMPTE 274M */
862#define V4L2_DV_1080I25 11 /* BT.1120 */
863#define V4L2_DV_1080I50 12 /* SMPTE 296M */
864#define V4L2_DV_1080I60 13 /* SMPTE 296M */
865#define V4L2_DV_1080P24 14 /* SMPTE 296M */
866#define V4L2_DV_1080P25 15 /* SMPTE 296M */
867#define V4L2_DV_1080P30 16 /* SMPTE 296M */
868#define V4L2_DV_1080P50 17 /* BT.1120 */
869#define V4L2_DV_1080P60 18 /* BT.1120 */
870
871/*
872 * D V B T T I M I N G S
873 */
874
875/* BT.656/BT.1120 timing data */
876struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> {
877 __u32 width; /* width in pixels */
878 __u32 height; /* height in lines */
879 __u32 interlaced; /* Interlaced or progressive */
880 __u32 polarities; /* Positive or negative polarity */
881 __u64 pixelclock; /* Pixel clock in HZ. Ex. 74.25MHz-&gt;74250000 */
882 __u32 hfrontporch; /* Horizpontal front porch in pixels */
883 __u32 hsync; /* Horizontal Sync length in pixels */
884 __u32 hbackporch; /* Horizontal back porch in pixels */
885 __u32 vfrontporch; /* Vertical front porch in pixels */
886 __u32 vsync; /* Vertical Sync length in lines */
887 __u32 vbackporch; /* Vertical back porch in lines */
888 __u32 il_vfrontporch; /* Vertical front porch for bottom field of
889 * interlaced field formats
890 */
891 __u32 il_vsync; /* Vertical sync length for bottom field of
892 * interlaced field formats
893 */
894 __u32 il_vbackporch; /* Vertical back porch for bottom field of
895 * interlaced field formats
896 */
897 __u32 reserved[16];
898} __attribute__ ((packed));
899
900/* Interlaced or progressive format */
901#define V4L2_DV_PROGRESSIVE 0
902#define V4L2_DV_INTERLACED 1
903
904/* Polarities. If bit is not set, it is assumed to be negative polarity */
905#define V4L2_DV_VSYNC_POS_POL 0x00000001
906#define V4L2_DV_HSYNC_POS_POL 0x00000002
907
908
909/* DV timings */
910struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link> {
911 __u32 type;
912 union {
913 struct <link linkend="v4l2-bt-timings">v4l2_bt_timings</link> bt;
914 __u32 reserved[32];
915 };
916} __attribute__ ((packed));
917
918/* Values for the type field */
919#define V4L2_DV_BT_656_1120 0 /* BT.656/1120 timing type */
920
921/*
922 * V I D E O I N P U T S
923 */
924struct <link linkend="v4l2-input">v4l2_input</link> {
925 __u32 index; /* Which input */
926 __u8 name[32]; /* Label */
927 __u32 type; /* Type of input */
928 __u32 audioset; /* Associated audios (bitfield) */
929 __u32 tuner; /* Associated tuner */
930 v4l2_std_id std;
931 __u32 status;
932 __u32 capabilities;
933 __u32 reserved[3];
934};
935
936/* Values for the 'type' field */
937#define V4L2_INPUT_TYPE_TUNER 1
938#define V4L2_INPUT_TYPE_CAMERA 2
939
940/* field 'status' - general */
941#define V4L2_IN_ST_NO_POWER 0x00000001 /* Attached device is off */
942#define V4L2_IN_ST_NO_SIGNAL 0x00000002
943#define V4L2_IN_ST_NO_COLOR 0x00000004
944
945/* field 'status' - sensor orientation */
946/* If sensor is mounted upside down set both bits */
947#define V4L2_IN_ST_HFLIP 0x00000010 /* Frames are flipped horizontally */
948#define V4L2_IN_ST_VFLIP 0x00000020 /* Frames are flipped vertically */
949
950/* field 'status' - analog */
951#define V4L2_IN_ST_NO_H_LOCK 0x00000100 /* No horizontal sync lock */
952#define V4L2_IN_ST_COLOR_KILL 0x00000200 /* Color killer is active */
953
954/* field 'status' - digital */
955#define V4L2_IN_ST_NO_SYNC 0x00010000 /* No synchronization lock */
956#define V4L2_IN_ST_NO_EQU 0x00020000 /* No equalizer lock */
957#define V4L2_IN_ST_NO_CARRIER 0x00040000 /* Carrier recovery failed */
958
959/* field 'status' - VCR and set-top box */
960#define V4L2_IN_ST_MACROVISION 0x01000000 /* Macrovision detected */
961#define V4L2_IN_ST_NO_ACCESS 0x02000000 /* Conditional access denied */
962#define V4L2_IN_ST_VTR 0x04000000 /* VTR time constant */
963
964/* capabilities flags */
965#define V4L2_IN_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
966#define V4L2_IN_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
967#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
968
969/*
970 * V I D E O O U T P U T S
971 */
972struct <link linkend="v4l2-output">v4l2_output</link> {
973 __u32 index; /* Which output */
974 __u8 name[32]; /* Label */
975 __u32 type; /* Type of output */
976 __u32 audioset; /* Associated audios (bitfield) */
977 __u32 modulator; /* Associated modulator */
978 v4l2_std_id std;
979 __u32 capabilities;
980 __u32 reserved[3];
981};
982/* Values for the 'type' field */
983#define V4L2_OUTPUT_TYPE_MODULATOR 1
984#define V4L2_OUTPUT_TYPE_ANALOG 2
985#define V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY 3
986
987/* capabilities flags */
988#define V4L2_OUT_CAP_PRESETS 0x00000001 /* Supports S_DV_PRESET */
989#define V4L2_OUT_CAP_CUSTOM_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
990#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
991
992/*
993 * C O N T R O L S
994 */
995struct <link linkend="v4l2-control">v4l2_control</link> {
996 __u32 id;
997 __s32 value;
998};
999
1000struct <link linkend="v4l2-ext-control">v4l2_ext_control</link> {
1001 __u32 id;
1002 __u32 size;
1003 __u32 reserved2[1];
1004 union {
1005 __s32 value;
1006 __s64 value64;
1007 char *string;
1008 };
1009} __attribute__ ((packed));
1010
1011struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link> {
1012 __u32 ctrl_class;
1013 __u32 count;
1014 __u32 error_idx;
1015 __u32 reserved[2];
1016 struct <link linkend="v4l2-ext-control">v4l2_ext_control</link> *controls;
1017};
1018
1019/* Values for ctrl_class field */
1020#define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */
1021#define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */
1022#define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */
1023#define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */
1024
1025#define V4L2_CTRL_ID_MASK (0x0fffffff)
1026#define V4L2_CTRL_ID2CLASS(id) ((id) &amp; 0x0fff0000UL)
1027#define V4L2_CTRL_DRIVER_PRIV(id) (((id) &amp; 0xffff) &gt;= 0x1000)
1028
1029enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> {
1030 V4L2_CTRL_TYPE_INTEGER = 1,
1031 V4L2_CTRL_TYPE_BOOLEAN = 2,
1032 V4L2_CTRL_TYPE_MENU = 3,
1033 V4L2_CTRL_TYPE_BUTTON = 4,
1034 V4L2_CTRL_TYPE_INTEGER64 = 5,
1035 V4L2_CTRL_TYPE_CTRL_CLASS = 6,
1036 V4L2_CTRL_TYPE_STRING = 7,
1037};
1038
1039/* Used in the VIDIOC_QUERYCTRL ioctl for querying controls */
1040struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link> {
1041 __u32 id;
1042 enum <link linkend="v4l2-ctrl-type">v4l2_ctrl_type</link> type;
1043 __u8 name[32]; /* Whatever */
1044 __s32 minimum; /* Note signedness */
1045 __s32 maximum;
1046 __s32 step;
1047 __s32 default_value;
1048 __u32 flags;
1049 __u32 reserved[2];
1050};
1051
1052/* Used in the VIDIOC_QUERYMENU ioctl for querying menu items */
1053struct <link linkend="v4l2-querymenu">v4l2_querymenu</link> {
1054 __u32 id;
1055 __u32 index;
1056 __u8 name[32]; /* Whatever */
1057 __u32 reserved;
1058};
1059
1060/* Control flags */
1061#define V4L2_CTRL_FLAG_DISABLED 0x0001
1062#define V4L2_CTRL_FLAG_GRABBED 0x0002
1063#define V4L2_CTRL_FLAG_READ_ONLY 0x0004
1064#define V4L2_CTRL_FLAG_UPDATE 0x0008
1065#define V4L2_CTRL_FLAG_INACTIVE 0x0010
1066#define V4L2_CTRL_FLAG_SLIDER 0x0020
1067#define V4L2_CTRL_FLAG_WRITE_ONLY 0x0040
1068
1069/* Query flag, to be ORed with the control ID */
1070#define V4L2_CTRL_FLAG_NEXT_CTRL 0x80000000
1071
1072/* User-class control IDs defined by V4L2 */
1073#define V4L2_CID_BASE (V4L2_CTRL_CLASS_USER | 0x900)
1074#define V4L2_CID_USER_BASE V4L2_CID_BASE
1075/* IDs reserved for driver specific controls */
1076#define V4L2_CID_PRIVATE_BASE 0x08000000
1077
1078#define V4L2_CID_USER_CLASS (V4L2_CTRL_CLASS_USER | 1)
1079#define V4L2_CID_BRIGHTNESS (V4L2_CID_BASE+0)
1080#define V4L2_CID_CONTRAST (V4L2_CID_BASE+1)
1081#define V4L2_CID_SATURATION (V4L2_CID_BASE+2)
1082#define V4L2_CID_HUE (V4L2_CID_BASE+3)
1083#define V4L2_CID_AUDIO_VOLUME (V4L2_CID_BASE+5)
1084#define V4L2_CID_AUDIO_BALANCE (V4L2_CID_BASE+6)
1085#define V4L2_CID_AUDIO_BASS (V4L2_CID_BASE+7)
1086#define V4L2_CID_AUDIO_TREBLE (V4L2_CID_BASE+8)
1087#define V4L2_CID_AUDIO_MUTE (V4L2_CID_BASE+9)
1088#define V4L2_CID_AUDIO_LOUDNESS (V4L2_CID_BASE+10)
1089#define V4L2_CID_BLACK_LEVEL (V4L2_CID_BASE+11) /* Deprecated */
1090#define V4L2_CID_AUTO_WHITE_BALANCE (V4L2_CID_BASE+12)
1091#define V4L2_CID_DO_WHITE_BALANCE (V4L2_CID_BASE+13)
1092#define V4L2_CID_RED_BALANCE (V4L2_CID_BASE+14)
1093#define V4L2_CID_BLUE_BALANCE (V4L2_CID_BASE+15)
1094#define V4L2_CID_GAMMA (V4L2_CID_BASE+16)
1095#define V4L2_CID_WHITENESS (V4L2_CID_GAMMA) /* Deprecated */
1096#define V4L2_CID_EXPOSURE (V4L2_CID_BASE+17)
1097#define V4L2_CID_AUTOGAIN (V4L2_CID_BASE+18)
1098#define V4L2_CID_GAIN (V4L2_CID_BASE+19)
1099#define V4L2_CID_HFLIP (V4L2_CID_BASE+20)
1100#define V4L2_CID_VFLIP (V4L2_CID_BASE+21)
1101
1102/* Deprecated; use V4L2_CID_PAN_RESET and V4L2_CID_TILT_RESET */
1103#define V4L2_CID_HCENTER (V4L2_CID_BASE+22)
1104#define V4L2_CID_VCENTER (V4L2_CID_BASE+23)
1105
1106#define V4L2_CID_POWER_LINE_FREQUENCY (V4L2_CID_BASE+24)
1107enum <link linkend="v4l2-power-line-frequency">v4l2_power_line_frequency</link> {
1108 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED = 0,
1109 V4L2_CID_POWER_LINE_FREQUENCY_50HZ = 1,
1110 V4L2_CID_POWER_LINE_FREQUENCY_60HZ = 2,
1111};
1112#define V4L2_CID_HUE_AUTO (V4L2_CID_BASE+25)
1113#define V4L2_CID_WHITE_BALANCE_TEMPERATURE (V4L2_CID_BASE+26)
1114#define V4L2_CID_SHARPNESS (V4L2_CID_BASE+27)
1115#define V4L2_CID_BACKLIGHT_COMPENSATION (V4L2_CID_BASE+28)
1116#define V4L2_CID_CHROMA_AGC (V4L2_CID_BASE+29)
1117#define V4L2_CID_COLOR_KILLER (V4L2_CID_BASE+30)
1118#define V4L2_CID_COLORFX (V4L2_CID_BASE+31)
1119enum <link linkend="v4l2-colorfx">v4l2_colorfx</link> {
1120 V4L2_COLORFX_NONE = 0,
1121 V4L2_COLORFX_BW = 1,
1122 V4L2_COLORFX_SEPIA = 2,
1123 V4L2_COLORFX_NEGATIVE = 3,
1124 V4L2_COLORFX_EMBOSS = 4,
1125 V4L2_COLORFX_SKETCH = 5,
1126 V4L2_COLORFX_SKY_BLUE = 6,
1127 V4L2_COLORFX_GRASS_GREEN = 7,
1128 V4L2_COLORFX_SKIN_WHITEN = 8,
1129 V4L2_COLORFX_VIVID = 9,
1130};
1131#define V4L2_CID_AUTOBRIGHTNESS (V4L2_CID_BASE+32)
1132#define V4L2_CID_BAND_STOP_FILTER (V4L2_CID_BASE+33)
1133
1134#define V4L2_CID_ROTATE (V4L2_CID_BASE+34)
1135#define V4L2_CID_BG_COLOR (V4L2_CID_BASE+35)
1136
1137#define V4L2_CID_CHROMA_GAIN (V4L2_CID_BASE+36)
1138
1139#define V4L2_CID_ILLUMINATORS_1 (V4L2_CID_BASE+37)
1140#define V4L2_CID_ILLUMINATORS_2 (V4L2_CID_BASE+38)
1141
1142/* last CID + 1 */
1143#define V4L2_CID_LASTP1 (V4L2_CID_BASE+39)
1144
1145/* MPEG-class control IDs defined by V4L2 */
1146#define V4L2_CID_MPEG_BASE (V4L2_CTRL_CLASS_MPEG | 0x900)
1147#define V4L2_CID_MPEG_CLASS (V4L2_CTRL_CLASS_MPEG | 1)
1148
1149/* MPEG streams */
1150#define V4L2_CID_MPEG_STREAM_TYPE (V4L2_CID_MPEG_BASE+0)
1151enum <link linkend="v4l2-mpeg-stream-type">v4l2_mpeg_stream_type</link> {
1152 V4L2_MPEG_STREAM_TYPE_MPEG2_PS = 0, /* MPEG-2 program stream */
1153 V4L2_MPEG_STREAM_TYPE_MPEG2_TS = 1, /* MPEG-2 transport stream */
1154 V4L2_MPEG_STREAM_TYPE_MPEG1_SS = 2, /* MPEG-1 system stream */
1155 V4L2_MPEG_STREAM_TYPE_MPEG2_DVD = 3, /* MPEG-2 DVD-compatible stream */
1156 V4L2_MPEG_STREAM_TYPE_MPEG1_VCD = 4, /* MPEG-1 VCD-compatible stream */
1157 V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD = 5, /* MPEG-2 SVCD-compatible stream */
1158};
1159#define V4L2_CID_MPEG_STREAM_PID_PMT (V4L2_CID_MPEG_BASE+1)
1160#define V4L2_CID_MPEG_STREAM_PID_AUDIO (V4L2_CID_MPEG_BASE+2)
1161#define V4L2_CID_MPEG_STREAM_PID_VIDEO (V4L2_CID_MPEG_BASE+3)
1162#define V4L2_CID_MPEG_STREAM_PID_PCR (V4L2_CID_MPEG_BASE+4)
1163#define V4L2_CID_MPEG_STREAM_PES_ID_AUDIO (V4L2_CID_MPEG_BASE+5)
1164#define V4L2_CID_MPEG_STREAM_PES_ID_VIDEO (V4L2_CID_MPEG_BASE+6)
1165#define V4L2_CID_MPEG_STREAM_VBI_FMT (V4L2_CID_MPEG_BASE+7)
1166enum <link linkend="v4l2-mpeg-stream-vbi-fmt">v4l2_mpeg_stream_vbi_fmt</link> {
1167 V4L2_MPEG_STREAM_VBI_FMT_NONE = 0, /* No VBI in the MPEG stream */
1168 V4L2_MPEG_STREAM_VBI_FMT_IVTV = 1, /* VBI in private packets, IVTV format */
1169};
1170
1171/* MPEG audio */
1172#define V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ (V4L2_CID_MPEG_BASE+100)
1173enum <link linkend="v4l2-mpeg-audio-sampling-freq">v4l2_mpeg_audio_sampling_freq</link> {
1174 V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100 = 0,
1175 V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000 = 1,
1176 V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000 = 2,
1177};
1178#define V4L2_CID_MPEG_AUDIO_ENCODING (V4L2_CID_MPEG_BASE+101)
1179enum <link linkend="v4l2-mpeg-audio-encoding">v4l2_mpeg_audio_encoding</link> {
1180 V4L2_MPEG_AUDIO_ENCODING_LAYER_1 = 0,
1181 V4L2_MPEG_AUDIO_ENCODING_LAYER_2 = 1,
1182 V4L2_MPEG_AUDIO_ENCODING_LAYER_3 = 2,
1183 V4L2_MPEG_AUDIO_ENCODING_AAC = 3,
1184 V4L2_MPEG_AUDIO_ENCODING_AC3 = 4,
1185};
1186#define V4L2_CID_MPEG_AUDIO_L1_BITRATE (V4L2_CID_MPEG_BASE+102)
1187enum <link linkend="v4l2-mpeg-audio-l1-bitrate">v4l2_mpeg_audio_l1_bitrate</link> {
1188 V4L2_MPEG_AUDIO_L1_BITRATE_32K = 0,
1189 V4L2_MPEG_AUDIO_L1_BITRATE_64K = 1,
1190 V4L2_MPEG_AUDIO_L1_BITRATE_96K = 2,
1191 V4L2_MPEG_AUDIO_L1_BITRATE_128K = 3,
1192 V4L2_MPEG_AUDIO_L1_BITRATE_160K = 4,
1193 V4L2_MPEG_AUDIO_L1_BITRATE_192K = 5,
1194 V4L2_MPEG_AUDIO_L1_BITRATE_224K = 6,
1195 V4L2_MPEG_AUDIO_L1_BITRATE_256K = 7,
1196 V4L2_MPEG_AUDIO_L1_BITRATE_288K = 8,
1197 V4L2_MPEG_AUDIO_L1_BITRATE_320K = 9,
1198 V4L2_MPEG_AUDIO_L1_BITRATE_352K = 10,
1199 V4L2_MPEG_AUDIO_L1_BITRATE_384K = 11,
1200 V4L2_MPEG_AUDIO_L1_BITRATE_416K = 12,
1201 V4L2_MPEG_AUDIO_L1_BITRATE_448K = 13,
1202};
1203#define V4L2_CID_MPEG_AUDIO_L2_BITRATE (V4L2_CID_MPEG_BASE+103)
1204enum <link linkend="v4l2-mpeg-audio-l2-bitrate">v4l2_mpeg_audio_l2_bitrate</link> {
1205 V4L2_MPEG_AUDIO_L2_BITRATE_32K = 0,
1206 V4L2_MPEG_AUDIO_L2_BITRATE_48K = 1,
1207 V4L2_MPEG_AUDIO_L2_BITRATE_56K = 2,
1208 V4L2_MPEG_AUDIO_L2_BITRATE_64K = 3,
1209 V4L2_MPEG_AUDIO_L2_BITRATE_80K = 4,
1210 V4L2_MPEG_AUDIO_L2_BITRATE_96K = 5,
1211 V4L2_MPEG_AUDIO_L2_BITRATE_112K = 6,
1212 V4L2_MPEG_AUDIO_L2_BITRATE_128K = 7,
1213 V4L2_MPEG_AUDIO_L2_BITRATE_160K = 8,
1214 V4L2_MPEG_AUDIO_L2_BITRATE_192K = 9,
1215 V4L2_MPEG_AUDIO_L2_BITRATE_224K = 10,
1216 V4L2_MPEG_AUDIO_L2_BITRATE_256K = 11,
1217 V4L2_MPEG_AUDIO_L2_BITRATE_320K = 12,
1218 V4L2_MPEG_AUDIO_L2_BITRATE_384K = 13,
1219};
1220#define V4L2_CID_MPEG_AUDIO_L3_BITRATE (V4L2_CID_MPEG_BASE+104)
1221enum <link linkend="v4l2-mpeg-audio-l3-bitrate">v4l2_mpeg_audio_l3_bitrate</link> {
1222 V4L2_MPEG_AUDIO_L3_BITRATE_32K = 0,
1223 V4L2_MPEG_AUDIO_L3_BITRATE_40K = 1,
1224 V4L2_MPEG_AUDIO_L3_BITRATE_48K = 2,
1225 V4L2_MPEG_AUDIO_L3_BITRATE_56K = 3,
1226 V4L2_MPEG_AUDIO_L3_BITRATE_64K = 4,
1227 V4L2_MPEG_AUDIO_L3_BITRATE_80K = 5,
1228 V4L2_MPEG_AUDIO_L3_BITRATE_96K = 6,
1229 V4L2_MPEG_AUDIO_L3_BITRATE_112K = 7,
1230 V4L2_MPEG_AUDIO_L3_BITRATE_128K = 8,
1231 V4L2_MPEG_AUDIO_L3_BITRATE_160K = 9,
1232 V4L2_MPEG_AUDIO_L3_BITRATE_192K = 10,
1233 V4L2_MPEG_AUDIO_L3_BITRATE_224K = 11,
1234 V4L2_MPEG_AUDIO_L3_BITRATE_256K = 12,
1235 V4L2_MPEG_AUDIO_L3_BITRATE_320K = 13,
1236};
1237#define V4L2_CID_MPEG_AUDIO_MODE (V4L2_CID_MPEG_BASE+105)
1238enum <link linkend="v4l2-mpeg-audio-mode">v4l2_mpeg_audio_mode</link> {
1239 V4L2_MPEG_AUDIO_MODE_STEREO = 0,
1240 V4L2_MPEG_AUDIO_MODE_JOINT_STEREO = 1,
1241 V4L2_MPEG_AUDIO_MODE_DUAL = 2,
1242 V4L2_MPEG_AUDIO_MODE_MONO = 3,
1243};
1244#define V4L2_CID_MPEG_AUDIO_MODE_EXTENSION (V4L2_CID_MPEG_BASE+106)
1245enum <link linkend="v4l2-mpeg-audio-mode-extension">v4l2_mpeg_audio_mode_extension</link> {
1246 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4 = 0,
1247 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8 = 1,
1248 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12 = 2,
1249 V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16 = 3,
1250};
1251#define V4L2_CID_MPEG_AUDIO_EMPHASIS (V4L2_CID_MPEG_BASE+107)
1252enum <link linkend="v4l2-mpeg-audio-emphasis">v4l2_mpeg_audio_emphasis</link> {
1253 V4L2_MPEG_AUDIO_EMPHASIS_NONE = 0,
1254 V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS = 1,
1255 V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17 = 2,
1256};
1257#define V4L2_CID_MPEG_AUDIO_CRC (V4L2_CID_MPEG_BASE+108)
1258enum <link linkend="v4l2-mpeg-audio-crc">v4l2_mpeg_audio_crc</link> {
1259 V4L2_MPEG_AUDIO_CRC_NONE = 0,
1260 V4L2_MPEG_AUDIO_CRC_CRC16 = 1,
1261};
1262#define V4L2_CID_MPEG_AUDIO_MUTE (V4L2_CID_MPEG_BASE+109)
1263#define V4L2_CID_MPEG_AUDIO_AAC_BITRATE (V4L2_CID_MPEG_BASE+110)
1264#define V4L2_CID_MPEG_AUDIO_AC3_BITRATE (V4L2_CID_MPEG_BASE+111)
1265enum <link linkend="v4l2-mpeg-audio-ac3-bitrate">v4l2_mpeg_audio_ac3_bitrate</link> {
1266 V4L2_MPEG_AUDIO_AC3_BITRATE_32K = 0,
1267 V4L2_MPEG_AUDIO_AC3_BITRATE_40K = 1,
1268 V4L2_MPEG_AUDIO_AC3_BITRATE_48K = 2,
1269 V4L2_MPEG_AUDIO_AC3_BITRATE_56K = 3,
1270 V4L2_MPEG_AUDIO_AC3_BITRATE_64K = 4,
1271 V4L2_MPEG_AUDIO_AC3_BITRATE_80K = 5,
1272 V4L2_MPEG_AUDIO_AC3_BITRATE_96K = 6,
1273 V4L2_MPEG_AUDIO_AC3_BITRATE_112K = 7,
1274 V4L2_MPEG_AUDIO_AC3_BITRATE_128K = 8,
1275 V4L2_MPEG_AUDIO_AC3_BITRATE_160K = 9,
1276 V4L2_MPEG_AUDIO_AC3_BITRATE_192K = 10,
1277 V4L2_MPEG_AUDIO_AC3_BITRATE_224K = 11,
1278 V4L2_MPEG_AUDIO_AC3_BITRATE_256K = 12,
1279 V4L2_MPEG_AUDIO_AC3_BITRATE_320K = 13,
1280 V4L2_MPEG_AUDIO_AC3_BITRATE_384K = 14,
1281 V4L2_MPEG_AUDIO_AC3_BITRATE_448K = 15,
1282 V4L2_MPEG_AUDIO_AC3_BITRATE_512K = 16,
1283 V4L2_MPEG_AUDIO_AC3_BITRATE_576K = 17,
1284 V4L2_MPEG_AUDIO_AC3_BITRATE_640K = 18,
1285};
1286
1287/* MPEG video */
1288#define V4L2_CID_MPEG_VIDEO_ENCODING (V4L2_CID_MPEG_BASE+200)
1289enum <link linkend="v4l2-mpeg-video-encoding">v4l2_mpeg_video_encoding</link> {
1290 V4L2_MPEG_VIDEO_ENCODING_MPEG_1 = 0,
1291 V4L2_MPEG_VIDEO_ENCODING_MPEG_2 = 1,
1292 V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC = 2,
1293};
1294#define V4L2_CID_MPEG_VIDEO_ASPECT (V4L2_CID_MPEG_BASE+201)
1295enum <link linkend="v4l2-mpeg-video-aspect">v4l2_mpeg_video_aspect</link> {
1296 V4L2_MPEG_VIDEO_ASPECT_1x1 = 0,
1297 V4L2_MPEG_VIDEO_ASPECT_4x3 = 1,
1298 V4L2_MPEG_VIDEO_ASPECT_16x9 = 2,
1299 V4L2_MPEG_VIDEO_ASPECT_221x100 = 3,
1300};
1301#define V4L2_CID_MPEG_VIDEO_B_FRAMES (V4L2_CID_MPEG_BASE+202)
1302#define V4L2_CID_MPEG_VIDEO_GOP_SIZE (V4L2_CID_MPEG_BASE+203)
1303#define V4L2_CID_MPEG_VIDEO_GOP_CLOSURE (V4L2_CID_MPEG_BASE+204)
1304#define V4L2_CID_MPEG_VIDEO_PULLDOWN (V4L2_CID_MPEG_BASE+205)
1305#define V4L2_CID_MPEG_VIDEO_BITRATE_MODE (V4L2_CID_MPEG_BASE+206)
1306enum <link linkend="v4l2-mpeg-video-bitrate-mode">v4l2_mpeg_video_bitrate_mode</link> {
1307 V4L2_MPEG_VIDEO_BITRATE_MODE_VBR = 0,
1308 V4L2_MPEG_VIDEO_BITRATE_MODE_CBR = 1,
1309};
1310#define V4L2_CID_MPEG_VIDEO_BITRATE (V4L2_CID_MPEG_BASE+207)
1311#define V4L2_CID_MPEG_VIDEO_BITRATE_PEAK (V4L2_CID_MPEG_BASE+208)
1312#define V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION (V4L2_CID_MPEG_BASE+209)
1313#define V4L2_CID_MPEG_VIDEO_MUTE (V4L2_CID_MPEG_BASE+210)
1314#define V4L2_CID_MPEG_VIDEO_MUTE_YUV (V4L2_CID_MPEG_BASE+211)
1315
1316/* MPEG-class control IDs specific to the CX2341x driver as defined by V4L2 */
1317#define V4L2_CID_MPEG_CX2341X_BASE (V4L2_CTRL_CLASS_MPEG | 0x1000)
1318#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+0)
1319enum <link linkend="v4l2-mpeg-cx2341x-video-spatial-filter-mode">v4l2_mpeg_cx2341x_video_spatial_filter_mode</link> {
1320 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL = 0,
1321 V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO = 1,
1322};
1323#define V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+1)
1324#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+2)
1325enum <link linkend="luma-spatial-filter-type">v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</link> {
1326 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF = 0,
1327 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1328 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT = 2,
1329 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE = 3,
1330 V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE = 4,
1331};
1332#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+3)
1333enum <link linkend="chroma-spatial-filter-type">v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</link> {
1334 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF = 0,
1335 V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR = 1,
1336};
1337#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE (V4L2_CID_MPEG_CX2341X_BASE+4)
1338enum <link linkend="v4l2-mpeg-cx2341x-video-temporal-filter-mode">v4l2_mpeg_cx2341x_video_temporal_filter_mode</link> {
1339 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL = 0,
1340 V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO = 1,
1341};
1342#define V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER (V4L2_CID_MPEG_CX2341X_BASE+5)
1343#define V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE (V4L2_CID_MPEG_CX2341X_BASE+6)
1344enum <link linkend="v4l2-mpeg-cx2341x-video-median-filter-type">v4l2_mpeg_cx2341x_video_median_filter_type</link> {
1345 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF = 0,
1346 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR = 1,
1347 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT = 2,
1348 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT = 3,
1349 V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG = 4,
1350};
1351#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+7)
1352#define V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+8)
1353#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM (V4L2_CID_MPEG_CX2341X_BASE+9)
1354#define V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP (V4L2_CID_MPEG_CX2341X_BASE+10)
1355#define V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS (V4L2_CID_MPEG_CX2341X_BASE+11)
1356
1357/* Camera class control IDs */
1358#define V4L2_CID_CAMERA_CLASS_BASE (V4L2_CTRL_CLASS_CAMERA | 0x900)
1359#define V4L2_CID_CAMERA_CLASS (V4L2_CTRL_CLASS_CAMERA | 1)
1360
1361#define V4L2_CID_EXPOSURE_AUTO (V4L2_CID_CAMERA_CLASS_BASE+1)
1362enum <link linkend="v4l2-exposure-auto-type">v4l2_exposure_auto_type</link> {
1363 V4L2_EXPOSURE_AUTO = 0,
1364 V4L2_EXPOSURE_MANUAL = 1,
1365 V4L2_EXPOSURE_SHUTTER_PRIORITY = 2,
1366 V4L2_EXPOSURE_APERTURE_PRIORITY = 3
1367};
1368#define V4L2_CID_EXPOSURE_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+2)
1369#define V4L2_CID_EXPOSURE_AUTO_PRIORITY (V4L2_CID_CAMERA_CLASS_BASE+3)
1370
1371#define V4L2_CID_PAN_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+4)
1372#define V4L2_CID_TILT_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+5)
1373#define V4L2_CID_PAN_RESET (V4L2_CID_CAMERA_CLASS_BASE+6)
1374#define V4L2_CID_TILT_RESET (V4L2_CID_CAMERA_CLASS_BASE+7)
1375
1376#define V4L2_CID_PAN_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+8)
1377#define V4L2_CID_TILT_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+9)
1378
1379#define V4L2_CID_FOCUS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+10)
1380#define V4L2_CID_FOCUS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+11)
1381#define V4L2_CID_FOCUS_AUTO (V4L2_CID_CAMERA_CLASS_BASE+12)
1382
1383#define V4L2_CID_ZOOM_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+13)
1384#define V4L2_CID_ZOOM_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+14)
1385#define V4L2_CID_ZOOM_CONTINUOUS (V4L2_CID_CAMERA_CLASS_BASE+15)
1386
1387#define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16)
1388
1389#define V4L2_CID_IRIS_ABSOLUTE (V4L2_CID_CAMERA_CLASS_BASE+17)
1390#define V4L2_CID_IRIS_RELATIVE (V4L2_CID_CAMERA_CLASS_BASE+18)
1391
1392/* FM Modulator class control IDs */
1393#define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900)
1394#define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1)
1395
1396#define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1)
1397#define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2)
1398#define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3)
1399#define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5)
1400#define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6)
1401
1402#define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64)
1403#define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65)
1404#define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66)
1405
1406#define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80)
1407#define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81)
1408#define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82)
1409#define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83)
1410#define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84)
1411
1412#define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96)
1413#define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97)
1414#define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98)
1415
1416#define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112)
1417enum <link linkend="v4l2-preemphasis">v4l2_preemphasis</link> {
1418 V4L2_PREEMPHASIS_DISABLED = 0,
1419 V4L2_PREEMPHASIS_50_uS = 1,
1420 V4L2_PREEMPHASIS_75_uS = 2,
1421};
1422#define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113)
1423#define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114)
1424
1425/*
1426 * T U N I N G
1427 */
1428struct <link linkend="v4l2-tuner">v4l2_tuner</link> {
1429 __u32 index;
1430 __u8 name[32];
1431 enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type;
1432 __u32 capability;
1433 __u32 rangelow;
1434 __u32 rangehigh;
1435 __u32 rxsubchans;
1436 __u32 audmode;
1437 __s32 signal;
1438 __s32 afc;
1439 __u32 reserved[4];
1440};
1441
1442struct <link linkend="v4l2-modulator">v4l2_modulator</link> {
1443 __u32 index;
1444 __u8 name[32];
1445 __u32 capability;
1446 __u32 rangelow;
1447 __u32 rangehigh;
1448 __u32 txsubchans;
1449 __u32 reserved[4];
1450};
1451
1452/* Flags for the 'capability' field */
1453#define V4L2_TUNER_CAP_LOW 0x0001
1454#define V4L2_TUNER_CAP_NORM 0x0002
1455#define V4L2_TUNER_CAP_STEREO 0x0010
1456#define V4L2_TUNER_CAP_LANG2 0x0020
1457#define V4L2_TUNER_CAP_SAP 0x0020
1458#define V4L2_TUNER_CAP_LANG1 0x0040
1459#define V4L2_TUNER_CAP_RDS 0x0080
1460#define V4L2_TUNER_CAP_RDS_BLOCK_IO 0x0100
1461#define V4L2_TUNER_CAP_RDS_CONTROLS 0x0200
1462
1463/* Flags for the 'rxsubchans' field */
1464#define V4L2_TUNER_SUB_MONO 0x0001
1465#define V4L2_TUNER_SUB_STEREO 0x0002
1466#define V4L2_TUNER_SUB_LANG2 0x0004
1467#define V4L2_TUNER_SUB_SAP 0x0004
1468#define V4L2_TUNER_SUB_LANG1 0x0008
1469#define V4L2_TUNER_SUB_RDS 0x0010
1470
1471/* Values for the 'audmode' field */
1472#define V4L2_TUNER_MODE_MONO 0x0000
1473#define V4L2_TUNER_MODE_STEREO 0x0001
1474#define V4L2_TUNER_MODE_LANG2 0x0002
1475#define V4L2_TUNER_MODE_SAP 0x0002
1476#define V4L2_TUNER_MODE_LANG1 0x0003
1477#define V4L2_TUNER_MODE_LANG1_LANG2 0x0004
1478
1479struct <link linkend="v4l2-frequency">v4l2_frequency</link> {
1480 __u32 tuner;
1481 enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type;
1482 __u32 frequency;
1483 __u32 reserved[8];
1484};
1485
1486struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link> {
1487 __u32 tuner;
1488 enum <link linkend="v4l2-tuner-type">v4l2_tuner_type</link> type;
1489 __u32 seek_upward;
1490 __u32 wrap_around;
1491 __u32 spacing;
1492 __u32 reserved[7];
1493};
1494
1495/*
1496 * R D S
1497 */
1498
1499struct <link linkend="v4l2-rds-data">v4l2_rds_data</link> {
1500 __u8 lsb;
1501 __u8 msb;
1502 __u8 block;
1503} __attribute__ ((packed));
1504
1505#define V4L2_RDS_BLOCK_MSK 0x7
1506#define V4L2_RDS_BLOCK_A 0
1507#define V4L2_RDS_BLOCK_B 1
1508#define V4L2_RDS_BLOCK_C 2
1509#define V4L2_RDS_BLOCK_D 3
1510#define V4L2_RDS_BLOCK_C_ALT 4
1511#define V4L2_RDS_BLOCK_INVALID 7
1512
1513#define V4L2_RDS_BLOCK_CORRECTED 0x40
1514#define V4L2_RDS_BLOCK_ERROR 0x80
1515
1516/*
1517 * A U D I O
1518 */
1519struct <link linkend="v4l2-audio">v4l2_audio</link> {
1520 __u32 index;
1521 __u8 name[32];
1522 __u32 capability;
1523 __u32 mode;
1524 __u32 reserved[2];
1525};
1526
1527/* Flags for the 'capability' field */
1528#define V4L2_AUDCAP_STEREO 0x00001
1529#define V4L2_AUDCAP_AVL 0x00002
1530
1531/* Flags for the 'mode' field */
1532#define V4L2_AUDMODE_AVL 0x00001
1533
1534struct <link linkend="v4l2-audioout">v4l2_audioout</link> {
1535 __u32 index;
1536 __u8 name[32];
1537 __u32 capability;
1538 __u32 mode;
1539 __u32 reserved[2];
1540};
1541
1542/*
1543 * M P E G S E R V I C E S
1544 *
1545 * NOTE: EXPERIMENTAL API
1546 */
1547#if 1
1548#define V4L2_ENC_IDX_FRAME_I (0)
1549#define V4L2_ENC_IDX_FRAME_P (1)
1550#define V4L2_ENC_IDX_FRAME_B (2)
1551#define V4L2_ENC_IDX_FRAME_MASK (0xf)
1552
1553struct <link linkend="v4l2-enc-idx-entry">v4l2_enc_idx_entry</link> {
1554 __u64 offset;
1555 __u64 pts;
1556 __u32 length;
1557 __u32 flags;
1558 __u32 reserved[2];
1559};
1560
1561#define V4L2_ENC_IDX_ENTRIES (64)
1562struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link> {
1563 __u32 entries;
1564 __u32 entries_cap;
1565 __u32 reserved[4];
1566 struct <link linkend="v4l2-enc-idx-entry">v4l2_enc_idx_entry</link> entry[V4L2_ENC_IDX_ENTRIES];
1567};
1568
1569
1570#define V4L2_ENC_CMD_START (0)
1571#define V4L2_ENC_CMD_STOP (1)
1572#define V4L2_ENC_CMD_PAUSE (2)
1573#define V4L2_ENC_CMD_RESUME (3)
1574
1575/* Flags for V4L2_ENC_CMD_STOP */
1576#define V4L2_ENC_CMD_STOP_AT_GOP_END (1 &lt;&lt; 0)
1577
1578struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link> {
1579 __u32 cmd;
1580 __u32 flags;
1581 union {
1582 struct {
1583 __u32 data[8];
1584 } raw;
1585 };
1586};
1587
1588#endif
1589
1590
1591/*
1592 * D A T A S E R V I C E S ( V B I )
1593 *
1594 * Data services API by Michael Schimek
1595 */
1596
1597/* Raw VBI */
1598struct <link linkend="v4l2-vbi-format">v4l2_vbi_format</link> {
1599 __u32 sampling_rate; /* in 1 Hz */
1600 __u32 offset;
1601 __u32 samples_per_line;
1602 __u32 sample_format; /* V4L2_PIX_FMT_* */
1603 __s32 start[2];
1604 __u32 count[2];
1605 __u32 flags; /* V4L2_VBI_* */
1606 __u32 reserved[2]; /* must be zero */
1607};
1608
1609/* VBI flags */
1610#define V4L2_VBI_UNSYNC (1 &lt;&lt; 0)
1611#define V4L2_VBI_INTERLACED (1 &lt;&lt; 1)
1612
1613/* Sliced VBI
1614 *
1615 * This implements is a proposal V4L2 API to allow SLICED VBI
1616 * required for some hardware encoders. It should change without
1617 * notice in the definitive implementation.
1618 */
1619
1620struct <link linkend="v4l2-sliced-vbi-format">v4l2_sliced_vbi_format</link> {
1621 __u16 service_set;
1622 /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
1623 service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
1624 (equals frame lines 313-336 for 625 line video
1625 standards, 263-286 for 525 line standards) */
1626 __u16 service_lines[2][24];
1627 __u32 io_size;
1628 __u32 reserved[2]; /* must be zero */
1629};
1630
1631/* Teletext World System Teletext
1632 (WST), defined on ITU-R BT.653-2 */
1633#define V4L2_SLICED_TELETEXT_B (0x0001)
1634/* Video Program System, defined on ETS 300 231*/
1635#define V4L2_SLICED_VPS (0x0400)
1636/* Closed Caption, defined on EIA-608 */
1637#define V4L2_SLICED_CAPTION_525 (0x1000)
1638/* Wide Screen System, defined on ITU-R BT1119.1 */
1639#define V4L2_SLICED_WSS_625 (0x4000)
1640
1641#define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525)
1642#define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625)
1643
1644struct <link linkend="v4l2-sliced-vbi-cap">v4l2_sliced_vbi_cap</link> {
1645 __u16 service_set;
1646 /* service_lines[0][...] specifies lines 0-23 (1-23 used) of the first field
1647 service_lines[1][...] specifies lines 0-23 (1-23 used) of the second field
1648 (equals frame lines 313-336 for 625 line video
1649 standards, 263-286 for 525 line standards) */
1650 __u16 service_lines[2][24];
1651 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
1652 __u32 reserved[3]; /* must be 0 */
1653};
1654
1655struct <link linkend="v4l2-sliced-vbi-data">v4l2_sliced_vbi_data</link> {
1656 __u32 id;
1657 __u32 field; /* 0: first field, 1: second field */
1658 __u32 line; /* 1-23 */
1659 __u32 reserved; /* must be 0 */
1660 __u8 data[48];
1661};
1662
1663/*
1664 * Sliced VBI data inserted into MPEG Streams
1665 */
1666
1667/*
1668 * V4L2_MPEG_STREAM_VBI_FMT_IVTV:
1669 *
1670 * Structure of payload contained in an MPEG 2 Private Stream 1 PES Packet in an
1671 * MPEG-2 Program Pack that contains V4L2_MPEG_STREAM_VBI_FMT_IVTV Sliced VBI
1672 * data
1673 *
1674 * Note, the MPEG-2 Program Pack and Private Stream 1 PES packet header
1675 * definitions are not included here. See the MPEG-2 specifications for details
1676 * on these headers.
1677 */
1678
1679/* Line type IDs */
1680#define V4L2_MPEG_VBI_IVTV_TELETEXT_B (1)
1681#define V4L2_MPEG_VBI_IVTV_CAPTION_525 (4)
1682#define V4L2_MPEG_VBI_IVTV_WSS_625 (5)
1683#define V4L2_MPEG_VBI_IVTV_VPS (7)
1684
1685struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> {
1686 __u8 id; /* One of V4L2_MPEG_VBI_IVTV_* above */
1687 __u8 data[42]; /* Sliced VBI data for the line */
1688} __attribute__ ((packed));
1689
1690struct <link linkend="v4l2-mpeg-vbi-itv0">v4l2_mpeg_vbi_itv0</link> {
1691 __le32 linemask[2]; /* Bitmasks of VBI service lines present */
1692 struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> line[35];
1693} __attribute__ ((packed));
1694
1695struct <link linkend="v4l2-mpeg-vbi-itv0-1">v4l2_mpeg_vbi_ITV0</link> {
1696 struct <link linkend="v4l2-mpeg-vbi-itv0-line">v4l2_mpeg_vbi_itv0_line</link> line[36];
1697} __attribute__ ((packed));
1698
1699#define V4L2_MPEG_VBI_IVTV_MAGIC0 "itv0"
1700#define V4L2_MPEG_VBI_IVTV_MAGIC1 "ITV0"
1701
1702struct <link linkend="v4l2-mpeg-vbi-fmt-ivtv">v4l2_mpeg_vbi_fmt_ivtv</link> {
1703 __u8 magic[4];
1704 union {
1705 struct <link linkend="v4l2-mpeg-vbi-itv0">v4l2_mpeg_vbi_itv0</link> itv0;
1706 struct <link linkend="v4l2-mpeg-vbi-itv0-1">v4l2_mpeg_vbi_ITV0</link> ITV0;
1707 };
1708} __attribute__ ((packed));
1709
1710/*
1711 * A G G R E G A T E S T R U C T U R E S
1712 */
1713
1714/**
1715 * struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> - additional, per-plane format definition
1716 * @sizeimage: maximum size in bytes required for data, for which
1717 * this plane will be used
1718 * @bytesperline: distance in bytes between the leftmost pixels in two
1719 * adjacent lines
1720 */
1721struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> {
1722 __u32 sizeimage;
1723 __u16 bytesperline;
1724 __u16 reserved[7];
1725} __attribute__ ((packed));
1726
1727/**
1728 * struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> - multiplanar format definition
1729 * @width: image width in pixels
1730 * @height: image height in pixels
1731 * @pixelformat: little endian four character code (fourcc)
1732 * @field: field order (for interlaced video)
1733 * @colorspace: supplemental to pixelformat
1734 * @plane_fmt: per-plane information
1735 * @num_planes: number of planes for this format
1736 */
1737struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> {
1738 __u32 width;
1739 __u32 height;
1740 __u32 pixelformat;
1741 enum <link linkend="v4l2-field">v4l2_field</link> field;
1742 enum <link linkend="v4l2-colorspace">v4l2_colorspace</link> colorspace;
1743
1744 struct <link linkend="v4l2-plane-pix-format">v4l2_plane_pix_format</link> plane_fmt[VIDEO_MAX_PLANES];
1745 __u8 num_planes;
1746 __u8 reserved[11];
1747} __attribute__ ((packed));
1748
1749/**
1750 * struct <link linkend="v4l2-format">v4l2_format</link> - stream data format
1751 * @type: type of the data stream
1752 * @pix: definition of an image format
1753 * @pix_mp: definition of a multiplanar image format
1754 * @win: definition of an overlaid image
1755 * @vbi: raw VBI capture or output parameters
1756 * @sliced: sliced VBI capture or output parameters
1757 * @raw_data: placeholder for future extensions and custom formats
1758 */
1759struct <link linkend="v4l2-format">v4l2_format</link> {
1760 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
1761 union {
1762 struct <link linkend="v4l2-pix-format">v4l2_pix_format</link> pix; /* V4L2_BUF_TYPE_VIDEO_CAPTURE */
1763 struct <link linkend="v4l2-pix-format-mplane">v4l2_pix_format_mplane</link> pix_mp; /* V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE */
1764 struct <link linkend="v4l2-window">v4l2_window</link> win; /* V4L2_BUF_TYPE_VIDEO_OVERLAY */
1765 struct <link linkend="v4l2-vbi-format">v4l2_vbi_format</link> vbi; /* V4L2_BUF_TYPE_VBI_CAPTURE */
1766 struct <link linkend="v4l2-sliced-vbi-format">v4l2_sliced_vbi_format</link> sliced; /* V4L2_BUF_TYPE_SLICED_VBI_CAPTURE */
1767 __u8 raw_data[200]; /* user-defined */
1768 } fmt;
1769};
1770
1771/* Stream type-dependent parameters
1772 */
1773struct <link linkend="v4l2-streamparm">v4l2_streamparm</link> {
1774 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
1775 union {
1776 struct <link linkend="v4l2-captureparm">v4l2_captureparm</link> capture;
1777 struct <link linkend="v4l2-outputparm">v4l2_outputparm</link> output;
1778 __u8 raw_data[200]; /* user-defined */
1779 } parm;
1780};
1781
1782/*
1783 * E V E N T S
1784 */
1785
1786#define V4L2_EVENT_ALL 0
1787#define V4L2_EVENT_VSYNC 1
1788#define V4L2_EVENT_EOS 2
1789#define V4L2_EVENT_PRIVATE_START 0x08000000
1790
1791/* Payload for V4L2_EVENT_VSYNC */
1792struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> {
1793 /* Can be V4L2_FIELD_ANY, _NONE, _TOP or _BOTTOM */
1794 __u8 field;
1795} __attribute__ ((packed));
1796
1797struct <link linkend="v4l2-event">v4l2_event</link> {
1798 __u32 type;
1799 union {
1800 struct <link linkend="v4l2-event-vsync">v4l2_event_vsync</link> vsync;
1801 __u8 data[64];
1802 } u;
1803 __u32 pending;
1804 __u32 sequence;
1805 struct timespec timestamp;
1806 __u32 reserved[9];
1807};
1808
1809struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link> {
1810 __u32 type;
1811 __u32 reserved[7];
1812};
1813
1814/*
1815 * A D V A N C E D D E B U G G I N G
1816 *
1817 * NOTE: EXPERIMENTAL API, NEVER RELY ON THIS IN APPLICATIONS!
1818 * FOR DEBUGGING, TESTING AND INTERNAL USE ONLY!
1819 */
1820
1821/* VIDIOC_DBG_G_REGISTER and VIDIOC_DBG_S_REGISTER */
1822
1823#define V4L2_CHIP_MATCH_HOST 0 /* Match against chip ID on host (0 for the host) */
1824#define V4L2_CHIP_MATCH_I2C_DRIVER 1 /* Match against I2C driver name */
1825#define V4L2_CHIP_MATCH_I2C_ADDR 2 /* Match against I2C 7-bit address */
1826#define V4L2_CHIP_MATCH_AC97 3 /* Match against anciliary AC97 chip */
1827
1828struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> {
1829 __u32 type; /* Match type */
1830 union { /* Match this chip, meaning determined by type */
1831 __u32 addr;
1832 char name[32];
1833 };
1834} __attribute__ ((packed));
1835
1836struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link> {
1837 struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> match;
1838 __u32 size; /* register size in bytes */
1839 __u64 reg;
1840 __u64 val;
1841} __attribute__ ((packed));
1842
1843/* VIDIOC_DBG_G_CHIP_IDENT */
1844struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link> {
1845 struct <link linkend="v4l2-dbg-match">v4l2_dbg_match</link> match;
1846 __u32 ident; /* chip identifier as specified in &lt;media/v4l2-chip-ident.h&gt; */
1847 __u32 revision; /* chip revision, chip specific */
1848} __attribute__ ((packed));
1849
1850/*
1851 * I O C T L C O D E S F O R V I D E O D E V I C E S
1852 *
1853 */
1854#define VIDIOC_QUERYCAP _IOR('V', 0, struct <link linkend="v4l2-capability">v4l2_capability</link>)
1855#define VIDIOC_RESERVED _IO('V', 1)
1856#define VIDIOC_ENUM_FMT _IOWR('V', 2, struct <link linkend="v4l2-fmtdesc">v4l2_fmtdesc</link>)
1857#define VIDIOC_G_FMT _IOWR('V', 4, struct <link linkend="v4l2-format">v4l2_format</link>)
1858#define VIDIOC_S_FMT _IOWR('V', 5, struct <link linkend="v4l2-format">v4l2_format</link>)
1859#define VIDIOC_REQBUFS _IOWR('V', 8, struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link>)
1860#define VIDIOC_QUERYBUF _IOWR('V', 9, struct <link linkend="v4l2-buffer">v4l2_buffer</link>)
1861#define VIDIOC_G_FBUF _IOR('V', 10, struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link>)
1862#define VIDIOC_S_FBUF _IOW('V', 11, struct <link linkend="v4l2-framebuffer">v4l2_framebuffer</link>)
1863#define VIDIOC_OVERLAY _IOW('V', 14, int)
1864#define VIDIOC_QBUF _IOWR('V', 15, struct <link linkend="v4l2-buffer">v4l2_buffer</link>)
1865#define VIDIOC_DQBUF _IOWR('V', 17, struct <link linkend="v4l2-buffer">v4l2_buffer</link>)
1866#define VIDIOC_STREAMON _IOW('V', 18, int)
1867#define VIDIOC_STREAMOFF _IOW('V', 19, int)
1868#define VIDIOC_G_PARM _IOWR('V', 21, struct <link linkend="v4l2-streamparm">v4l2_streamparm</link>)
1869#define VIDIOC_S_PARM _IOWR('V', 22, struct <link linkend="v4l2-streamparm">v4l2_streamparm</link>)
1870#define VIDIOC_G_STD _IOR('V', 23, v4l2_std_id)
1871#define VIDIOC_S_STD _IOW('V', 24, v4l2_std_id)
1872#define VIDIOC_ENUMSTD _IOWR('V', 25, struct <link linkend="v4l2-standard">v4l2_standard</link>)
1873#define VIDIOC_ENUMINPUT _IOWR('V', 26, struct <link linkend="v4l2-input">v4l2_input</link>)
1874#define VIDIOC_G_CTRL _IOWR('V', 27, struct <link linkend="v4l2-control">v4l2_control</link>)
1875#define VIDIOC_S_CTRL _IOWR('V', 28, struct <link linkend="v4l2-control">v4l2_control</link>)
1876#define VIDIOC_G_TUNER _IOWR('V', 29, struct <link linkend="v4l2-tuner">v4l2_tuner</link>)
1877#define VIDIOC_S_TUNER _IOW('V', 30, struct <link linkend="v4l2-tuner">v4l2_tuner</link>)
1878#define VIDIOC_G_AUDIO _IOR('V', 33, struct <link linkend="v4l2-audio">v4l2_audio</link>)
1879#define VIDIOC_S_AUDIO _IOW('V', 34, struct <link linkend="v4l2-audio">v4l2_audio</link>)
1880#define VIDIOC_QUERYCTRL _IOWR('V', 36, struct <link linkend="v4l2-queryctrl">v4l2_queryctrl</link>)
1881#define VIDIOC_QUERYMENU _IOWR('V', 37, struct <link linkend="v4l2-querymenu">v4l2_querymenu</link>)
1882#define VIDIOC_G_INPUT _IOR('V', 38, int)
1883#define VIDIOC_S_INPUT _IOWR('V', 39, int)
1884#define VIDIOC_G_OUTPUT _IOR('V', 46, int)
1885#define VIDIOC_S_OUTPUT _IOWR('V', 47, int)
1886#define VIDIOC_ENUMOUTPUT _IOWR('V', 48, struct <link linkend="v4l2-output">v4l2_output</link>)
1887#define VIDIOC_G_AUDOUT _IOR('V', 49, struct <link linkend="v4l2-audioout">v4l2_audioout</link>)
1888#define VIDIOC_S_AUDOUT _IOW('V', 50, struct <link linkend="v4l2-audioout">v4l2_audioout</link>)
1889#define VIDIOC_G_MODULATOR _IOWR('V', 54, struct <link linkend="v4l2-modulator">v4l2_modulator</link>)
1890#define VIDIOC_S_MODULATOR _IOW('V', 55, struct <link linkend="v4l2-modulator">v4l2_modulator</link>)
1891#define VIDIOC_G_FREQUENCY _IOWR('V', 56, struct <link linkend="v4l2-frequency">v4l2_frequency</link>)
1892#define VIDIOC_S_FREQUENCY _IOW('V', 57, struct <link linkend="v4l2-frequency">v4l2_frequency</link>)
1893#define VIDIOC_CROPCAP _IOWR('V', 58, struct <link linkend="v4l2-cropcap">v4l2_cropcap</link>)
1894#define VIDIOC_G_CROP _IOWR('V', 59, struct <link linkend="v4l2-crop">v4l2_crop</link>)
1895#define VIDIOC_S_CROP _IOW('V', 60, struct <link linkend="v4l2-crop">v4l2_crop</link>)
1896#define VIDIOC_G_JPEGCOMP _IOR('V', 61, struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link>)
1897#define VIDIOC_S_JPEGCOMP _IOW('V', 62, struct <link linkend="v4l2-jpegcompression">v4l2_jpegcompression</link>)
1898#define VIDIOC_QUERYSTD _IOR('V', 63, v4l2_std_id)
1899#define VIDIOC_TRY_FMT _IOWR('V', 64, struct <link linkend="v4l2-format">v4l2_format</link>)
1900#define VIDIOC_ENUMAUDIO _IOWR('V', 65, struct <link linkend="v4l2-audio">v4l2_audio</link>)
1901#define VIDIOC_ENUMAUDOUT _IOWR('V', 66, struct <link linkend="v4l2-audioout">v4l2_audioout</link>)
1902#define VIDIOC_G_PRIORITY _IOR('V', 67, enum <link linkend="v4l2-priority">v4l2_priority</link>)
1903#define VIDIOC_S_PRIORITY _IOW('V', 68, enum <link linkend="v4l2-priority">v4l2_priority</link>)
1904#define VIDIOC_G_SLICED_VBI_CAP _IOWR('V', 69, struct <link linkend="v4l2-sliced-vbi-cap">v4l2_sliced_vbi_cap</link>)
1905#define VIDIOC_LOG_STATUS _IO('V', 70)
1906#define VIDIOC_G_EXT_CTRLS _IOWR('V', 71, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>)
1907#define VIDIOC_S_EXT_CTRLS _IOWR('V', 72, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>)
1908#define VIDIOC_TRY_EXT_CTRLS _IOWR('V', 73, struct <link linkend="v4l2-ext-controls">v4l2_ext_controls</link>)
1909#if 1
1910#define VIDIOC_ENUM_FRAMESIZES _IOWR('V', 74, struct <link linkend="v4l2-frmsizeenum">v4l2_frmsizeenum</link>)
1911#define VIDIOC_ENUM_FRAMEINTERVALS _IOWR('V', 75, struct <link linkend="v4l2-frmivalenum">v4l2_frmivalenum</link>)
1912#define VIDIOC_G_ENC_INDEX _IOR('V', 76, struct <link linkend="v4l2-enc-idx">v4l2_enc_idx</link>)
1913#define VIDIOC_ENCODER_CMD _IOWR('V', 77, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>)
1914#define VIDIOC_TRY_ENCODER_CMD _IOWR('V', 78, struct <link linkend="v4l2-encoder-cmd">v4l2_encoder_cmd</link>)
1915#endif
1916
1917#if 1
1918/* Experimental, meant for debugging, testing and internal use.
1919 Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.
1920 You must be root to use these ioctls. Never use these in applications! */
1921#define VIDIOC_DBG_S_REGISTER _IOW('V', 79, struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link>)
1922#define VIDIOC_DBG_G_REGISTER _IOWR('V', 80, struct <link linkend="v4l2-dbg-register">v4l2_dbg_register</link>)
1923
1924/* Experimental, meant for debugging, testing and internal use.
1925 Never use this ioctl in applications! */
1926#define VIDIOC_DBG_G_CHIP_IDENT _IOWR('V', 81, struct <link linkend="v4l2-dbg-chip-ident">v4l2_dbg_chip_ident</link>)
1927#endif
1928
1929#define VIDIOC_S_HW_FREQ_SEEK _IOW('V', 82, struct <link linkend="v4l2-hw-freq-seek">v4l2_hw_freq_seek</link>)
1930#define VIDIOC_ENUM_DV_PRESETS _IOWR('V', 83, struct <link linkend="v4l2-dv-enum-preset">v4l2_dv_enum_preset</link>)
1931#define VIDIOC_S_DV_PRESET _IOWR('V', 84, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>)
1932#define VIDIOC_G_DV_PRESET _IOWR('V', 85, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>)
1933#define VIDIOC_QUERY_DV_PRESET _IOR('V', 86, struct <link linkend="v4l2-dv-preset">v4l2_dv_preset</link>)
1934#define VIDIOC_S_DV_TIMINGS _IOWR('V', 87, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>)
1935#define VIDIOC_G_DV_TIMINGS _IOWR('V', 88, struct <link linkend="v4l2-dv-timings">v4l2_dv_timings</link>)
1936#define VIDIOC_DQEVENT _IOR('V', 89, struct <link linkend="v4l2-event">v4l2_event</link>)
1937#define VIDIOC_SUBSCRIBE_EVENT _IOW('V', 90, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>)
1938#define VIDIOC_UNSUBSCRIBE_EVENT _IOW('V', 91, struct <link linkend="v4l2-event-subscription">v4l2_event_subscription</link>)
1939
1940/* Reminder: when adding new ioctls please add support for them to
1941 drivers/media/video/v4l2-compat-ioctl32.c as well! */
1942
1943#define BASE_VIDIOC_PRIVATE 192 /* 192-255 are private */
1944
1945#endif /* __LINUX_VIDEODEV2_H */
1946</programlisting>
diff --git a/Documentation/DocBook/v4l/vidioc-dqevent.xml b/Documentation/DocBook/v4l/vidioc-dqevent.xml
deleted file mode 100644
index 4e0a7cc3081..00000000000
--- a/Documentation/DocBook/v4l/vidioc-dqevent.xml
+++ /dev/null
@@ -1,131 +0,0 @@
1<refentry id="vidioc-dqevent">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DQEVENT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DQEVENT</refname>
9 <refpurpose>Dequeue event</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_event
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_DQEVENT</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>Dequeue an event from a video device. No input is required
53 for this ioctl. All the fields of the &v4l2-event; structure are
54 filled by the driver. The file handle will also receive exceptions
55 which the application may get by e.g. using the select system
56 call.</para>
57
58 <table frame="none" pgwide="1" id="v4l2-event">
59 <title>struct <structname>v4l2_event</structname></title>
60 <tgroup cols="4">
61 &cs-str;
62 <tbody valign="top">
63 <row>
64 <entry>__u32</entry>
65 <entry><structfield>type</structfield></entry>
66 <entry></entry>
67 <entry>Type of the event.</entry>
68 </row>
69 <row>
70 <entry>union</entry>
71 <entry><structfield>u</structfield></entry>
72 <entry></entry>
73 <entry></entry>
74 </row>
75 <row>
76 <entry></entry>
77 <entry>&v4l2-event-vsync;</entry>
78 <entry><structfield>vsync</structfield></entry>
79 <entry>Event data for event V4L2_EVENT_VSYNC.
80 </entry>
81 </row>
82 <row>
83 <entry></entry>
84 <entry>__u8</entry>
85 <entry><structfield>data</structfield>[64]</entry>
86 <entry>Event data. Defined by the event type. The union
87 should be used to define easily accessible type for
88 events.</entry>
89 </row>
90 <row>
91 <entry>__u32</entry>
92 <entry><structfield>pending</structfield></entry>
93 <entry></entry>
94 <entry>Number of pending events excluding this one.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>sequence</structfield></entry>
99 <entry></entry>
100 <entry>Event sequence number. The sequence number is
101 incremented for every subscribed event that takes place.
102 If sequence numbers are not contiguous it means that
103 events have been lost.
104 </entry>
105 </row>
106 <row>
107 <entry>struct timespec</entry>
108 <entry><structfield>timestamp</structfield></entry>
109 <entry></entry>
110 <entry>Event timestamp.</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>reserved</structfield>[9]</entry>
115 <entry></entry>
116 <entry>Reserved for future extensions. Drivers must set
117 the array to zero.</entry>
118 </row>
119 </tbody>
120 </tgroup>
121 </table>
122
123 </refsect1>
124</refentry>
125<!--
126Local Variables:
127mode: sgml
128sgml-parent-document: "v4l2.sgml"
129indent-tabs-mode: nil
130End:
131-->
diff --git a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml
deleted file mode 100644
index c30dcc4232c..00000000000
--- a/Documentation/DocBook/v4l/vidioc-s-hw-freq-seek.xml
+++ /dev/null
@@ -1,135 +0,0 @@
1<refentry id="vidioc-s-hw-freq-seek">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_S_HW_FREQ_SEEK</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_S_HW_FREQ_SEEK</refname>
9 <refpurpose>Perform a hardware frequency seek</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_hw_freq_seek
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_S_HW_FREQ_SEEK</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>Start a hardware frequency seek from the current frequency.
53To do this applications initialize the <structfield>tuner</structfield>,
54<structfield>type</structfield>, <structfield>seek_upward</structfield>,
55<structfield>spacing</structfield> and
56<structfield>wrap_around</structfield> fields, and zero out the
57<structfield>reserved</structfield> array of a &v4l2-hw-freq-seek; and
58call the <constant>VIDIOC_S_HW_FREQ_SEEK</constant> ioctl with a pointer
59to this structure.</para>
60
61 <para>This ioctl is supported if the <constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability is set.</para>
62
63 <table pgwide="1" frame="none" id="v4l2-hw-freq-seek">
64 <title>struct <structname>v4l2_hw_freq_seek</structname></title>
65 <tgroup cols="3">
66 &cs-str;
67 <tbody valign="top">
68 <row>
69 <entry>__u32</entry>
70 <entry><structfield>tuner</structfield></entry>
71 <entry>The tuner index number. This is the
72same value as in the &v4l2-input; <structfield>tuner</structfield>
73field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
74 </row>
75 <row>
76 <entry>&v4l2-tuner-type;</entry>
77 <entry><structfield>type</structfield></entry>
78 <entry>The tuner type. This is the same value as in the
79&v4l2-tuner; <structfield>type</structfield> field.</entry>
80 </row>
81 <row>
82 <entry>__u32</entry>
83 <entry><structfield>seek_upward</structfield></entry>
84 <entry>If non-zero, seek upward from the current frequency, else seek downward.</entry>
85 </row>
86 <row>
87 <entry>__u32</entry>
88 <entry><structfield>wrap_around</structfield></entry>
89 <entry>If non-zero, wrap around when at the end of the frequency range, else stop seeking.</entry>
90 </row>
91 <row>
92 <entry>__u32</entry>
93 <entry><structfield>spacing</structfield></entry>
94 <entry>If non-zero, defines the hardware seek resolution in Hz. The driver selects the nearest value that is supported by the device. If spacing is zero a reasonable default value is used.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>reserved</structfield>[7]</entry>
99 <entry>Reserved for future extensions. Drivers and
100 applications must set the array to zero.</entry>
101 </row>
102 </tbody>
103 </tgroup>
104 </table>
105 </refsect1>
106
107 <refsect1>
108 &return-value;
109
110 <variablelist>
111 <varlistentry>
112 <term><errorcode>EINVAL</errorcode></term>
113 <listitem>
114 <para>The <structfield>tuner</structfield> index is out of
115bounds or the value in the <structfield>type</structfield> field is
116wrong.</para>
117 </listitem>
118 </varlistentry>
119 <varlistentry>
120 <term><errorcode>EAGAIN</errorcode></term>
121 <listitem>
122 <para>The ioctl timed-out. Try again.</para>
123 </listitem>
124 </varlistentry>
125 </variablelist>
126 </refsect1>
127</refentry>
128
129<!--
130Local Variables:
131mode: sgml
132sgml-parent-document: "v4l2.sgml"
133indent-tabs-mode: nil
134End:
135-->
diff --git a/Documentation/DocBook/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/v4l/vidioc-subscribe-event.xml
deleted file mode 100644
index 8b501791aa6..00000000000
--- a/Documentation/DocBook/v4l/vidioc-subscribe-event.xml
+++ /dev/null
@@ -1,133 +0,0 @@
1<refentry id="vidioc-subscribe-event">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</refname>
9 <refpurpose>Subscribe or unsubscribe event</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_event_subscription
19*<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>Subscribe or unsubscribe V4L2 event. Subscribed events are
53 dequeued by using the &VIDIOC-DQEVENT; ioctl.</para>
54
55 <table frame="none" pgwide="1" id="v4l2-event-subscription">
56 <title>struct <structname>v4l2_event_subscription</structname></title>
57 <tgroup cols="3">
58 &cs-str;
59 <tbody valign="top">
60 <row>
61 <entry>__u32</entry>
62 <entry><structfield>type</structfield></entry>
63 <entry>Type of the event.</entry>
64 </row>
65 <row>
66 <entry>__u32</entry>
67 <entry><structfield>reserved</structfield>[7]</entry>
68 <entry>Reserved for future extensions. Drivers and applications
69 must set the array to zero.</entry>
70 </row>
71 </tbody>
72 </tgroup>
73 </table>
74
75 <table frame="none" pgwide="1" id="event-type">
76 <title>Event Types</title>
77 <tgroup cols="3">
78 &cs-def;
79 <tbody valign="top">
80 <row>
81 <entry><constant>V4L2_EVENT_ALL</constant></entry>
82 <entry>0</entry>
83 <entry>All events. V4L2_EVENT_ALL is valid only for
84 VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
85 </entry>
86 </row>
87 <row>
88 <entry><constant>V4L2_EVENT_VSYNC</constant></entry>
89 <entry>1</entry>
90 <entry>This event is triggered on the vertical sync.
91 This event has &v4l2-event-vsync; associated with it.
92 </entry>
93 </row>
94 <row>
95 <entry><constant>V4L2_EVENT_EOS</constant></entry>
96 <entry>2</entry>
97 <entry>This event is triggered when the end of a stream is reached.
98 This is typically used with MPEG decoders to report to the application
99 when the last of the MPEG stream has been decoded.
100 </entry>
101 </row>
102 <row>
103 <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry>
104 <entry>0x08000000</entry>
105 <entry>Base event number for driver-private events.</entry>
106 </row>
107 </tbody>
108 </tgroup>
109 </table>
110
111 <table frame="none" pgwide="1" id="v4l2-event-vsync">
112 <title>struct <structname>v4l2_event_vsync</structname></title>
113 <tgroup cols="3">
114 &cs-str;
115 <tbody valign="top">
116 <row>
117 <entry>__u8</entry>
118 <entry><structfield>field</structfield></entry>
119 <entry>The upcoming field. See &v4l2-field;.</entry>
120 </row>
121 </tbody>
122 </tgroup>
123 </table>
124
125 </refsect1>
126</refentry>
127<!--
128Local Variables:
129mode: sgml
130sgml-parent-document: "v4l2.sgml"
131indent-tabs-mode: nil
132End:
133-->
diff --git a/Documentation/DocBook/writing-an-alsa-driver.tmpl b/Documentation/DocBook/writing-an-alsa-driver.tmpl
index 58ced2346e6..598c22f3b3a 100644
--- a/Documentation/DocBook/writing-an-alsa-driver.tmpl
+++ b/Documentation/DocBook/writing-an-alsa-driver.tmpl
@@ -1164,7 +1164,7 @@
1164 } 1164 }
1165 chip->port = pci_resource_start(pci, 0); 1165 chip->port = pci_resource_start(pci, 0);
1166 if (request_irq(pci->irq, snd_mychip_interrupt, 1166 if (request_irq(pci->irq, snd_mychip_interrupt,
1167 IRQF_SHARED, "My Chip", chip)) { 1167 IRQF_SHARED, KBUILD_MODNAME, chip)) {
1168 printk(KERN_ERR "cannot grab irq %d\n", pci->irq); 1168 printk(KERN_ERR "cannot grab irq %d\n", pci->irq);
1169 snd_mychip_free(chip); 1169 snd_mychip_free(chip);
1170 return -EBUSY; 1170 return -EBUSY;
@@ -1197,7 +1197,7 @@
1197 1197
1198 /* pci_driver definition */ 1198 /* pci_driver definition */
1199 static struct pci_driver driver = { 1199 static struct pci_driver driver = {
1200 .name = "My Own Chip", 1200 .name = KBUILD_MODNAME,
1201 .id_table = snd_mychip_ids, 1201 .id_table = snd_mychip_ids,
1202 .probe = snd_mychip_probe, 1202 .probe = snd_mychip_probe,
1203 .remove = __devexit_p(snd_mychip_remove), 1203 .remove = __devexit_p(snd_mychip_remove),
@@ -1340,7 +1340,7 @@
1340 <programlisting> 1340 <programlisting>
1341<![CDATA[ 1341<![CDATA[
1342 if (request_irq(pci->irq, snd_mychip_interrupt, 1342 if (request_irq(pci->irq, snd_mychip_interrupt,
1343 IRQF_SHARED, "My Chip", chip)) { 1343 IRQF_SHARED, KBUILD_MODNAME, chip)) {
1344 printk(KERN_ERR "cannot grab irq %d\n", pci->irq); 1344 printk(KERN_ERR "cannot grab irq %d\n", pci->irq);
1345 snd_mychip_free(chip); 1345 snd_mychip_free(chip);
1346 return -EBUSY; 1346 return -EBUSY;
@@ -1616,7 +1616,7 @@
1616 <programlisting> 1616 <programlisting>
1617<![CDATA[ 1617<![CDATA[
1618 static struct pci_driver driver = { 1618 static struct pci_driver driver = {
1619 .name = "My Own Chip", 1619 .name = KBUILD_MODNAME,
1620 .id_table = snd_mychip_ids, 1620 .id_table = snd_mychip_ids,
1621 .probe = snd_mychip_probe, 1621 .probe = snd_mychip_probe,
1622 .remove = __devexit_p(snd_mychip_remove), 1622 .remove = __devexit_p(snd_mychip_remove),
@@ -5816,7 +5816,7 @@ struct _snd_pcm_runtime {
5816 <programlisting> 5816 <programlisting>
5817<![CDATA[ 5817<![CDATA[
5818 static struct pci_driver driver = { 5818 static struct pci_driver driver = {
5819 .name = "My Chip", 5819 .name = KBUILD_MODNAME,
5820 .id_table = snd_my_ids, 5820 .id_table = snd_my_ids,
5821 .probe = snd_my_probe, 5821 .probe = snd_my_probe,
5822 .remove = __devexit_p(snd_my_remove), 5822 .remove = __devexit_p(snd_my_remove),