aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-08-04 09:59:37 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2016-08-04 09:59:37 -0400
commitc1ece76719205690f4b448460d9b85c130e8021b (patch)
tree01072c593d53ef551788228ea28ce8bc87bc0e45
parentfb1b83d3ff78168e10799627f231cf0c05c9d80d (diff)
parent292eaf50c7df4ae2ae8aaa9e1ce3f1240a353ee8 (diff)
Merge tag 'media/v4.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media DocBook removal and some fixups from Mauro Carvalho Chehab: - removal of the media DocBook (since it's all in Sphinx now) - videobuf2: Fix an allocation regression - a few fixes related to the CEC drivers * tag 'media/v4.8-5' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: [media] cec: fix off-by-one memset [media] staging: add MEDIA_SUPPORT dependency [media] vivid: don't handle CEC_MSG_SET_STREAM_PATH [media] media: adv7180: Fix broken interrupt register access [media] vb2: Fix allocation size of dma_parms [media] vim2m: copy the other colorspace-related fields as well [media] adv7511: fix VIC autodetect doc-rst: Remove the media docbook
-rw-r--r--Documentation/DocBook/Makefile10
-rw-r--r--Documentation/DocBook/media/.gitignore1
-rw-r--r--Documentation/DocBook/media/Makefile427
-rw-r--r--Documentation/DocBook/media/bayer.png.b64171
-rw-r--r--Documentation/DocBook/media/constraints.png.b6459
-rw-r--r--Documentation/DocBook/media/crop.gif.b64105
-rw-r--r--Documentation/DocBook/media/dvb/.gitignore1
-rw-r--r--Documentation/DocBook/media/dvb/audio.xml1314
-rw-r--r--Documentation/DocBook/media/dvb/ca.xml582
-rw-r--r--Documentation/DocBook/media/dvb/demux.xml1162
-rw-r--r--Documentation/DocBook/media/dvb/dvbapi.xml156
-rw-r--r--Documentation/DocBook/media/dvb/dvbproperty.xml1680
-rw-r--r--Documentation/DocBook/media/dvb/dvbstb.pdfbin1881 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/dvb/examples.xml367
-rw-r--r--Documentation/DocBook/media/dvb/fe-diseqc-recv-slave-reply.xml78
-rw-r--r--Documentation/DocBook/media/dvb/fe-diseqc-reset-overload.xml51
-rw-r--r--Documentation/DocBook/media/dvb/fe-diseqc-send-burst.xml89
-rw-r--r--Documentation/DocBook/media/dvb/fe-diseqc-send-master-cmd.xml72
-rw-r--r--Documentation/DocBook/media/dvb/fe-enable-high-lnb-voltage.xml61
-rw-r--r--Documentation/DocBook/media/dvb/fe-get-info.xml266
-rw-r--r--Documentation/DocBook/media/dvb/fe-get-property.xml81
-rw-r--r--Documentation/DocBook/media/dvb/fe-read-status.xml107
-rw-r--r--Documentation/DocBook/media/dvb/fe-set-frontend-tune-mode.xml64
-rw-r--r--Documentation/DocBook/media/dvb/fe-set-tone.xml91
-rw-r--r--Documentation/DocBook/media/dvb/fe-set-voltage.xml69
-rw-r--r--Documentation/DocBook/media/dvb/frontend.xml269
-rw-r--r--Documentation/DocBook/media/dvb/frontend_legacy_api.xml654
-rw-r--r--Documentation/DocBook/media/dvb/intro.xml211
-rw-r--r--Documentation/DocBook/media/dvb/net.xml238
-rw-r--r--Documentation/DocBook/media/dvb/video.xml1968
-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/selection.png.b64206
-rw-r--r--Documentation/DocBook/media/typical_media_device.svg28
-rw-r--r--Documentation/DocBook/media/v4l/.gitignore1
-rw-r--r--Documentation/DocBook/media/v4l/biblio.xml381
-rw-r--r--Documentation/DocBook/media/v4l/capture.c.xml659
-rw-r--r--Documentation/DocBook/media/v4l/cec-api.xml75
-rw-r--r--Documentation/DocBook/media/v4l/cec-func-close.xml64
-rw-r--r--Documentation/DocBook/media/v4l/cec-func-ioctl.xml78
-rw-r--r--Documentation/DocBook/media/v4l/cec-func-open.xml104
-rw-r--r--Documentation/DocBook/media/v4l/cec-func-poll.xml94
-rw-r--r--Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml151
-rw-r--r--Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml329
-rw-r--r--Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml86
-rw-r--r--Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml202
-rw-r--r--Documentation/DocBook/media/v4l/cec-ioc-g-mode.xml255
-rw-r--r--Documentation/DocBook/media/v4l/cec-ioc-receive.xml274
-rw-r--r--Documentation/DocBook/media/v4l/common.xml1102
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml2723
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml5505
-rw-r--r--Documentation/DocBook/media/v4l/crop.pdfbin5846 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/dev-capture.xml110
-rw-r--r--Documentation/DocBook/media/v4l/dev-codec.xml27
-rw-r--r--Documentation/DocBook/media/v4l/dev-effect.xml17
-rw-r--r--Documentation/DocBook/media/v4l/dev-event.xml43
-rw-r--r--Documentation/DocBook/media/v4l/dev-osd.xml149
-rw-r--r--Documentation/DocBook/media/v4l/dev-output.xml106
-rw-r--r--Documentation/DocBook/media/v4l/dev-overlay.xml368
-rw-r--r--Documentation/DocBook/media/v4l/dev-radio.xml49
-rw-r--r--Documentation/DocBook/media/v4l/dev-raw-vbi.xml345
-rw-r--r--Documentation/DocBook/media/v4l/dev-rds.xml196
-rw-r--r--Documentation/DocBook/media/v4l/dev-sdr.xml126
-rw-r--r--Documentation/DocBook/media/v4l/dev-sliced-vbi.xml706
-rw-r--r--Documentation/DocBook/media/v4l/dev-subdev.xml478
-rw-r--r--Documentation/DocBook/media/v4l/dev-teletext.xml29
-rw-r--r--Documentation/DocBook/media/v4l/driver.xml200
-rw-r--r--Documentation/DocBook/media/v4l/fdl-appendix.xml671
-rw-r--r--Documentation/DocBook/media/v4l/fieldseq_bt.pdfbin9185 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/fieldseq_tb.pdfbin9173 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/func-close.xml62
-rw-r--r--Documentation/DocBook/media/v4l/func-ioctl.xml71
-rw-r--r--Documentation/DocBook/media/v4l/func-mmap.xml183
-rw-r--r--Documentation/DocBook/media/v4l/func-munmap.xml76
-rw-r--r--Documentation/DocBook/media/v4l/func-open.xml113
-rw-r--r--Documentation/DocBook/media/v4l/func-poll.xml142
-rw-r--r--Documentation/DocBook/media/v4l/func-read.xml181
-rw-r--r--Documentation/DocBook/media/v4l/func-select.xml130
-rw-r--r--Documentation/DocBook/media/v4l/func-write.xml128
-rw-r--r--Documentation/DocBook/media/v4l/gen-errors.xml77
-rw-r--r--Documentation/DocBook/media/v4l/io.xml1545
-rw-r--r--Documentation/DocBook/media/v4l/keytable.c.xml172
-rw-r--r--Documentation/DocBook/media/v4l/libv4l.xml160
-rw-r--r--Documentation/DocBook/media/v4l/lirc_device_interface.xml255
-rw-r--r--Documentation/DocBook/media/v4l/media-controller.xml105
-rw-r--r--Documentation/DocBook/media/v4l/media-func-close.xml59
-rw-r--r--Documentation/DocBook/media/v4l/media-func-ioctl.xml73
-rw-r--r--Documentation/DocBook/media/v4l/media-func-open.xml94
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-device-info.xml132
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml180
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-enum-links.xml160
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-g-topology.xml391
-rw-r--r--Documentation/DocBook/media/v4l/media-ioc-setup-link.xml84
-rw-r--r--Documentation/DocBook/media/v4l/media-types.xml379
-rw-r--r--Documentation/DocBook/media/v4l/pipeline.pdfbin20276 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-grey.xml62
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-m420.xml139
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv12.xml143
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv12m.xml153
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml66
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv16.xml166
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv16m.xml170
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-nv24.xml121
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml937
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml236
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml83
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml67
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml44
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml47
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sdr-cu08.xml44
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sdr-cu16le.xml46
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml40
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml67
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml67
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10.xml90
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml34
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml28
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml99
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb12.xml90
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb8.xml67
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-uv8.xml62
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-uyvy.xml120
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-vyuy.xml120
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y10.xml79
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y10b.xml43
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y12.xml79
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y12i.xml49
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y16-be.xml81
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y16.xml81
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y41p.xml149
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-y8i.xml80
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv410.xml133
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml147
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv420.xml149
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml162
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml166
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml153
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml177
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yuyv.xml120
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-yvyu.xml120
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-z16.xml81
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml2003
-rw-r--r--Documentation/DocBook/media/v4l/planar-apis.xml62
-rw-r--r--Documentation/DocBook/media/v4l/remote_controllers.xml320
-rw-r--r--Documentation/DocBook/media/v4l/selection-api.xml317
-rw-r--r--Documentation/DocBook/media/v4l/selections-common.xml180
-rw-r--r--Documentation/DocBook/media/v4l/subdev-formats.xml4040
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia614
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg63
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-full.dia1588
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-full.svg163
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia1152
-rw-r--r--Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg116
-rw-r--r--Documentation/DocBook/media/v4l/v4l2.xml728
-rw-r--r--Documentation/DocBook/media/v4l/v4l2grab.c.xml164
-rw-r--r--Documentation/DocBook/media/v4l/vbi_525.pdfbin3395 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/vbi_625.pdfbin3683 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/vbi_hsync.pdfbin7405 -> 0 bytes
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-create-bufs.xml158
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-cropcap.xml166
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml207
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml227
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml259
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dqevent.xml471
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml210
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml197
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml128
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml159
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml260
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml265
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml175
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumaudio.xml76
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml79
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enuminput.xml316
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumoutput.xml201
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumstd.xml389
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-expbuf.xml205
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-audio.xml172
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-audioout.xml138
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-crop.xml129
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml133
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml343
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-edid.xml173
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml189
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml456
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml459
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fmt.xml204
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-frequency.xml148
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-input.xml83
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml175
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-modulator.xml252
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-output.xml85
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-parm.xml314
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-priority.xml135
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-selection.xml233
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml255
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-std.xml98
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-tuner.xml594
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-log-status.xml41
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-overlay.xml74
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml88
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-qbuf.xml202
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml115
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querybuf.xml106
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querycap.xml350
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-queryctrl.xml661
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-querystd.xml85
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-reqbufs.xml137
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml188
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-streamon.xml136
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml151
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml153
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml118
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml158
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml177
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml135
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml159
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml130
-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.tmpl121
-rw-r--r--Documentation/Makefile.sphinx1
-rw-r--r--Makefile2
-rw-r--r--drivers/media/i2c/adv7180.c18
-rw-r--r--drivers/media/i2c/adv7511.c24
-rw-r--r--drivers/media/platform/vim2m.c15
-rw-r--r--drivers/media/platform/vivid/vivid-cec.c10
-rw-r--r--drivers/media/v4l2-core/videobuf2-dma-contig.c2
-rw-r--r--drivers/staging/media/Kconfig2
-rw-r--r--drivers/staging/media/cec/cec-adap.c2
235 files changed, 49 insertions, 62566 deletions
diff --git a/Documentation/DocBook/Makefile b/Documentation/DocBook/Makefile
index 8e6dd4b14314..c481df33ef21 100644
--- a/Documentation/DocBook/Makefile
+++ b/Documentation/DocBook/Makefile
@@ -16,11 +16,9 @@ DOCBOOKS := z8530book.xml device-drivers.xml \
16 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \ 16 genericirq.xml s390-drivers.xml uio-howto.xml scsi.xml \
17 80211.xml debugobjects.xml sh.xml regulator.xml \ 17 80211.xml debugobjects.xml sh.xml regulator.xml \
18 alsa-driver-api.xml writing-an-alsa-driver.xml \ 18 alsa-driver-api.xml writing-an-alsa-driver.xml \
19 tracepoint.xml media_api.xml w1.xml \ 19 tracepoint.xml w1.xml \
20 writing_musb_glue_layer.xml crypto-API.xml iio.xml 20 writing_musb_glue_layer.xml crypto-API.xml iio.xml
21 21
22include Documentation/DocBook/media/Makefile
23
24### 22###
25# The build process is as follows (targets): 23# The build process is as follows (targets):
26# (xmldocs) [by docproc] 24# (xmldocs) [by docproc]
@@ -49,7 +47,6 @@ pdfdocs: $(PDF)
49HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS))) 47HTML := $(sort $(patsubst %.xml, %.html, $(BOOKS)))
50htmldocs: $(HTML) 48htmldocs: $(HTML)
51 $(call cmd,build_main_index) 49 $(call cmd,build_main_index)
52 $(call install_media_images)
53 50
54MAN := $(patsubst %.xml, %.9, $(BOOKS)) 51MAN := $(patsubst %.xml, %.9, $(BOOKS))
55mandocs: $(MAN) 52mandocs: $(MAN)
@@ -219,9 +216,6 @@ silent_gen_xml = :
219 216
220else 217else
221 218
222# Needed, due to cleanmediadocs
223include Documentation/DocBook/media/Makefile
224
225htmldocs: 219htmldocs:
226pdfdocs: 220pdfdocs:
227psdocs: 221psdocs:
@@ -269,7 +263,7 @@ clean-files := $(DOCBOOKS) \
269 263
270clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man 264clean-dirs := $(patsubst %.xml,%,$(DOCBOOKS)) man
271 265
272cleandocs: cleanmediadocs 266cleandocs:
273 $(Q)rm -f $(call objectify, $(clean-files)) 267 $(Q)rm -f $(call objectify, $(clean-files))
274 $(Q)rm -rf $(call objectify, $(clean-dirs)) 268 $(Q)rm -rf $(call objectify, $(clean-dirs))
275 269
diff --git a/Documentation/DocBook/media/.gitignore b/Documentation/DocBook/media/.gitignore
deleted file mode 100644
index e461c585fde8..000000000000
--- a/Documentation/DocBook/media/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1!*.svg
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile
deleted file mode 100644
index fdc138624800..000000000000
--- a/Documentation/DocBook/media/Makefile
+++ /dev/null
@@ -1,427 +0,0 @@
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 -f `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/uapi/linux/videodev2.h) \
60 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/audio.h) \
61 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/ca.h) \
62 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/dmx.h) \
63 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
64 $(shell perl -ne 'print "$$1 " if /\#define\s+([A-Z][^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/net.h) \
65 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/dvb/video.h) \
66 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/media.h) \
67 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/linux/cec.h) \
68 $(shell perl -ne 'print "$$1 " if /\#define\s+([^\s]+)\s+_IO/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
69
70DEFINES = \
71 $(shell perl -ne 'print "$$1 " if /\#define\s+(DTV_[^\s]+)\s+/' $(srctree)/include/uapi/linux/dvb/frontend.h) \
72
73TYPES = \
74 $(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/videodev2.h) \
75 $(shell perl -ne 'print "$$1 " if /^typedef\s+.*\s+(\S+)\;/' $(srctree)/include/uapi/linux/dvb/frontend.h)
76
77ENUMS = \
78 $(shell perl -ne 'print "$$1 " if /^enum\s+([^\s]+)\s+/' \
79 $(srctree)/include/uapi/linux/videodev2.h \
80 $(srctree)/include/uapi/linux/dvb/audio.h \
81 $(srctree)/include/uapi/linux/dvb/ca.h \
82 $(srctree)/include/uapi/linux/dvb/dmx.h \
83 $(srctree)/include/uapi/linux/dvb/frontend.h \
84 $(srctree)/include/uapi/linux/dvb/net.h \
85 $(srctree)/include/uapi/linux/dvb/video.h \
86 $(srctree)/include/uapi/linux/media.h \
87 $(srctree)/include/uapi/linux/v4l2-mediabus.h \
88 $(srctree)/include/uapi/linux/v4l2-subdev.h)
89
90ENUM_DEFS = \
91 $(shell perl -e 'open IN,"cat @ARGV| cpp -fpreprocessed |"; while (<IN>) { if ($$enum) {print "$$1\n" if (/\s*([A-Z]\S+)\b/); } $$enum = 0 if ($$enum && /^\}/); $$enum = 1 if(/^\s*enum\s/); }; close IN;' \
92 $(srctree)/include/uapi/linux/dvb/dmx.h \
93 $(srctree)/include/uapi/linux/dvb/frontend.h)
94
95STRUCTS = \
96 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/videodev2.h) \
97 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s\{]+)\s*/)' $(srctree)/include/uapi/linux/dvb/audio.h) \
98 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/ca.h) \
99 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/dmx.h) \
100 $(shell perl -ne 'print "$$1 " if (!/dtv\_cmds\_h/ && /^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/frontend.h) \
101 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/ && !/_old/)' $(srctree)/include/uapi/linux/dvb/net.h) \
102 $(shell perl -ne 'print "$$1 " if (/^struct\s+([^\s]+)\s+/)' $(srctree)/include/uapi/linux/dvb/video.h) \
103 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/media.h) \
104 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/linux/cec.h) \
105 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-subdev.h) \
106 $(shell perl -ne 'print "$$1 " if /^struct\s+([^\s]+)\s+/' $(srctree)/include/uapi/linux/v4l2-mediabus.h)
107
108ERRORS = \
109 E2BIG \
110 EACCES \
111 EAGAIN \
112 EBADF \
113 EBADFD \
114 EBADR \
115 EBADRQC \
116 EBUSY \
117 ECHILD \
118 ECONNRESET \
119 EDEADLK \
120 EDOM \
121 EEXIST \
122 EFAULT \
123 EFBIG \
124 EILSEQ \
125 EINIT \
126 EINPROGRESS \
127 EINTR \
128 EINVAL \
129 EIO \
130 EMFILE \
131 ENFILE \
132 ENOBUFS \
133 ENODATA \
134 ENODEV \
135 ENOENT \
136 ENOIOCTLCMD \
137 ENOMEM \
138 ENOSPC \
139 ENOSR \
140 ENOSYS \
141 ENOTSUP \
142 ENOTSUPP \
143 ENOTTY \
144 ENXIO \
145 EOPNOTSUPP \
146 EOVERFLOW \
147 EPERM \
148 EPIPE \
149 EPROTO \
150 ERANGE \
151 EREMOTE \
152 EREMOTEIO \
153 ERESTART \
154 ERESTARTSYS \
155 ESHUTDOWN \
156 ESPIPE \
157 ETIME \
158 ETIMEDOUT \
159 EUSERS \
160 EWOULDBLOCK \
161 EXDEV \
162
163ESCAPE = \
164 -e "s/&/\\&amp;/g" \
165 -e "s/</\\&lt;/g" \
166 -e "s/>/\\&gt;/g"
167
168FILENAME = \
169 -e s,"^[^\/]*/",, \
170 -e s/"\\.xml"// \
171 -e s/"\\.tmpl"// \
172 -e s/\\\./-/g \
173 -e s/"^func-"// \
174 -e s/"^pixfmt-"// \
175 -e s/"^vidioc-"//
176
177# Generate references to these structs in videodev2.h.xml.
178DOCUMENTED = \
179 -e "s/\(enum *\)v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1<link linkend=\"\2\">v4l2_mpeg_cx2341x_video_\2<\/link>/g" \
180 -e "s/\(\(enum\|struct\) *\)\(v4l2_[a-zA-Z0-9_]*\)/\1<link linkend=\"\3\">\3<\/link>/g" \
181 -e "s/\(V4L2_PIX_FMT_[A-Z0-9_]\+\)\(\s\+v4l2_fourcc\)/<link linkend=\"\1\">\1<\/link>\2/g" \
182 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
183 -e "s/v4l2\-mpeg\-vbi\-ITV0/v4l2-mpeg-vbi-itv0-1/g"
184
185DVB_DOCUMENTED = \
186 -e "s,\(struct\s\+\)\([a-z0-9_]\+\)\(\s\+{\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
187 -e "s,\(}\s\+\)\([a-z0-9_]\+_t\+\),\1\<link linkend=\"\2\">\2\<\/link\>,g" \
188 -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+[0-9]\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
189 -e "s,<link\s\+linkend=\".*\">\(DTV_IOCTL_MAX_MSGS\|dtv_cmds_h\|__.*_old\)<\/link>,\1,g" \
190 -e ":a;s/\(linkend=\".*\)_\(.*\">\)/\1-\2/;ta" \
191 -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" \
192 -e "s,DTV-ISDBT-LAYER[A-C],DTV-ISDBT-LAYER,g" \
193 -e "s,\(define\s\+\)\([A-Z0-9_]\+\)\(\s\+_IO\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
194 -e "s,\(define\s\+\)\(DTV_[A-Z0-9_]\+\)\(\s\+\),\1\<link linkend=\"\2\">\2\<\/link\>\3,g" \
195 -e "s,<link\s\+linkend=\".*\">\(__.*_OLD\)<\/link>,\1,g" \
196 -e "s/\(linkend\=\"\)FE_SET_PROPERTY/\1FE_GET_PROPERTY/g" \
197 -e "s,<link\s\+linkend=\".*\">\(DTV_ISDBS_TS_ID_LEGACY\|DTV_MAX_COMMAND\|DTV_IOCTL_MAX_MSGS\)<\/link>,\1,g" \
198
199#
200# Media targets and dependencies
201#
202
203install_media_images = \
204 $(Q)if [ "x$(findstring media_api.xml,$(DOCBOOKS))" != "x" ]; then \
205 mkdir -p $(MEDIA_OBJ_DIR)/media_api; \
206 cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/*.svg $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api; \
207 fi
208
209$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
210 $(Q)base64 -d $< >$@
211
212$(MEDIA_OBJ_DIR)/v4l2.xml: $(OBJIMGFILES)
213 @$($(quiet)gen_xml)
214 @(ln -sf `cd $(MEDIA_SRC_DIR) && /bin/pwd`/v4l/*xml $(MEDIA_OBJ_DIR)/)
215 @(ln -sf `cd $(MEDIA_SRC_DIR) && /bin/pwd`/dvb/*xml $(MEDIA_OBJ_DIR)/)
216
217$(MEDIA_OBJ_DIR)/videodev2.h.xml: $(srctree)/include/uapi/linux/videodev2.h $(MEDIA_OBJ_DIR)/v4l2.xml
218 @$($(quiet)gen_xml)
219 @( \
220 echo "<programlisting>") > $@
221 @( \
222 expand --tabs=8 < $< | \
223 sed $(ESCAPE) $(DOCUMENTED) | \
224 sed 's/i\.e\./&ie;/') >> $@
225 @( \
226 echo "</programlisting>") >> $@
227
228$(MEDIA_OBJ_DIR)/audio.h.xml: $(srctree)/include/uapi/linux/dvb/audio.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)/ca.h.xml: $(srctree)/include/uapi/linux/dvb/ca.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)/dmx.h.xml: $(srctree)/include/uapi/linux/dvb/dmx.h $(MEDIA_OBJ_DIR)/v4l2.xml
251 @$($(quiet)gen_xml)
252 @( \
253 echo "<programlisting>") > $@
254 @( \
255 for ident in $(ENUM_DEFS) ; do \
256 entity=`echo $$ident | tr _ -` ; \
257 r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
258 done; \
259 expand --tabs=8 < $< | \
260 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
261 sed 's/i\.e\./&ie;/' | \
262 perl -ne "$$r print $$_;") >> $@
263 @( \
264 echo "</programlisting>") >> $@
265
266$(MEDIA_OBJ_DIR)/frontend.h.xml: $(srctree)/include/uapi/linux/dvb/frontend.h $(MEDIA_OBJ_DIR)/v4l2.xml
267 @$($(quiet)gen_xml)
268 @( \
269 echo "<programlisting>") > $@
270 @( \
271 for ident in $(ENUM_DEFS) ; do \
272 entity=`echo $$ident | tr _ -` ; \
273 r="$$r s/([^\w\-])$$ident([^\w\-])/\1\&$$entity\;\2/g;";\
274 done; \
275 expand --tabs=8 < $< | \
276 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
277 sed 's/i\.e\./&ie;/' | \
278 perl -ne "$$r print $$_;") >> $@
279 @( \
280 echo "</programlisting>") >> $@
281
282$(MEDIA_OBJ_DIR)/net.h.xml: $(srctree)/include/uapi/linux/dvb/net.h $(MEDIA_OBJ_DIR)/v4l2.xml
283 @$($(quiet)gen_xml)
284 @( \
285 echo "<programlisting>") > $@
286 @( \
287 expand --tabs=8 < $< | \
288 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
289 sed 's/i\.e\./&ie;/') >> $@
290 @( \
291 echo "</programlisting>") >> $@
292
293$(MEDIA_OBJ_DIR)/video.h.xml: $(srctree)/include/uapi/linux/dvb/video.h $(MEDIA_OBJ_DIR)/v4l2.xml
294 @$($(quiet)gen_xml)
295 @( \
296 echo "<programlisting>") > $@
297 @( \
298 expand --tabs=8 < $< | \
299 sed $(ESCAPE) $(DVB_DOCUMENTED) | \
300 sed 's/i\.e\./&ie;/') >> $@
301 @( \
302 echo "</programlisting>") >> $@
303
304$(MEDIA_OBJ_DIR)/media-entities.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
305 @$($(quiet)gen_xml)
306 @( \
307 echo "<!-- Generated file! Do not edit. -->") >$@
308 @( \
309 echo -e "\n<!-- Functions -->") >>$@
310 @( \
311 for ident in $(FUNCS) ; do \
312 entity=`echo $$ident | tr _ -` ; \
313 echo "<!ENTITY func-$$entity \"<link" \
314 "linkend='func-$$entity'><function>$$ident()</function></link>\">" \
315 >>$@ ; \
316 done)
317 @( \
318 echo -e "\n<!-- Ioctls -->") >>$@
319 @( \
320 for ident in `echo $(IOCTLS) | sed -e "s,VIDIOC_RESERVED,,"`; do\
321 entity=`echo $$ident | tr _ -` ; \
322 id=`grep -e "<refname>$$ident" -e "<section id=\"$$ident\"" $$(find $(MEDIA_SRC_DIR) -name *.xml -type f)| sed -r s,"^.*/(.*).xml.*","\1",` ; \
323 if [ "$$id" != "" ]; then echo "<!ENTITY $$entity \"<link" \
324 "linkend='$$id'><constant>$$ident</constant></link>\">" \
325 >>$@ ; else \
326 echo "Warning: undocumented ioctl: $$ident. Please document it at the media DocBook!" >&2; \
327 fi; \
328 done)
329 @( \
330 echo -e "\n<!-- Defines -->") >>$@
331 @( \
332 for ident in $(DEFINES) ; do \
333 entity=`echo $$ident | tr _ -` ; \
334 echo "<!ENTITY $$entity \"<link" \
335 "linkend='$$entity'><constant>$$ident</constant></link>\">" \
336 >>$@ ; \
337 done)
338 @( \
339 echo -e "\n<!-- Types -->") >>$@
340 @( \
341 for ident in $(TYPES) ; do \
342 entity=`echo $$ident | tr _ -` ; \
343 echo "<!ENTITY $$entity \"<link" \
344 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
345 done)
346 @( \
347 echo -e "\n<!-- Enums -->") >>$@
348 @( \
349 for ident in $(ENUMS) ; do \
350 entity=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -` ; \
351 echo "<!ENTITY $$entity \"enum&nbsp;<link" \
352 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
353 done)
354 @( \
355 echo -e "\n<!-- Enum definitions -->") >>$@
356 @( \
357 for ident in $(ENUM_DEFS) ; do \
358 entity=`echo $$ident | tr _ -` ; \
359 echo "<!ENTITY $$entity \"<link" \
360 "linkend='$$entity'><constant>$$ident</constant></link>\">" \
361 >>$@ ; \
362 done)
363 @( \
364 echo -e "\n<!-- Structures -->") >>$@
365 @( \
366 for ident in $(STRUCTS) ; do \
367 entity=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
368 echo "<!ENTITY $$entity \"struct&nbsp;<link" \
369 "linkend='$$entity'>$$ident</link>\">" >>$@ ; \
370 done)
371 @( \
372 echo -e "\n<!-- Error Codes -->") >>$@
373 @( \
374 for ident in $(ERRORS) ; do \
375 echo "<!ENTITY $$ident \"<errorcode>$$ident</errorcode>" \
376 "error code\">" >>$@ ; \
377 done)
378 @( \
379 echo -e "\n<!-- Subsections -->") >>$@
380 @( \
381 for file in $(MEDIA_SGMLS) ; do \
382 entity=`echo "$$file" | sed $(FILENAME) -e s/"^([^-]*)"/sub\1/` ; \
383 if ! echo "$$file" | \
384 grep -q -E -e '^(func|vidioc|pixfmt)-' ; then \
385 echo "<!ENTITY sub-$$entity SYSTEM \"$$file\">" >>$@ ; \
386 fi ; \
387 done)
388 @( \
389 echo -e "\n<!-- Function Reference -->") >>$@
390 @( \
391 for file in $(MEDIA_SGMLS) ; do \
392 if echo "$$file" | \
393 grep -q -E -e '(func|vidioc|pixfmt)-' ; then \
394 entity=`echo "$$file" |sed $(FILENAME)` ; \
395 echo "<!ENTITY $$entity SYSTEM \"$$file\">" >>$@ ; \
396 fi ; \
397 done)
398
399# Jade can auto-generate a list-of-tables, which includes all structs,
400# but we only want data types, all types, and sorted please.
401$(MEDIA_OBJ_DIR)/media-indices.tmpl: $(MEDIA_OBJ_DIR)/v4l2.xml
402 @$($(quiet)gen_xml)
403 @( \
404 echo "<!-- Generated file! Do not edit. -->") >$@
405 @( \
406 echo -e "\n<index><title>List of Types</title>") >>$@
407 @( \
408 for ident in $(TYPES) ; do \
409 id=`echo $$ident | tr _ -` ; \
410 echo "<indexentry><primaryie><link" \
411 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
412 done)
413 @( \
414 for ident in $(ENUMS) ; do \
415 id=`echo $$ident | sed -e "s/v4l2_mpeg_cx2341x_video_\([a-z]*_spatial_filter_type\)/\1/" | tr _ -`; \
416 echo "<indexentry><primaryie>enum&nbsp;<link" \
417 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
418 done)
419 @( \
420 for ident in $(STRUCTS) ; do \
421 id=`echo $$ident | tr _ - | sed s/v4l2-mpeg-vbi-ITV0/v4l2-mpeg-vbi-itv0-1/g` ; \
422 echo "<indexentry><primaryie>struct&nbsp;<link" \
423 "linkend='$$id'>$$ident</link></primaryie></indexentry>" >>$@ ; \
424 done)
425 @( \
426 echo "</index>") >>$@
427
diff --git a/Documentation/DocBook/media/bayer.png.b64 b/Documentation/DocBook/media/bayer.png.b64
deleted file mode 100644
index ccdf2bcda95c..000000000000
--- a/Documentation/DocBook/media/bayer.png.b64
+++ /dev/null
@@ -1,171 +0,0 @@
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/constraints.png.b64 b/Documentation/DocBook/media/constraints.png.b64
deleted file mode 100644
index 125b4a94962c..000000000000
--- a/Documentation/DocBook/media/constraints.png.b64
+++ /dev/null
@@ -1,59 +0,0 @@
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
59RU5ErkJggg==
diff --git a/Documentation/DocBook/media/crop.gif.b64 b/Documentation/DocBook/media/crop.gif.b64
deleted file mode 100644
index 11d936ae72e8..000000000000
--- a/Documentation/DocBook/media/crop.gif.b64
+++ /dev/null
@@ -1,105 +0,0 @@
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/media/dvb/.gitignore b/Documentation/DocBook/media/dvb/.gitignore
deleted file mode 100644
index d7ec32eafac9..000000000000
--- a/Documentation/DocBook/media/dvb/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1!*.xml
diff --git a/Documentation/DocBook/media/dvb/audio.xml b/Documentation/DocBook/media/dvb/audio.xml
deleted file mode 100644
index ea56743ddbe7..000000000000
--- a/Documentation/DocBook/media/dvb/audio.xml
+++ /dev/null
@@ -1,1314 +0,0 @@
1<title>DVB Audio Device</title>
2<para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It
3can be accessed through <constant>/dev/dvb/adapter?/audio?</constant>. Data types and and
4ioctl definitions can be accessed by including <constant>linux/dvb/audio.h</constant> in your
5application.
6</para>
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.
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>
14
15<section id="audio_data_types">
16<title>Audio Data Types</title>
17<para>This section describes the structures, data types and defines used when talking to the
18audio device.
19</para>
20
21<section id="audio-stream-source-t">
22<title>audio_stream_source_t</title>
23<para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take
24the following values, depending on whether we are replaying from an internal (demux) or
25external (user write) source.
26</para>
27<programlisting>
28typedef enum {
29 AUDIO_SOURCE_DEMUX,
30 AUDIO_SOURCE_MEMORY
31} audio_stream_source_t;
32</programlisting>
33<para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
34DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY
35is selected the stream comes from the application through the <constant>write()</constant> system
36call.
37</para>
38
39</section>
40<section id="audio-play-state-t">
41<title>audio_play_state_t</title>
42<para>The following values can be returned by the AUDIO_GET_STATUS call representing the
43state of audio playback.
44</para>
45<programlisting>
46typedef enum {
47 AUDIO_STOPPED,
48 AUDIO_PLAYING,
49 AUDIO_PAUSED
50} audio_play_state_t;
51</programlisting>
52
53</section>
54<section id="audio-channel-select-t">
55<title>audio_channel_select_t</title>
56<para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the
57following values.
58</para>
59<programlisting>
60typedef enum {
61 AUDIO_STEREO,
62 AUDIO_MONO_LEFT,
63 AUDIO_MONO_RIGHT,
64 AUDIO_MONO,
65 AUDIO_STEREO_SWAPPED
66} audio_channel_select_t;
67</programlisting>
68
69</section>
70<section id="audio-status">
71<title>struct audio_status</title>
72<para>The AUDIO_GET_STATUS call returns the following structure informing about various
73states of the playback operation.
74</para>
75<programlisting>
76typedef struct audio_status {
77 boolean AV_sync_state;
78 boolean mute_state;
79 audio_play_state_t play_state;
80 audio_stream_source_t stream_source;
81 audio_channel_select_t channel_select;
82 boolean bypass_mode;
83 audio_mixer_t mixer_state;
84} audio_status_t;
85</programlisting>
86
87</section>
88<section id="audio-mixer">
89<title>struct audio_mixer</title>
90<para>The following structure is used by the AUDIO_SET_MIXER call to set the audio
91volume.
92</para>
93<programlisting>
94typedef struct audio_mixer {
95 unsigned int volume_left;
96 unsigned int volume_right;
97} audio_mixer_t;
98</programlisting>
99
100</section>
101<section id="audio_encodings">
102<title>audio encodings</title>
103<para>A call to AUDIO_GET_CAPABILITIES returns an unsigned integer with the following
104bits set according to the hardwares capabilities.
105</para>
106<programlisting>
107 #define AUDIO_CAP_DTS 1
108 #define AUDIO_CAP_LPCM 2
109 #define AUDIO_CAP_MP1 4
110 #define AUDIO_CAP_MP2 8
111 #define AUDIO_CAP_MP3 16
112 #define AUDIO_CAP_AAC 32
113 #define AUDIO_CAP_OGG 64
114 #define AUDIO_CAP_SDDS 128
115 #define AUDIO_CAP_AC3 256
116</programlisting>
117
118</section>
119<section id="audio-karaoke">
120<title>struct audio_karaoke</title>
121<para>The ioctl AUDIO_SET_KARAOKE uses the following format:
122</para>
123<programlisting>
124typedef
125struct audio_karaoke {
126 int vocal1;
127 int vocal2;
128 int melody;
129} audio_karaoke_t;
130</programlisting>
131<para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both,
132Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the
133right channel at 100% each. Ff Melody is non-zero, the melody channel gets mixed into left
134and right.
135</para>
136
137</section>
138<section id="audio-attributes-t">
139<title>audio attributes</title>
140<para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES:
141</para>
142<programlisting>
143 typedef uint16_t audio_attributes_t;
144 /&#x22C6; bits: descr. &#x22C6;/
145 /&#x22C6; 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, &#x22C6;/
146 /&#x22C6; 12 multichannel extension &#x22C6;/
147 /&#x22C6; 11-10 audio type (0=not spec, 1=language included) &#x22C6;/
148 /&#x22C6; 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) &#x22C6;/
149 /&#x22C6; 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, &#x22C6;/
150 /&#x22C6; 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) &#x22C6;/
151 /&#x22C6; 2- 0 number of audio channels (n+1 channels) &#x22C6;/
152</programlisting>
153 </section></section>
154<section id="audio_function_calls">
155<title>Audio Function Calls</title>
156
157
158<section id="audio_fopen">
159<title>open()</title>
160<para>DESCRIPTION
161</para>
162<informaltable><tgroup cols="1"><tbody><row><entry
163 align="char">
164<para>This system call opens a named audio device (e.g. /dev/dvb/adapter0/audio0)
165 for subsequent use. When an open() call has succeeded, the device will be ready
166 for use. The significance of blocking or non-blocking mode is described in the
167 documentation for functions where there is a difference. It does not affect the
168 semantics of the open() call itself. A device opened in blocking mode can later
169 be put into non-blocking mode (and vice versa) using the F_SETFL command
170 of the fcntl system call. This is a standard system call, documented in the Linux
171 manual page for fcntl. Only one user can open the Audio Device in O_RDWR
172 mode. All other attempts to open the device in this mode will fail, and an error
173 code will be returned. If the Audio Device is opened in O_RDONLY mode, the
174 only ioctl call that can be used is AUDIO_GET_STATUS. All other call will
175 return with an error code.</para>
176</entry>
177 </row></tbody></tgroup></informaltable>
178<para>SYNOPSIS
179</para>
180<informaltable><tgroup cols="1"><tbody><row><entry
181 align="char">
182<para>int open(const char &#x22C6;deviceName, int flags);</para>
183</entry>
184 </row></tbody></tgroup></informaltable>
185<para>PARAMETERS
186</para>
187<informaltable><tgroup cols="2"><tbody><row><entry
188 align="char">
189<para>const char
190 *deviceName</para>
191</entry><entry
192 align="char">
193<para>Name of specific audio device.</para>
194</entry>
195 </row><row><entry
196 align="char">
197<para>int flags</para>
198</entry><entry
199 align="char">
200<para>A bit-wise OR of the following flags:</para>
201</entry>
202 </row><row><entry
203 align="char">
204</entry><entry
205 align="char">
206<para>O_RDONLY read-only access</para>
207</entry>
208 </row><row><entry
209 align="char">
210</entry><entry
211 align="char">
212<para>O_RDWR read/write access</para>
213</entry>
214 </row><row><entry
215 align="char">
216</entry><entry
217 align="char">
218<para>O_NONBLOCK open in non-blocking mode</para>
219</entry>
220 </row><row><entry
221 align="char">
222</entry><entry
223 align="char">
224<para>(blocking mode is the default)</para>
225</entry>
226 </row></tbody></tgroup></informaltable>
227<para>RETURN VALUE</para>
228<informaltable><tgroup cols="2"><tbody><row><entry
229 align="char">
230<para>ENODEV</para>
231</entry><entry
232 align="char">
233<para>Device driver not loaded/available.</para>
234</entry>
235 </row><row><entry
236 align="char">
237<para>EBUSY</para>
238</entry><entry
239 align="char">
240<para>Device or resource busy.</para>
241</entry>
242 </row><row><entry
243 align="char">
244<para>EINVAL</para>
245</entry><entry
246 align="char">
247<para>Invalid argument.</para>
248</entry>
249 </row></tbody></tgroup></informaltable>
250
251</section>
252<section id="audio_fclose">
253<title>close()</title>
254<para>DESCRIPTION
255</para>
256<informaltable><tgroup cols="1"><tbody><row><entry
257 align="char">
258<para>This system call closes a previously opened audio device.</para>
259</entry>
260 </row></tbody></tgroup></informaltable>
261<para>SYNOPSIS
262</para>
263<informaltable><tgroup cols="1"><tbody><row><entry
264 align="char">
265<para>int close(int fd);</para>
266</entry>
267 </row></tbody></tgroup></informaltable>
268<para>PARAMETERS
269</para>
270<informaltable><tgroup cols="2"><tbody><row><entry
271 align="char">
272<para>int fd</para>
273</entry><entry
274 align="char">
275<para>File descriptor returned by a previous call to open().</para>
276</entry>
277 </row></tbody></tgroup></informaltable>
278<para>RETURN VALUE</para>
279<informaltable><tgroup cols="2"><tbody><row><entry
280 align="char">
281<para>EBADF</para>
282</entry><entry
283 align="char">
284<para>fd is not a valid open file descriptor.</para>
285</entry>
286 </row></tbody></tgroup></informaltable>
287
288</section>
289<section id="audio_fwrite">
290<title>write()</title>
291<para>DESCRIPTION
292</para>
293<informaltable><tgroup cols="1"><tbody><row><entry
294 align="char">
295<para>This system call can only be used if AUDIO_SOURCE_MEMORY is selected
296 in the ioctl call AUDIO_SELECT_SOURCE. The data provided shall be in
297 PES format. If O_NONBLOCK is not specified the function will block until
298 buffer space is available. The amount of data to be transferred is implied by
299 count.</para>
300</entry>
301 </row></tbody></tgroup></informaltable>
302<para>SYNOPSIS
303</para>
304<informaltable><tgroup cols="1"><tbody><row><entry
305 align="char">
306<para>size_t write(int fd, const void &#x22C6;buf, size_t count);</para>
307</entry>
308 </row></tbody></tgroup></informaltable>
309<para>PARAMETERS
310</para>
311<informaltable><tgroup cols="2"><tbody><row><entry
312 align="char">
313<para>int fd</para>
314</entry><entry
315 align="char">
316<para>File descriptor returned by a previous call to open().</para>
317</entry>
318 </row><row><entry
319 align="char">
320<para>void *buf</para>
321</entry><entry
322 align="char">
323<para>Pointer to the buffer containing the PES data.</para>
324</entry>
325 </row><row><entry
326 align="char">
327<para>size_t count</para>
328</entry><entry
329 align="char">
330<para>Size of buf.</para>
331</entry>
332 </row></tbody></tgroup></informaltable>
333<para>RETURN VALUE</para>
334<informaltable><tgroup cols="2"><tbody><row><entry
335 align="char">
336<para>EPERM</para>
337</entry><entry
338 align="char">
339<para>Mode AUDIO_SOURCE_MEMORY not selected.</para>
340</entry>
341 </row><row><entry
342 align="char">
343<para>ENOMEM</para>
344</entry><entry
345 align="char">
346<para>Attempted to write more data than the internal buffer can
347 hold.</para>
348</entry>
349 </row><row><entry
350 align="char">
351<para>EBADF</para>
352</entry><entry
353 align="char">
354<para>fd is not a valid open file descriptor.</para>
355</entry>
356 </row></tbody></tgroup></informaltable>
357
358</section><section id="AUDIO_STOP"
359role="subsection"><title>AUDIO_STOP</title>
360<para>DESCRIPTION
361</para>
362<informaltable><tgroup cols="1"><tbody><row><entry
363 align="char">
364<para>This ioctl call asks the Audio Device to stop playing the current stream.</para>
365</entry>
366 </row></tbody></tgroup></informaltable>
367<para>SYNOPSIS
368</para>
369<informaltable><tgroup cols="1"><tbody><row><entry
370 align="char">
371<para>int ioctl(int fd, int request = AUDIO_STOP);</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 AUDIO_STOP for this command.</para>
389</entry>
390 </row></tbody></tgroup></informaltable>
391&return-value-dvb;
392
393</section><section id="AUDIO_PLAY"
394role="subsection"><title>AUDIO_PLAY</title>
395<para>DESCRIPTION
396</para>
397<informaltable><tgroup cols="1"><tbody><row><entry
398 align="char">
399<para>This ioctl call asks the Audio Device to start playing an audio stream from the
400 selected source.</para>
401</entry>
402 </row></tbody></tgroup></informaltable>
403<para>SYNOPSIS
404</para>
405<informaltable><tgroup cols="1"><tbody><row><entry
406 align="char">
407<para>int ioctl(int fd, int request = AUDIO_PLAY);</para>
408</entry>
409 </row></tbody></tgroup></informaltable>
410<para>PARAMETERS
411</para>
412<informaltable><tgroup cols="2"><tbody><row><entry
413 align="char">
414<para>int fd</para>
415</entry><entry
416 align="char">
417<para>File descriptor returned by a previous call to open().</para>
418</entry>
419 </row><row><entry
420 align="char">
421<para>int request</para>
422</entry><entry
423 align="char">
424<para>Equals AUDIO_PLAY for this command.</para>
425</entry>
426 </row></tbody></tgroup></informaltable>
427&return-value-dvb;
428
429</section><section id="AUDIO_PAUSE"
430role="subsection"><title>AUDIO_PAUSE</title>
431<para>DESCRIPTION
432</para>
433<informaltable><tgroup cols="1"><tbody><row><entry
434 align="char">
435<para>This ioctl call suspends the audio stream being played. Decoding and playing
436 are paused. It is then possible to restart again decoding and playing process of
437 the audio stream using AUDIO_CONTINUE command.</para>
438</entry>
439 </row><row><entry
440 align="char">
441<para>If AUDIO_SOURCE_MEMORY is selected in the ioctl call
442 AUDIO_SELECT_SOURCE, the DVB-subsystem will not decode (consume)
443 any more data until the ioctl call AUDIO_CONTINUE or AUDIO_PLAY is
444 performed.</para>
445</entry>
446 </row></tbody></tgroup></informaltable>
447<para>SYNOPSIS
448</para>
449<informaltable><tgroup cols="1"><tbody><row><entry
450 align="char">
451<para>int ioctl(int fd, int request = AUDIO_PAUSE);</para>
452</entry>
453 </row></tbody></tgroup></informaltable>
454<para>PARAMETERS
455</para>
456<informaltable><tgroup cols="2"><tbody><row><entry
457 align="char">
458<para>int fd</para>
459</entry><entry
460 align="char">
461<para>File descriptor returned by a previous call to open().</para>
462</entry>
463 </row><row><entry
464 align="char">
465<para>int request</para>
466</entry><entry
467 align="char">
468<para>Equals AUDIO_PAUSE for this command.</para>
469</entry>
470 </row></tbody></tgroup></informaltable>
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
495</para>
496<informaltable><tgroup cols="2"><tbody><row><entry
497 align="char">
498<para>int fd</para>
499</entry><entry
500 align="char">
501<para>File descriptor returned by a previous call to open().</para>
502</entry>
503 </row><row><entry
504 align="char">
505<para>int request</para>
506</entry><entry
507 align="char">
508<para>Equals AUDIO_CONTINUE for this command.</para>
509</entry>
510 </row></tbody></tgroup></informaltable>
511&return-value-dvb;
512
513</section><section id="AUDIO_SELECT_SOURCE"
514role="subsection"><title>AUDIO_SELECT_SOURCE</title>
515<para>DESCRIPTION
516</para>
517<informaltable><tgroup cols="1"><tbody><row><entry
518 align="char">
519<para>This ioctl call informs the audio device which source shall be used
520 for the input data. The possible sources are demux or memory. If
521 AUDIO_SOURCE_MEMORY is selected, the data is fed to the Audio Device
522 through the write command.</para>
523</entry>
524 </row></tbody></tgroup></informaltable>
525<para>SYNOPSIS
526</para>
527<informaltable><tgroup cols="1"><tbody><row><entry
528 align="char">
529<para>int ioctl(int fd, int request = AUDIO_SELECT_SOURCE,
530 audio_stream_source_t source);</para>
531</entry>
532 </row></tbody></tgroup></informaltable>
533<para>PARAMETERS
534</para>
535<informaltable><tgroup cols="2"><tbody><row><entry
536 align="char">
537<para>int fd</para>
538</entry><entry
539 align="char">
540<para>File descriptor returned by a previous call to open().</para>
541</entry>
542 </row><row><entry
543 align="char">
544<para>int request</para>
545</entry><entry
546 align="char">
547<para>Equals AUDIO_SELECT_SOURCE for this command.</para>
548</entry>
549 </row><row><entry
550 align="char">
551<para>audio_stream_source_t
552 source</para>
553</entry><entry
554 align="char">
555<para>Indicates the source that shall be used for the Audio
556 stream.</para>
557</entry>
558 </row></tbody></tgroup></informaltable>
559&return-value-dvb;
560
561</section><section id="AUDIO_SET_MUTE"
562role="subsection"><title>AUDIO_SET_MUTE</title>
563<para>DESCRIPTION
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>
567<informaltable><tgroup cols="1"><tbody><row><entry
568 align="char">
569<para>This ioctl call asks the audio device to mute the stream that is currently being
570 played.</para>
571</entry>
572 </row></tbody></tgroup></informaltable>
573<para>SYNOPSIS
574</para>
575<informaltable><tgroup cols="1"><tbody><row><entry
576 align="char">
577<para>int ioctl(int fd, int request = AUDIO_SET_MUTE,
578 boolean state);</para>
579</entry>
580 </row></tbody></tgroup></informaltable>
581<para>PARAMETERS
582</para>
583<informaltable><tgroup cols="2"><tbody><row><entry
584 align="char">
585<para>int fd</para>
586</entry><entry
587 align="char">
588<para>File descriptor returned by a previous call to open().</para>
589</entry>
590 </row><row><entry
591 align="char">
592<para>int request</para>
593</entry><entry
594 align="char">
595<para>Equals AUDIO_SET_MUTE for this command.</para>
596</entry>
597 </row><row><entry
598 align="char">
599<para>boolean state</para>
600</entry><entry
601 align="char">
602<para>Indicates if audio device shall mute or not.</para>
603</entry>
604 </row><row><entry
605 align="char">
606</entry><entry
607 align="char">
608<para>TRUE Audio Mute</para>
609</entry>
610 </row><row><entry
611 align="char">
612</entry><entry
613 align="char">
614<para>FALSE Audio Un-mute</para>
615</entry>
616 </row></tbody></tgroup></informaltable>
617&return-value-dvb;
618
619</section><section id="AUDIO_SET_AV_SYNC"
620role="subsection"><title>AUDIO_SET_AV_SYNC</title>
621<para>DESCRIPTION
622</para>
623<informaltable><tgroup cols="1"><tbody><row><entry
624 align="char">
625<para>This ioctl call asks the Audio Device to turn ON or OFF A/V synchronization.</para>
626</entry>
627 </row></tbody></tgroup></informaltable>
628<para>SYNOPSIS
629</para>
630<informaltable><tgroup cols="1"><tbody><row><entry
631 align="char">
632<para>int ioctl(int fd, int request = AUDIO_SET_AV_SYNC,
633 boolean state);</para>
634</entry>
635 </row></tbody></tgroup></informaltable>
636<para>PARAMETERS
637</para>
638<informaltable><tgroup cols="2"><tbody><row><entry
639 align="char">
640<para>int fd</para>
641</entry><entry
642 align="char">
643<para>File descriptor returned by a previous call to open().</para>
644</entry>
645 </row><row><entry
646 align="char">
647<para>int request</para>
648</entry><entry
649 align="char">
650<para>Equals AUDIO_AV_SYNC for this command.</para>
651</entry>
652 </row><row><entry
653 align="char">
654<para>boolean state</para>
655</entry><entry
656 align="char">
657<para>Tells the DVB subsystem if A/V synchronization shall be
658 ON or OFF.</para>
659</entry>
660 </row><row><entry
661 align="char">
662</entry><entry
663 align="char">
664<para>TRUE AV-sync ON</para>
665</entry>
666 </row><row><entry
667 align="char">
668</entry><entry
669 align="char">
670<para>FALSE AV-sync OFF</para>
671</entry>
672 </row></tbody></tgroup></informaltable>
673&return-value-dvb;
674
675</section><section id="AUDIO_SET_BYPASS_MODE"
676role="subsection"><title>AUDIO_SET_BYPASS_MODE</title>
677<para>DESCRIPTION
678</para>
679<informaltable><tgroup cols="1"><tbody><row><entry
680 align="char">
681<para>This ioctl call asks the Audio Device to bypass the Audio decoder and forward
682 the stream without decoding. This mode shall be used if streams that can&#8217;t be
683 handled by the DVB system shall be decoded. Dolby DigitalTM streams are
684 automatically forwarded by the DVB subsystem if the hardware can handle it.</para>
685</entry>
686 </row></tbody></tgroup></informaltable>
687<para>SYNOPSIS
688</para>
689<informaltable><tgroup cols="1"><tbody><row><entry
690 align="char">
691<para>int ioctl(int fd, int request =
692 AUDIO_SET_BYPASS_MODE, boolean mode);</para>
693</entry>
694 </row></tbody></tgroup></informaltable>
695<para>PARAMETERS
696</para>
697<informaltable><tgroup cols="2"><tbody><row><entry
698 align="char">
699<para>int fd</para>
700</entry><entry
701 align="char">
702<para>File descriptor returned by a previous call to open().</para>
703</entry>
704 </row><row><entry
705 align="char">
706<para>int request</para>
707</entry><entry
708 align="char">
709<para>Equals AUDIO_SET_BYPASS_MODE for this
710 command.</para>
711</entry>
712 </row><row><entry
713 align="char">
714<para>boolean mode</para>
715</entry><entry
716 align="char">
717<para>Enables or disables the decoding of the current Audio
718 stream in the DVB subsystem.</para>
719</entry>
720 </row><row><entry
721 align="char">
722</entry><entry
723 align="char">
724<para>TRUE Bypass is disabled</para>
725</entry>
726 </row><row><entry
727 align="char">
728</entry><entry
729 align="char">
730<para>FALSE Bypass is enabled</para>
731</entry>
732 </row></tbody></tgroup></informaltable>
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
755</para>
756<informaltable><tgroup cols="2"><tbody><row><entry
757 align="char">
758<para>int fd</para>
759</entry><entry
760 align="char">
761<para>File descriptor returned by a previous call to open().</para>
762</entry>
763 </row><row><entry
764 align="char">
765<para>int request</para>
766</entry><entry
767 align="char">
768<para>Equals AUDIO_CHANNEL_SELECT for this
769 command.</para>
770</entry>
771 </row><row><entry
772 align="char">
773<para>audio_channel_select_t
774 ch</para>
775</entry><entry
776 align="char">
777<para>Select the output format of the audio (mono left/right,
778 stereo).</para>
779</entry>
780 </row></tbody></tgroup></informaltable>
781&return-value-dvb;
782
783</section><section id="AUDIO_BILINGUAL_CHANNEL_SELECT"
784role="subsection"><title>AUDIO_BILINGUAL_CHANNEL_SELECT</title>
785<para>DESCRIPTION
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>
790<informaltable><tgroup cols="1"><tbody><row><entry
791 align="char">
792<para>This ioctl call asks the Audio Device to select the requested channel for bilingual streams if possible.</para>
793</entry>
794 </row></tbody></tgroup></informaltable>
795<para>SYNOPSIS
796</para>
797<informaltable><tgroup cols="1"><tbody><row><entry
798 align="char">
799<para>int ioctl(int fd, int request =
800 AUDIO_BILINGUAL_CHANNEL_SELECT, audio_channel_select_t);</para>
801</entry>
802 </row></tbody></tgroup></informaltable>
803<para>PARAMETERS
804</para>
805<informaltable><tgroup cols="2"><tbody><row><entry
806 align="char">
807<para>int fd</para>
808</entry><entry
809 align="char">
810<para>File descriptor returned by a previous call to open().</para>
811</entry>
812 </row><row><entry
813 align="char">
814<para>int request</para>
815</entry><entry
816 align="char">
817<para>Equals AUDIO_BILINGUAL_CHANNEL_SELECT for this
818 command.</para>
819</entry>
820 </row><row><entry
821 align="char">
822<para>audio_channel_select_t
823ch</para>
824</entry><entry
825 align="char">
826<para>Select the output format of the audio (mono left/right,
827 stereo).</para>
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>
843 </row></tbody></tgroup></informaltable>
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
853</para>
854<informaltable><tgroup cols="2"><tbody><row><entry
855 align="char">
856<para>int fd</para>
857</entry><entry
858 align="char">
859<para>File descriptor returned by a previous call to open().</para>
860</entry>
861 </row><row><entry
862 align="char">
863<para>int request</para>
864</entry><entry
865 align="char">
866<para>Equals AUDIO_GET_PTS for this
867 command.</para>
868</entry>
869 </row><row><entry
870 align="char">
871<para>__u64 *pts
872</para>
873</entry><entry
874 align="char">
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>
882</entry>
883 </row></tbody></tgroup></informaltable>
884&return-value-dvb;
885
886</section><section id="AUDIO_GET_STATUS"
887role="subsection"><title>AUDIO_GET_STATUS</title>
888<para>DESCRIPTION
889</para>
890<informaltable><tgroup cols="1"><tbody><row><entry
891 align="char">
892<para>This ioctl call asks the Audio Device to return the current state of the Audio
893 Device.</para>
894</entry>
895 </row></tbody></tgroup></informaltable>
896<para>SYNOPSIS
897</para>
898<informaltable><tgroup cols="1"><tbody><row><entry
899 align="char">
900<para>int ioctl(int fd, int request = AUDIO_GET_STATUS,
901 struct audio_status &#x22C6;status);</para>
902</entry>
903 </row></tbody></tgroup></informaltable>
904<para>PARAMETERS
905</para>
906<informaltable><tgroup cols="2"><tbody><row><entry
907 align="char">
908<para>int fd</para>
909</entry><entry
910 align="char">
911<para>File descriptor returned by a previous call to open().</para>
912</entry>
913 </row><row><entry
914 align="char">
915<para>int request</para>
916</entry><entry
917 align="char">
918<para>Equals AUDIO_GET_STATUS for this command.</para>
919</entry>
920 </row><row><entry
921 align="char">
922<para>struct audio_status
923 *status</para>
924</entry><entry
925 align="char">
926<para>Returns the current state of Audio Device.</para>
927</entry>
928 </row></tbody></tgroup></informaltable>
929&return-value-dvb;
930
931</section><section id="AUDIO_GET_CAPABILITIES"
932role="subsection"><title>AUDIO_GET_CAPABILITIES</title>
933<para>DESCRIPTION
934</para>
935<informaltable><tgroup cols="1"><tbody><row><entry
936 align="char">
937<para>This ioctl call asks the Audio Device to tell us about the decoding capabilities
938 of the audio hardware.</para>
939</entry>
940 </row></tbody></tgroup></informaltable>
941<para>SYNOPSIS
942</para>
943<informaltable><tgroup cols="1"><tbody><row><entry
944 align="char">
945<para>int ioctl(int fd, int request =
946 AUDIO_GET_CAPABILITIES, unsigned int &#x22C6;cap);</para>
947</entry>
948 </row></tbody></tgroup></informaltable>
949<para>PARAMETERS
950</para>
951<informaltable><tgroup cols="2"><tbody><row><entry
952 align="char">
953<para>int fd</para>
954</entry><entry
955 align="char">
956<para>File descriptor returned by a previous call to open().</para>
957</entry>
958 </row><row><entry
959 align="char">
960<para>int request</para>
961</entry><entry
962 align="char">
963<para>Equals AUDIO_GET_CAPABILITIES for this
964 command.</para>
965</entry>
966 </row><row><entry
967 align="char">
968<para>unsigned int *cap</para>
969</entry><entry
970 align="char">
971<para>Returns a bit array of supported sound formats.</para>
972</entry>
973 </row></tbody></tgroup></informaltable>
974&return-value-dvb;
975
976</section><section id="AUDIO_CLEAR_BUFFER"
977role="subsection"><title>AUDIO_CLEAR_BUFFER</title>
978<para>DESCRIPTION
979</para>
980<informaltable><tgroup cols="1"><tbody><row><entry
981 align="char">
982<para>This ioctl call asks the Audio Device to clear all software and hardware buffers
983 of the audio decoder device.</para>
984</entry>
985 </row></tbody></tgroup></informaltable>
986<para>SYNOPSIS
987</para>
988<informaltable><tgroup cols="1"><tbody><row><entry
989 align="char">
990<para>int ioctl(int fd, int request = AUDIO_CLEAR_BUFFER);</para>
991</entry>
992 </row></tbody></tgroup></informaltable>
993<para>PARAMETERS
994</para>
995<informaltable><tgroup cols="2"><tbody><row><entry
996 align="char">
997<para>int fd</para>
998</entry><entry
999 align="char">
1000<para>File descriptor returned by a previous call to open().</para>
1001</entry>
1002 </row><row><entry
1003 align="char">
1004<para>int request</para>
1005</entry><entry
1006 align="char">
1007<para>Equals AUDIO_CLEAR_BUFFER for this command.</para>
1008</entry>
1009 </row></tbody></tgroup></informaltable>
1010&return-value-dvb;
1011
1012</section><section id="AUDIO_SET_ID"
1013role="subsection"><title>AUDIO_SET_ID</title>
1014<para>DESCRIPTION
1015</para>
1016<informaltable><tgroup cols="1"><tbody><row><entry
1017 align="char">
1018<para>This ioctl selects which sub-stream is to be decoded if a program or system
1019 stream is sent to the video device. If no audio stream type is set the id has to be
1020 in [0xC0,0xDF] for MPEG sound, in [0x80,0x87] for AC3 and in [0xA0,0xA7]
1021 for LPCM. More specifications may follow for other stream types. If the stream
1022 type is set the id just specifies the substream id of the audio stream and only
1023 the first 5 bits are recognized.</para>
1024</entry>
1025 </row></tbody></tgroup></informaltable>
1026<para>SYNOPSIS
1027</para>
1028<informaltable><tgroup cols="1"><tbody><row><entry
1029 align="char">
1030<para>int ioctl(int fd, int request = AUDIO_SET_ID, int
1031 id);</para>
1032</entry>
1033 </row></tbody></tgroup></informaltable>
1034<para>PARAMETERS
1035</para>
1036<informaltable><tgroup cols="2"><tbody><row><entry
1037 align="char">
1038<para>int fd</para>
1039</entry><entry
1040 align="char">
1041<para>File descriptor returned by a previous call to open().</para>
1042</entry>
1043 </row><row><entry
1044 align="char">
1045<para>int request</para>
1046</entry><entry
1047 align="char">
1048<para>Equals AUDIO_SET_ID for this command.</para>
1049</entry>
1050 </row><row><entry
1051 align="char">
1052<para>int id</para>
1053</entry><entry
1054 align="char">
1055<para>audio sub-stream id</para>
1056</entry>
1057 </row></tbody></tgroup></informaltable>
1058&return-value-dvb;
1059
1060</section><section id="AUDIO_SET_MIXER"
1061role="subsection"><title>AUDIO_SET_MIXER</title>
1062<para>DESCRIPTION
1063</para>
1064<informaltable><tgroup cols="1"><tbody><row><entry
1065 align="char">
1066<para>This ioctl lets you adjust the mixer settings of the audio decoder.</para>
1067</entry>
1068 </row></tbody></tgroup></informaltable>
1069<para>SYNOPSIS
1070</para>
1071<informaltable><tgroup cols="1"><tbody><row><entry
1072 align="char">
1073<para>int ioctl(int fd, int request = AUDIO_SET_MIXER,
1074 audio_mixer_t &#x22C6;mix);</para>
1075</entry>
1076 </row></tbody></tgroup></informaltable>
1077<para>PARAMETERS
1078</para>
1079<informaltable><tgroup cols="2"><tbody><row><entry
1080 align="char">
1081<para>int fd</para>
1082</entry><entry
1083 align="char">
1084<para>File descriptor returned by a previous call to open().</para>
1085</entry>
1086 </row><row><entry
1087 align="char">
1088<para>int request</para>
1089</entry><entry
1090 align="char">
1091<para>Equals AUDIO_SET_ID for this command.</para>
1092</entry>
1093 </row><row><entry
1094 align="char">
1095<para>audio_mixer_t *mix</para>
1096</entry><entry
1097 align="char">
1098<para>mixer settings.</para>
1099</entry>
1100 </row></tbody></tgroup></informaltable>
1101&return-value-dvb;
1102
1103</section><section id="AUDIO_SET_STREAMTYPE"
1104role="subsection"><title>AUDIO_SET_STREAMTYPE</title>
1105<para>DESCRIPTION
1106</para>
1107<informaltable><tgroup cols="1"><tbody><row><entry
1108 align="char">
1109<para>This ioctl tells the driver which kind of audio stream to expect. This is useful
1110 if the stream offers several audio sub-streams like LPCM and AC3.</para>
1111</entry>
1112 </row></tbody></tgroup></informaltable>
1113<para>SYNOPSIS
1114</para>
1115<informaltable><tgroup cols="1"><tbody><row><entry
1116 align="char">
1117<para>int ioctl(fd, int request = AUDIO_SET_STREAMTYPE,
1118 int type);</para>
1119</entry>
1120 </row></tbody></tgroup></informaltable>
1121<para>PARAMETERS
1122</para>
1123<informaltable><tgroup cols="2"><tbody><row><entry
1124 align="char">
1125<para>int fd</para>
1126</entry><entry
1127 align="char">
1128<para>File descriptor returned by a previous call to open().</para>
1129</entry>
1130 </row><row><entry
1131 align="char">
1132<para>int request</para>
1133</entry><entry
1134 align="char">
1135<para>Equals AUDIO_SET_STREAMTYPE for this
1136 command.</para>
1137</entry>
1138 </row><row><entry
1139 align="char">
1140<para>int type</para>
1141</entry><entry
1142 align="char">
1143<para>stream type</para>
1144</entry>
1145 </row></tbody></tgroup></informaltable>
1146&return-value-dvb;
1147<informaltable><tgroup cols="2"><tbody><row><entry
1148 align="char">
1149<para>EINVAL</para>
1150</entry><entry
1151 align="char">
1152<para>type is not a valid or supported stream type.</para>
1153</entry>
1154 </row></tbody></tgroup></informaltable>
1155
1156</section><section id="AUDIO_SET_EXT_ID"
1157role="subsection"><title>AUDIO_SET_EXT_ID</title>
1158<para>DESCRIPTION
1159</para>
1160<informaltable><tgroup cols="1"><tbody><row><entry
1161 align="char">
1162<para>This ioctl can be used to set the extension id for MPEG streams in DVD
1163 playback. Only the first 3 bits are recognized.</para>
1164</entry>
1165 </row></tbody></tgroup></informaltable>
1166<para>SYNOPSIS
1167</para>
1168<informaltable><tgroup cols="1"><tbody><row><entry
1169 align="char">
1170<para>int ioctl(fd, int request = AUDIO_SET_EXT_ID, int
1171 id);</para>
1172</entry>
1173 </row></tbody></tgroup></informaltable>
1174<para>PARAMETERS
1175</para>
1176<informaltable><tgroup cols="2"><tbody><row><entry
1177 align="char">
1178<para>int fd</para>
1179</entry><entry
1180 align="char">
1181<para>File descriptor returned by a previous call to open().</para>
1182</entry>
1183 </row><row><entry
1184 align="char">
1185<para>int request</para>
1186</entry><entry
1187 align="char">
1188<para>Equals AUDIO_SET_EXT_ID for this command.</para>
1189</entry>
1190 </row><row><entry
1191 align="char">
1192<para>int id</para>
1193</entry><entry
1194 align="char">
1195<para>audio sub_stream_id</para>
1196</entry>
1197 </row></tbody></tgroup></informaltable>
1198&return-value-dvb;
1199<informaltable><tgroup cols="2"><tbody><row><entry
1200 align="char">
1201<para>EINVAL</para>
1202</entry><entry
1203 align="char">
1204<para>id is not a valid id.</para>
1205</entry>
1206 </row></tbody></tgroup></informaltable>
1207
1208</section><section id="AUDIO_SET_ATTRIBUTES"
1209role="subsection"><title>AUDIO_SET_ATTRIBUTES</title>
1210<para>DESCRIPTION
1211</para>
1212<informaltable><tgroup cols="1"><tbody><row><entry
1213 align="char">
1214<para>This ioctl is intended for DVD playback and allows you to set certain
1215 information about the audio stream.</para>
1216</entry>
1217 </row></tbody></tgroup></informaltable>
1218<para>SYNOPSIS
1219</para>
1220<informaltable><tgroup cols="1"><tbody><row><entry
1221 align="char">
1222<para>int ioctl(fd, int request = AUDIO_SET_ATTRIBUTES,
1223 audio_attributes_t attr );</para>
1224</entry>
1225 </row></tbody></tgroup></informaltable>
1226<para>PARAMETERS
1227</para>
1228<informaltable><tgroup cols="2"><tbody><row><entry
1229 align="char">
1230<para>int fd</para>
1231</entry><entry
1232 align="char">
1233<para>File descriptor returned by a previous call to open().</para>
1234</entry>
1235 </row><row><entry
1236 align="char">
1237<para>int request</para>
1238</entry><entry
1239 align="char">
1240<para>Equals AUDIO_SET_ATTRIBUTES for this command.</para>
1241</entry>
1242 </row><row><entry
1243 align="char">
1244<para>audio_attributes_t
1245 attr</para>
1246</entry><entry
1247 align="char">
1248<para>audio attributes according to section ??</para>
1249</entry>
1250 </row></tbody></tgroup></informaltable>
1251&return-value-dvb;
1252<informaltable><tgroup cols="2"><tbody><row><entry
1253 align="char">
1254<para>EINVAL</para>
1255</entry><entry
1256 align="char">
1257<para>attr is not a valid or supported attribute setting.</para>
1258</entry>
1259 </row></tbody></tgroup></informaltable>
1260
1261</section><section id="AUDIO_SET_KARAOKE"
1262role="subsection"><title>AUDIO_SET_KARAOKE</title>
1263<para>DESCRIPTION
1264</para>
1265<informaltable><tgroup cols="1"><tbody><row><entry
1266 align="char">
1267<para>This ioctl allows one to set the mixer settings for a karaoke DVD.</para>
1268</entry>
1269 </row></tbody></tgroup></informaltable>
1270<para>SYNOPSIS
1271</para>
1272<informaltable><tgroup cols="1"><tbody><row><entry
1273 align="char">
1274<para>int ioctl(fd, int request = AUDIO_SET_KARAOKE,
1275 audio_karaoke_t &#x22C6;karaoke);</para>
1276</entry>
1277 </row></tbody></tgroup></informaltable>
1278<para>PARAMETERS
1279</para>
1280<informaltable><tgroup cols="2"><tbody><row><entry
1281 align="char">
1282<para>int fd</para>
1283</entry><entry
1284 align="char">
1285<para>File descriptor returned by a previous call to open().</para>
1286</entry>
1287 </row><row><entry
1288 align="char">
1289<para>int request</para>
1290</entry><entry
1291 align="char">
1292<para>Equals AUDIO_SET_KARAOKE for this
1293 command.</para>
1294</entry>
1295 </row><row><entry
1296 align="char">
1297<para>audio_karaoke_t
1298 *karaoke</para>
1299</entry><entry
1300 align="char">
1301<para>karaoke settings according to section ??.</para>
1302</entry>
1303 </row></tbody></tgroup></informaltable>
1304&return-value-dvb;
1305<informaltable><tgroup cols="2"><tbody><row><entry
1306 align="char">
1307<para>EINVAL</para>
1308</entry><entry
1309 align="char">
1310<para>karaoke is not a valid or supported karaoke setting.</para>
1311</entry>
1312 </row></tbody></tgroup></informaltable>
1313 </section>
1314</section>
diff --git a/Documentation/DocBook/media/dvb/ca.xml b/Documentation/DocBook/media/dvb/ca.xml
deleted file mode 100644
index d0b07e763908..000000000000
--- a/Documentation/DocBook/media/dvb/ca.xml
+++ /dev/null
@@ -1,582 +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<constant>/dev/dvb/adapter?/ca?</constant>. Data types and and ioctl definitions can be accessed by
4including <constant>linux/dvb/ca.h</constant> 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/media/dvb/demux.xml b/Documentation/DocBook/media/dvb/demux.xml
deleted file mode 100644
index 34f2fb1cd601..000000000000
--- a/Documentation/DocBook/media/dvb/demux.xml
+++ /dev/null
@@ -1,1162 +0,0 @@
1<title>DVB Demux Device</title>
2
3<para>The DVB demux device controls the filters of the DVB hardware/software. It can be
4accessed through <constant>/dev/adapter?/demux?</constant>. Data types and and ioctl definitions can be
5accessed by including <constant>linux/dvb/dmx.h</constant> in your application.
6</para>
7<section id="dmx_types">
8<title>Demux Data Types</title>
9
10<section id="dmx-output-t">
11<title>Output for the demux</title>
12
13<table pgwide="1" frame="none" id="dmx-output">
14 <title>enum dmx_output</title>
15 <tgroup cols="2">
16 &cs-def;
17 <thead>
18 <row>
19 <entry>ID</entry>
20 <entry>Description</entry>
21 </row>
22 </thead>
23 <tbody valign="top">
24 <row>
25 <entry align="char" id="DMX-OUT-DECODER">DMX_OUT_DECODER</entry>
26 <entry>Streaming directly to decoder.</entry>
27 </row><row>
28 <entry align="char" id="DMX-OUT-TAP">DMX_OUT_TAP</entry>
29 <entry>Output going to a memory buffer (to be retrieved via the
30 read command). Delivers the stream output to the demux
31 device on which the ioctl is called.</entry>
32 </row><row>
33 <entry align="char" id="DMX-OUT-TS-TAP">DMX_OUT_TS_TAP</entry>
34 <entry>Output multiplexed into a new TS (to be retrieved by
35 reading from the logical DVR device). Routes output to the
36 logical DVR device <constant>/dev/dvb/adapter?/dvr?</constant>,
37 which delivers a TS multiplexed from all filters for which
38 <constant>DMX_OUT_TS_TAP</constant> was specified.</entry>
39 </row><row>
40 <entry align="char" id="DMX-OUT-TSDEMUX-TAP">DMX_OUT_TSDEMUX_TAP</entry>
41 <entry>Like &DMX-OUT-TS-TAP; but retrieved from the DMX
42 device.</entry>
43 </row>
44 </tbody>
45 </tgroup>
46</table>
47
48</section>
49
50<section id="dmx-input-t">
51<title>dmx_input_t</title>
52<programlisting>
53typedef enum
54{
55 DMX_IN_FRONTEND, /&#x22C6; Input from a front-end device. &#x22C6;/
56 DMX_IN_DVR /&#x22C6; Input from the logical DVR device. &#x22C6;/
57} dmx_input_t;
58</programlisting>
59</section>
60
61<section id="dmx-pes-type-t">
62<title>dmx_pes_type_t</title>
63<programlisting>
64typedef enum
65{
66 DMX_PES_AUDIO0,
67 DMX_PES_VIDEO0,
68 DMX_PES_TELETEXT0,
69 DMX_PES_SUBTITLE0,
70 DMX_PES_PCR0,
71
72 DMX_PES_AUDIO1,
73 DMX_PES_VIDEO1,
74 DMX_PES_TELETEXT1,
75 DMX_PES_SUBTITLE1,
76 DMX_PES_PCR1,
77
78 DMX_PES_AUDIO2,
79 DMX_PES_VIDEO2,
80 DMX_PES_TELETEXT2,
81 DMX_PES_SUBTITLE2,
82 DMX_PES_PCR2,
83
84 DMX_PES_AUDIO3,
85 DMX_PES_VIDEO3,
86 DMX_PES_TELETEXT3,
87 DMX_PES_SUBTITLE3,
88 DMX_PES_PCR3,
89
90 DMX_PES_OTHER
91} dmx_pes_type_t;
92</programlisting>
93</section>
94
95<section id="dmx-filter">
96<title>struct dmx_filter</title>
97 <programlisting>
98 typedef struct dmx_filter
99{
100 __u8 filter[DMX_FILTER_SIZE];
101 __u8 mask[DMX_FILTER_SIZE];
102 __u8 mode[DMX_FILTER_SIZE];
103} dmx_filter_t;
104</programlisting>
105</section>
106
107<section id="dmx-sct-filter-params">
108<title>struct dmx_sct_filter_params</title>
109<programlisting>
110struct dmx_sct_filter_params
111{
112 __u16 pid;
113 dmx_filter_t filter;
114 __u32 timeout;
115 __u32 flags;
116#define DMX_CHECK_CRC 1
117#define DMX_ONESHOT 2
118#define DMX_IMMEDIATE_START 4
119#define DMX_KERNEL_CLIENT 0x8000
120};
121</programlisting>
122</section>
123
124<section id="dmx-pes-filter-params">
125<title>struct dmx_pes_filter_params</title>
126<programlisting>
127struct dmx_pes_filter_params
128{
129 __u16 pid;
130 dmx_input_t input;
131 dmx_output_t output;
132 dmx_pes_type_t pes_type;
133 __u32 flags;
134};
135</programlisting>
136</section>
137
138<section id="dmx-event">
139<title>struct dmx_event</title>
140 <programlisting>
141 struct dmx_event
142 {
143 dmx_event_t event;
144 time_t timeStamp;
145 union
146 {
147 dmx_scrambling_status_t scrambling;
148 } u;
149 };
150</programlisting>
151</section>
152
153<section id="dmx-stc">
154<title>struct dmx_stc</title>
155<programlisting>
156struct dmx_stc {
157 unsigned int num; /&#x22C6; input : which STC? 0..N &#x22C6;/
158 unsigned int base; /&#x22C6; output: divisor for stc to get 90 kHz clock &#x22C6;/
159 __u64 stc; /&#x22C6; output: stc in 'base'&#x22C6;90 kHz units &#x22C6;/
160};
161</programlisting>
162</section>
163
164<section id="dmx-caps">
165<title>struct dmx_caps</title>
166<programlisting>
167 typedef struct dmx_caps {
168 __u32 caps;
169 int num_decoders;
170} dmx_caps_t;
171</programlisting>
172</section>
173
174<section id="dmx-source-t">
175<title>enum dmx_source_t</title>
176<programlisting>
177typedef enum {
178 DMX_SOURCE_FRONT0 = 0,
179 DMX_SOURCE_FRONT1,
180 DMX_SOURCE_FRONT2,
181 DMX_SOURCE_FRONT3,
182 DMX_SOURCE_DVR0 = 16,
183 DMX_SOURCE_DVR1,
184 DMX_SOURCE_DVR2,
185 DMX_SOURCE_DVR3
186} dmx_source_t;
187</programlisting>
188</section>
189
190</section>
191<section id="dmx_fcalls">
192<title>Demux Function Calls</title>
193
194<section id="dmx_fopen">
195<title>open()</title>
196<para>DESCRIPTION
197</para>
198<informaltable><tgroup cols="1"><tbody><row><entry
199 align="char">
200<para>This system call, used with a device name of /dev/dvb/adapter0/demux0,
201 allocates a new filter and returns a handle which can be used for subsequent
202 control of that filter. This call has to be made for each filter to be used, i.e. every
203 returned file descriptor is a reference to a single filter. /dev/dvb/adapter0/dvr0
204 is a logical device to be used for retrieving Transport Streams for digital
205 video recording. When reading from this device a transport stream containing
206 the packets from all PES filters set in the corresponding demux device
207 (/dev/dvb/adapter0/demux0) having the output set to DMX_OUT_TS_TAP. A
208 recorded Transport Stream is replayed by writing to this device. </para>
209<para>The significance of blocking or non-blocking mode is described in the
210 documentation for functions where there is a difference. It does not affect the
211 semantics of the open() call itself. A device opened in blocking mode can later
212 be put into non-blocking mode (and vice versa) using the F_SETFL command
213 of the fcntl system call.</para>
214</entry>
215 </row></tbody></tgroup></informaltable>
216<para>SYNOPSIS
217</para>
218<informaltable><tgroup cols="1"><tbody><row><entry
219 align="char">
220<para>int open(const char &#x22C6;deviceName, int flags);</para>
221</entry>
222 </row></tbody></tgroup></informaltable>
223<para>PARAMETERS
224</para>
225<informaltable><tgroup cols="2"><tbody><row><entry
226 align="char">
227<para>const char
228 *deviceName</para>
229</entry><entry
230 align="char">
231<para>Name of demux device.</para>
232</entry>
233 </row><row><entry
234 align="char">
235<para>int flags</para>
236</entry><entry
237 align="char">
238<para>A bit-wise OR of the following flags:</para>
239</entry>
240 </row><row><entry
241 align="char">
242</entry><entry
243 align="char">
244<para>O_RDWR read/write access</para>
245</entry>
246 </row><row><entry
247 align="char">
248</entry><entry
249 align="char">
250<para>O_NONBLOCK open in non-blocking mode</para>
251</entry>
252 </row><row><entry
253 align="char">
254</entry><entry
255 align="char">
256<para>(blocking mode is the default)</para>
257</entry>
258 </row></tbody></tgroup></informaltable>
259<para>RETURN VALUE</para>
260<informaltable><tgroup cols="2"><tbody><row><entry
261 align="char">
262<para>ENODEV</para>
263</entry><entry
264 align="char">
265<para>Device driver not loaded/available.</para>
266</entry>
267 </row><row><entry
268 align="char">
269<para>EINVAL</para>
270</entry><entry
271 align="char">
272<para>Invalid argument.</para>
273</entry>
274 </row><row><entry
275 align="char">
276<para>EMFILE</para>
277</entry><entry
278 align="char">
279<para>&#8220;Too many open files&#8221;, i.e. no more filters available.</para>
280</entry>
281 </row><row><entry
282 align="char">
283<para>ENOMEM</para>
284</entry><entry
285 align="char">
286<para>The driver failed to allocate enough memory.</para>
287</entry>
288 </row></tbody></tgroup></informaltable>
289</section>
290
291<section id="dmx_fclose">
292<title>close()</title>
293<para>DESCRIPTION
294</para>
295<informaltable><tgroup cols="1"><tbody><row><entry
296 align="char">
297<para>This system call deactivates and deallocates a filter that was previously
298 allocated via the open() call.</para>
299</entry>
300 </row></tbody></tgroup></informaltable>
301<para>SYNOPSIS
302</para>
303<informaltable><tgroup cols="1"><tbody><row><entry
304 align="char">
305<para>int close(int fd);</para>
306</entry>
307 </row></tbody></tgroup></informaltable>
308<para>PARAMETERS
309</para>
310<informaltable><tgroup cols="2"><tbody><row><entry
311 align="char">
312<para>int fd</para>
313</entry><entry
314 align="char">
315<para>File descriptor returned by a previous call to open().</para>
316</entry>
317 </row></tbody></tgroup></informaltable>
318<para>RETURN VALUE</para>
319<informaltable><tgroup cols="2"><tbody><row><entry
320 align="char">
321<para>EBADF</para>
322</entry><entry
323 align="char">
324<para>fd is not a valid open file descriptor.</para>
325</entry>
326 </row></tbody></tgroup></informaltable>
327</section>
328
329<section id="dmx_fread">
330<title>read()</title>
331<para>DESCRIPTION
332</para>
333<informaltable><tgroup cols="1"><tbody><row><entry
334 align="char">
335<para>This system call returns filtered data, which might be section or PES data. The
336 filtered data is transferred from the driver&#8217;s internal circular buffer to buf. The
337 maximum amount of data to be transferred is implied by count.</para>
338</entry>
339 </row><row><entry
340 align="char">
341<para>When returning section data the driver always tries to return a complete single
342 section (even though buf would provide buffer space for more data). If the size
343 of the buffer is smaller than the section as much as possible will be returned,
344 and the remaining data will be provided in subsequent calls.</para>
345</entry>
346 </row><row><entry
347 align="char">
348<para>The size of the internal buffer is 2 * 4096 bytes (the size of two maximum
349 sized sections) by default. The size of this buffer may be changed by using the
350 DMX_SET_BUFFER_SIZE function. If the buffer is not large enough, or if
351 the read operations are not performed fast enough, this may result in a buffer
352 overflow error. In this case EOVERFLOW will be returned, and the circular
353 buffer will be emptied. This call is blocking if there is no data to return, i.e. the
354 process will be put to sleep waiting for data, unless the O_NONBLOCK flag
355 is specified.</para>
356</entry>
357 </row><row><entry
358 align="char">
359<para>Note that in order to be able to read, the filtering process has to be started
360 by defining either a section or a PES filter by means of the ioctl functions,
361 and then starting the filtering process via the DMX_START ioctl function
362 or by setting the DMX_IMMEDIATE_START flag. If the reading is done
363 from a logical DVR demux device, the data will constitute a Transport Stream
364 including the packets from all PES filters in the corresponding demux device
365 /dev/dvb/adapter0/demux0 having the output set to DMX_OUT_TS_TAP.</para>
366</entry>
367 </row></tbody></tgroup></informaltable>
368<para>SYNOPSIS
369</para>
370<informaltable><tgroup cols="1"><tbody><row><entry
371 align="char">
372<para>size_t read(int fd, void &#x22C6;buf, size_t count);</para>
373</entry>
374 </row></tbody></tgroup></informaltable>
375<para>PARAMETERS
376</para>
377<informaltable><tgroup cols="2"><tbody><row><entry
378 align="char">
379<para>int fd</para>
380</entry><entry
381 align="char">
382<para>File descriptor returned by a previous call to open().</para>
383</entry>
384 </row><row><entry
385 align="char">
386<para>void *buf</para>
387</entry><entry
388 align="char">
389<para>Pointer to the buffer to be used for returned filtered data.</para>
390</entry>
391 </row><row><entry
392 align="char">
393<para>size_t count</para>
394</entry><entry
395 align="char">
396<para>Size of buf.</para>
397</entry>
398 </row></tbody></tgroup></informaltable>
399<para>RETURN VALUE</para>
400<informaltable><tgroup cols="2"><tbody><row><entry
401 align="char">
402<para>EWOULDBLOCK</para>
403</entry><entry
404 align="char">
405<para>No data to return and O_NONBLOCK was specified.</para>
406</entry>
407 </row><row><entry
408 align="char">
409<para>EBADF</para>
410</entry><entry
411 align="char">
412<para>fd is not a valid open file descriptor.</para>
413</entry>
414 </row><row><entry
415 align="char">
416<para>ECRC</para>
417</entry><entry
418 align="char">
419<para>Last section had a CRC error - no data returned. The
420 buffer is flushed.</para>
421</entry>
422 </row><row><entry
423 align="char">
424<para>EOVERFLOW</para>
425</entry><entry
426 align="char">
427</entry>
428 </row><row><entry
429 align="char">
430</entry><entry
431 align="char">
432<para>The filtered data was not read from the buffer in due
433 time, resulting in non-read data being lost. The buffer is
434 flushed.</para>
435</entry>
436 </row><row><entry
437 align="char">
438<para>ETIMEDOUT</para>
439</entry><entry
440 align="char">
441<para>The section was not loaded within the stated timeout
442 period. See ioctl DMX_SET_FILTER for how to set a
443 timeout.</para>
444</entry>
445 </row><row><entry
446 align="char">
447<para>EFAULT</para>
448</entry><entry
449 align="char">
450<para>The driver failed to write to the callers buffer due to an
451 invalid *buf pointer.</para>
452</entry>
453 </row></tbody></tgroup></informaltable>
454</section>
455
456<section id="dmx_fwrite">
457<title>write()</title>
458<para>DESCRIPTION
459</para>
460<informaltable><tgroup cols="1"><tbody><row><entry
461 align="char">
462<para>This system call is only provided by the logical device /dev/dvb/adapter0/dvr0,
463 associated with the physical demux device that provides the actual DVR
464 functionality. It is used for replay of a digitally recorded Transport Stream.
465 Matching filters have to be defined in the corresponding physical demux
466 device, /dev/dvb/adapter0/demux0. The amount of data to be transferred is
467 implied by count.</para>
468</entry>
469 </row></tbody></tgroup></informaltable>
470<para>SYNOPSIS
471</para>
472<informaltable><tgroup cols="1"><tbody><row><entry
473 align="char">
474<para>ssize_t write(int fd, const void &#x22C6;buf, size_t
475 count);</para>
476</entry>
477 </row></tbody></tgroup></informaltable>
478<para>PARAMETERS
479</para>
480<informaltable><tgroup cols="2"><tbody><row><entry
481 align="char">
482<para>int fd</para>
483</entry><entry
484 align="char">
485<para>File descriptor returned by a previous call to open().</para>
486</entry>
487 </row><row><entry
488 align="char">
489<para>void *buf</para>
490</entry><entry
491 align="char">
492<para>Pointer to the buffer containing the Transport Stream.</para>
493</entry>
494 </row><row><entry
495 align="char">
496<para>size_t count</para>
497</entry><entry
498 align="char">
499<para>Size of buf.</para>
500</entry>
501 </row></tbody></tgroup></informaltable>
502<para>RETURN VALUE</para>
503<informaltable><tgroup cols="2"><tbody><row><entry
504 align="char">
505<para>EWOULDBLOCK</para>
506</entry><entry
507 align="char">
508<para>No data was written. This
509 might happen if O_NONBLOCK was specified and there
510 is no more buffer space available (if O_NONBLOCK is
511 not specified the function will block until buffer space is
512 available).</para>
513</entry>
514 </row><row><entry
515 align="char">
516<para>EBUSY</para>
517</entry><entry
518 align="char">
519<para>This error code indicates that there are conflicting
520 requests. The corresponding demux device is setup to
521 receive data from the front- end. Make sure that these
522 filters are stopped and that the filters with input set to
523 DMX_IN_DVR are started.</para>
524</entry>
525 </row><row><entry
526 align="char">
527<para>EBADF</para>
528</entry><entry
529 align="char">
530<para>fd is not a valid open file descriptor.</para>
531</entry>
532 </row></tbody></tgroup></informaltable>
533</section>
534
535<section id="DMX_START">
536<title>DMX_START</title>
537<para>DESCRIPTION
538</para>
539<informaltable><tgroup cols="1"><tbody><row><entry
540 align="char">
541<para>This ioctl call is used to start the actual filtering operation defined via the ioctl
542 calls DMX_SET_FILTER or DMX_SET_PES_FILTER.</para>
543</entry>
544 </row></tbody></tgroup></informaltable>
545<para>SYNOPSIS
546</para>
547<informaltable><tgroup cols="1"><tbody><row><entry
548 align="char">
549<para>int ioctl( int fd, int request = DMX_START);</para>
550</entry>
551 </row></tbody></tgroup></informaltable>
552<para>PARAMETERS
553</para>
554<informaltable><tgroup cols="2"><tbody><row><entry
555 align="char">
556<para>int fd</para>
557</entry><entry
558 align="char">
559<para>File descriptor returned by a previous call to open().</para>
560</entry>
561 </row><row><entry
562 align="char">
563<para>int request</para>
564</entry><entry
565 align="char">
566<para>Equals DMX_START for this command.</para>
567</entry>
568 </row></tbody></tgroup></informaltable>
569&return-value-dvb;
570<informaltable><tgroup cols="2"><tbody><row><entry
571 align="char">
572<para>EINVAL</para>
573</entry><entry
574 align="char">
575<para>Invalid argument, i.e. no filtering parameters provided via
576 the DMX_SET_FILTER or DMX_SET_PES_FILTER
577 functions.</para>
578</entry>
579 </row><row><entry
580 align="char">
581<para>EBUSY</para>
582</entry><entry
583 align="char">
584<para>This error code indicates that there are conflicting
585 requests. There are active filters filtering data from
586 another input source. Make sure that these filters are
587 stopped before starting this filter.</para>
588</entry>
589 </row></tbody></tgroup></informaltable>
590</section>
591
592<section id="DMX_STOP">
593<title>DMX_STOP</title>
594<para>DESCRIPTION
595</para>
596<informaltable><tgroup cols="1"><tbody><row><entry
597 align="char">
598<para>This ioctl call is used to stop the actual filtering operation defined via the
599 ioctl calls DMX_SET_FILTER or DMX_SET_PES_FILTER and started via
600 the DMX_START command.</para>
601</entry>
602 </row></tbody></tgroup></informaltable>
603<para>SYNOPSIS
604</para>
605<informaltable><tgroup cols="1"><tbody><row><entry
606 align="char">
607<para>int ioctl( int fd, int request = DMX_STOP);</para>
608</entry>
609 </row></tbody></tgroup></informaltable>
610<para>PARAMETERS
611</para>
612<informaltable><tgroup cols="2"><tbody><row><entry
613 align="char">
614<para>int fd</para>
615</entry><entry
616 align="char">
617<para>File descriptor returned by a previous call to open().</para>
618</entry>
619 </row><row><entry
620 align="char">
621<para>int request</para>
622</entry><entry
623 align="char">
624<para>Equals DMX_STOP for this command.</para>
625</entry>
626 </row></tbody></tgroup></informaltable>
627&return-value-dvb;
628</section>
629
630<section id="DMX_SET_FILTER">
631<title>DMX_SET_FILTER</title>
632<para>DESCRIPTION
633</para>
634<informaltable><tgroup cols="1"><tbody><row><entry
635 align="char">
636<para>This ioctl call sets up a filter according to the filter and mask parameters
637 provided. A timeout may be defined stating number of seconds to wait for a
638 section to be loaded. A value of 0 means that no timeout should be applied.
639 Finally there is a flag field where it is possible to state whether a section should
640 be CRC-checked, whether the filter should be a &#8221;one-shot&#8221; filter, i.e. if the
641 filtering operation should be stopped after the first section is received, and
642 whether the filtering operation should be started immediately (without waiting
643 for a DMX_START ioctl call). If a filter was previously set-up, this filter will
644 be canceled, and the receive buffer will be flushed.</para>
645</entry>
646 </row></tbody></tgroup></informaltable>
647<para>SYNOPSIS
648</para>
649<informaltable><tgroup cols="1"><tbody><row><entry
650 align="char">
651<para>int ioctl( int fd, int request = DMX_SET_FILTER,
652 struct dmx_sct_filter_params &#x22C6;params);</para>
653</entry>
654 </row></tbody></tgroup></informaltable>
655<para>PARAMETERS
656</para>
657<informaltable><tgroup cols="2"><tbody><row><entry
658 align="char">
659<para>int fd</para>
660</entry><entry
661 align="char">
662<para>File descriptor returned by a previous call to open().</para>
663</entry>
664 </row><row><entry
665 align="char">
666<para>int request</para>
667</entry><entry
668 align="char">
669<para>Equals DMX_SET_FILTER for this command.</para>
670</entry>
671 </row><row><entry
672 align="char">
673<para>struct
674 dmx_sct_filter_params
675 *params</para>
676</entry><entry
677 align="char">
678<para>Pointer to structure containing filter parameters.</para>
679</entry>
680 </row></tbody></tgroup></informaltable>
681&return-value-dvb;
682</section>
683
684<section id="DMX_SET_PES_FILTER">
685<title>DMX_SET_PES_FILTER</title>
686<para>DESCRIPTION
687</para>
688<informaltable><tgroup cols="1"><tbody><row><entry
689 align="char">
690<para>This ioctl call sets up a PES filter according to the parameters provided. By a
691 PES filter is meant a filter that is based just on the packet identifier (PID), i.e.
692 no PES header or payload filtering capability is supported.</para>
693</entry>
694 </row><row><entry
695 align="char">
696<para>The transport stream destination for the filtered output may be set. Also the
697 PES type may be stated in order to be able to e.g. direct a video stream directly
698 to the video decoder. Finally there is a flag field where it is possible to state
699 whether the filtering operation should be started immediately (without waiting
700 for a DMX_START ioctl call). If a filter was previously set-up, this filter will
701 be cancelled, and the receive buffer will be flushed.</para>
702</entry>
703 </row></tbody></tgroup></informaltable>
704<para>SYNOPSIS
705</para>
706<informaltable><tgroup cols="1"><tbody><row><entry
707 align="char">
708<para>int ioctl( int fd, int request = DMX_SET_PES_FILTER,
709 struct dmx_pes_filter_params &#x22C6;params);</para>
710</entry>
711 </row></tbody></tgroup></informaltable>
712<para>PARAMETERS
713</para>
714<informaltable><tgroup cols="2"><tbody><row><entry
715 align="char">
716<para>int fd</para>
717</entry><entry
718 align="char">
719<para>File descriptor returned by a previous call to open().</para>
720</entry>
721 </row><row><entry
722 align="char">
723<para>int request</para>
724</entry><entry
725 align="char">
726<para>Equals DMX_SET_PES_FILTER for this command.</para>
727</entry>
728 </row><row><entry
729 align="char">
730<para>struct
731 dmx_pes_filter_params
732 *params</para>
733</entry><entry
734 align="char">
735<para>Pointer to structure containing filter parameters.</para>
736</entry>
737 </row></tbody></tgroup></informaltable>
738&return-value-dvb;
739<informaltable><tgroup cols="2"><tbody><row><entry
740 align="char">
741<para>EBUSY</para>
742</entry><entry
743 align="char">
744<para>This error code indicates that there are conflicting
745 requests. There are active filters filtering data from
746 another input source. Make sure that these filters are
747 stopped before starting this filter.</para>
748</entry>
749 </row></tbody></tgroup></informaltable>
750</section>
751
752<section id="DMX_SET_BUFFER_SIZE">
753<title>DMX_SET_BUFFER_SIZE</title>
754<para>DESCRIPTION
755</para>
756<informaltable><tgroup cols="1"><tbody><row><entry
757 align="char">
758<para>This ioctl call is used to set the size of the circular buffer used for filtered data.
759 The default size is two maximum sized sections, i.e. if this function is not called
760 a buffer size of 2 * 4096 bytes will be used.</para>
761</entry>
762 </row></tbody></tgroup></informaltable>
763<para>SYNOPSIS
764</para>
765<informaltable><tgroup cols="1"><tbody><row><entry
766 align="char">
767<para>int ioctl( int fd, int request =
768 DMX_SET_BUFFER_SIZE, unsigned long size);</para>
769</entry>
770 </row></tbody></tgroup></informaltable>
771<para>PARAMETERS
772</para>
773<informaltable><tgroup cols="2"><tbody><row><entry
774 align="char">
775<para>int fd</para>
776</entry><entry
777 align="char">
778<para>File descriptor returned by a previous call to open().</para>
779</entry>
780 </row><row><entry
781 align="char">
782<para>int request</para>
783</entry><entry
784 align="char">
785<para>Equals DMX_SET_BUFFER_SIZE for this command.</para>
786</entry>
787 </row><row><entry
788 align="char">
789<para>unsigned long size</para>
790</entry><entry
791 align="char">
792<para>Size of circular buffer.</para>
793</entry>
794 </row></tbody></tgroup></informaltable>
795&return-value-dvb;
796</section>
797
798<section id="DMX_GET_EVENT">
799<title>DMX_GET_EVENT</title>
800<para>DESCRIPTION
801</para>
802<informaltable><tgroup cols="1"><tbody><row><entry
803 align="char">
804<para>This ioctl call returns an event if available. If an event is not available,
805 the behavior depends on whether the device is in blocking or non-blocking
806 mode. In the latter case, the call fails immediately with errno set to
807 EWOULDBLOCK. In the former case, the call blocks until an event becomes
808 available.</para>
809</entry>
810 </row><row><entry
811 align="char">
812<para>The standard Linux poll() and/or select() system calls can be used with the
813 device file descriptor to watch for new events. For select(), the file descriptor
814 should be included in the exceptfds argument, and for poll(), POLLPRI should
815 be specified as the wake-up condition. Only the latest event for each filter is
816 saved.</para>
817</entry>
818 </row></tbody></tgroup></informaltable>
819<para>SYNOPSIS
820</para>
821<informaltable><tgroup cols="1"><tbody><row><entry
822 align="char">
823<para>int ioctl( int fd, int request = DMX_GET_EVENT,
824 struct dmx_event &#x22C6;ev);</para>
825</entry>
826 </row></tbody></tgroup></informaltable>
827<para>PARAMETERS
828</para>
829<informaltable><tgroup cols="2"><tbody><row><entry
830 align="char">
831<para>int fd</para>
832</entry><entry
833 align="char">
834<para>File descriptor returned by a previous call to open().</para>
835</entry>
836 </row><row><entry
837 align="char">
838<para>int request</para>
839</entry><entry
840 align="char">
841<para>Equals DMX_GET_EVENT for this command.</para>
842</entry>
843 </row><row><entry
844 align="char">
845<para>struct dmx_event *ev</para>
846</entry><entry
847 align="char">
848<para>Pointer to the location where the event is to be stored.</para>
849</entry>
850 </row></tbody></tgroup></informaltable>
851&return-value-dvb;
852<informaltable><tgroup cols="2"><tbody><row><entry
853 align="char">
854<para>EWOULDBLOCK</para>
855</entry><entry
856 align="char">
857<para>There is no event pending, and the device is in
858 non-blocking mode.</para>
859</entry>
860 </row></tbody></tgroup></informaltable>
861</section>
862
863<section id="DMX_GET_STC">
864<title>DMX_GET_STC</title>
865<para>DESCRIPTION
866</para>
867<informaltable><tgroup cols="1"><tbody><row><entry
868 align="char">
869<para>This ioctl call returns the current value of the system time counter (which is driven
870 by a PES filter of type DMX_PES_PCR). Some hardware supports more than one
871 STC, so you must specify which one by setting the num field of stc before the ioctl
872 (range 0...n). The result is returned in form of a ratio with a 64 bit numerator
873 and a 32 bit denominator, so the real 90kHz STC value is stc-&#x003E;stc /
874 stc-&#x003E;base
875 .</para>
876</entry>
877 </row></tbody></tgroup></informaltable>
878<para>SYNOPSIS
879</para>
880<informaltable><tgroup cols="1"><tbody><row><entry
881 align="char">
882<para>int ioctl( int fd, int request = DMX_GET_STC, struct
883 dmx_stc &#x22C6;stc);</para>
884</entry>
885 </row></tbody></tgroup></informaltable>
886<para>PARAMETERS
887</para>
888<informaltable><tgroup cols="2"><tbody><row><entry
889 align="char">
890<para>int fd</para>
891</entry><entry
892 align="char">
893<para>File descriptor returned by a previous call to open().</para>
894</entry>
895 </row><row><entry
896 align="char">
897<para>int request</para>
898</entry><entry
899 align="char">
900<para>Equals DMX_GET_STC for this command.</para>
901</entry>
902 </row><row><entry
903 align="char">
904<para>struct dmx_stc *stc</para>
905</entry><entry
906 align="char">
907<para>Pointer to the location where the stc is to be stored.</para>
908</entry>
909 </row></tbody></tgroup></informaltable>
910&return-value-dvb;
911<informaltable><tgroup cols="2"><tbody><row><entry
912 align="char">
913<para>EINVAL</para>
914</entry><entry
915 align="char">
916<para>Invalid stc number.</para>
917</entry>
918 </row></tbody></tgroup></informaltable>
919 </section>
920
921<section id="DMX_GET_PES_PIDS"
922role="subsection"><title>DMX_GET_PES_PIDS</title>
923<para>DESCRIPTION
924</para>
925<informaltable><tgroup cols="1"><tbody><row><entry
926 align="char">
927<para>This ioctl is undocumented. Documentation is welcome.</para>
928</entry>
929 </row></tbody></tgroup></informaltable>
930<para>SYNOPSIS
931</para>
932<informaltable><tgroup cols="1"><tbody><row><entry
933 align="char">
934<para>int ioctl(fd, int request = DMX_GET_PES_PIDS,
935 __u16[5]);</para>
936</entry>
937 </row></tbody></tgroup></informaltable>
938<para>PARAMETERS
939</para>
940<informaltable><tgroup cols="2"><tbody><row><entry
941 align="char">
942<para>int fd</para>
943</entry><entry
944 align="char">
945<para>File descriptor returned by a previous call to open().</para>
946</entry>
947 </row><row><entry
948 align="char">
949<para>int request</para>
950</entry><entry
951 align="char">
952<para>Equals DMX_GET_PES_PIDS for this command.</para>
953</entry>
954 </row><row><entry
955 align="char">
956<para>__u16[5]
957</para>
958</entry><entry
959 align="char">
960<para>Undocumented.</para>
961</entry>
962 </row></tbody></tgroup></informaltable>
963&return-value-dvb;
964</section>
965
966<section id="DMX_GET_CAPS"
967role="subsection"><title>DMX_GET_CAPS</title>
968<para>DESCRIPTION
969</para>
970<informaltable><tgroup cols="1"><tbody><row><entry
971 align="char">
972<para>This ioctl is undocumented. Documentation is welcome.</para>
973</entry>
974 </row></tbody></tgroup></informaltable>
975<para>SYNOPSIS
976</para>
977<informaltable><tgroup cols="1"><tbody><row><entry
978 align="char">
979<para>int ioctl(fd, int request = DMX_GET_CAPS,
980 dmx_caps_t *);</para>
981</entry>
982 </row></tbody></tgroup></informaltable>
983<para>PARAMETERS
984</para>
985<informaltable><tgroup cols="2"><tbody><row><entry
986 align="char">
987<para>int fd</para>
988</entry><entry
989 align="char">
990<para>File descriptor returned by a previous call to open().</para>
991</entry>
992 </row><row><entry
993 align="char">
994<para>int request</para>
995</entry><entry
996 align="char">
997<para>Equals DMX_GET_CAPS for this command.</para>
998</entry>
999 </row><row><entry
1000 align="char">
1001<para>dmx_caps_t *
1002</para>
1003</entry><entry
1004 align="char">
1005<para>Undocumented.</para>
1006</entry>
1007 </row></tbody></tgroup></informaltable>
1008&return-value-dvb;
1009</section>
1010
1011<section id="DMX_SET_SOURCE"
1012role="subsection"><title>DMX_SET_SOURCE</title>
1013<para>DESCRIPTION
1014</para>
1015<informaltable><tgroup cols="1"><tbody><row><entry
1016 align="char">
1017<para>This ioctl is undocumented. Documentation is welcome.</para>
1018</entry>
1019 </row></tbody></tgroup></informaltable>
1020<para>SYNOPSIS
1021</para>
1022<informaltable><tgroup cols="1"><tbody><row><entry
1023 align="char">
1024<para>int ioctl(fd, int request = DMX_SET_SOURCE,
1025 dmx_source_t *);</para>
1026</entry>
1027 </row></tbody></tgroup></informaltable>
1028<para>PARAMETERS
1029</para>
1030<informaltable><tgroup cols="2"><tbody><row><entry
1031 align="char">
1032<para>int fd</para>
1033</entry><entry
1034 align="char">
1035<para>File descriptor returned by a previous call to open().</para>
1036</entry>
1037 </row><row><entry
1038 align="char">
1039<para>int request</para>
1040</entry><entry
1041 align="char">
1042<para>Equals DMX_SET_SOURCE for this command.</para>
1043</entry>
1044 </row><row><entry
1045 align="char">
1046<para>dmx_source_t *
1047</para>
1048</entry><entry
1049 align="char">
1050<para>Undocumented.</para>
1051</entry>
1052 </row></tbody></tgroup></informaltable>
1053&return-value-dvb;
1054</section>
1055
1056<section id="DMX_ADD_PID"
1057role="subsection"><title>DMX_ADD_PID</title>
1058<para>DESCRIPTION
1059</para>
1060<informaltable><tgroup cols="1"><tbody><row><entry
1061 align="char">
1062<para>This ioctl call allows to add multiple PIDs to a transport stream filter
1063previously set up with DMX_SET_PES_FILTER and output equal to DMX_OUT_TSDEMUX_TAP.
1064</para></entry></row><row><entry align="char"><para>
1065It is used by readers of /dev/dvb/adapterX/demuxY.
1066</para></entry></row><row><entry align="char"><para>
1067It may be called at any time, i.e. before or after the first filter on the
1068shared file descriptor was started. It makes it possible to record multiple
1069services without the need to de-multiplex or re-multiplex TS packets.</para>
1070</entry>
1071 </row></tbody></tgroup></informaltable>
1072<para>SYNOPSIS
1073</para>
1074<informaltable><tgroup cols="1"><tbody><row><entry
1075 align="char">
1076<para>int ioctl(fd, int request = DMX_ADD_PID,
1077 __u16 *);</para>
1078</entry>
1079 </row></tbody></tgroup></informaltable>
1080<para>PARAMETERS
1081</para>
1082<informaltable><tgroup cols="2"><tbody><row><entry
1083 align="char">
1084<para>int fd</para>
1085</entry><entry
1086 align="char">
1087<para>File descriptor returned by a previous call to open().</para>
1088</entry>
1089 </row><row><entry
1090 align="char">
1091<para>int request</para>
1092</entry><entry
1093 align="char">
1094<para>Equals DMX_ADD_PID for this command.</para>
1095</entry>
1096 </row><row><entry
1097 align="char">
1098<para>__u16 *
1099</para>
1100</entry><entry
1101 align="char">
1102<para>PID number to be filtered.</para>
1103</entry>
1104 </row></tbody></tgroup></informaltable>
1105&return-value-dvb;
1106</section>
1107
1108<section id="DMX_REMOVE_PID"
1109role="subsection"><title>DMX_REMOVE_PID</title>
1110<para>DESCRIPTION
1111</para>
1112<informaltable><tgroup cols="1"><tbody><row><entry
1113 align="char">
1114<para>This ioctl call allows to remove a PID when multiple PIDs are set on a
1115transport stream filter, e. g. a filter previously set up with output equal to
1116DMX_OUT_TSDEMUX_TAP, created via either DMX_SET_PES_FILTER or DMX_ADD_PID.
1117</para></entry></row><row><entry align="char"><para>
1118It is used by readers of /dev/dvb/adapterX/demuxY.
1119</para></entry></row><row><entry align="char"><para>
1120It may be called at any time, i.e. before or after the first filter on the
1121shared file descriptor was started. It makes it possible to record multiple
1122services without the need to de-multiplex or re-multiplex TS packets.</para>
1123</entry>
1124 </row></tbody></tgroup></informaltable>
1125<para>SYNOPSIS
1126</para>
1127<informaltable><tgroup cols="1"><tbody><row><entry
1128 align="char">
1129<para>int ioctl(fd, int request = DMX_REMOVE_PID,
1130 __u16 *);</para>
1131</entry>
1132 </row></tbody></tgroup></informaltable>
1133<para>PARAMETERS
1134</para>
1135<informaltable><tgroup cols="2"><tbody><row><entry
1136 align="char">
1137<para>int fd</para>
1138</entry><entry
1139 align="char">
1140<para>File descriptor returned by a previous call to open().</para>
1141</entry>
1142 </row><row><entry
1143 align="char">
1144<para>int request</para>
1145</entry><entry
1146 align="char">
1147<para>Equals DMX_REMOVE_PID for this command.</para>
1148</entry>
1149 </row><row><entry
1150 align="char">
1151<para>__u16 *
1152</para>
1153</entry><entry
1154 align="char">
1155<para>PID of the PES filter to be removed.</para>
1156</entry>
1157 </row></tbody></tgroup></informaltable>
1158&return-value-dvb;
1159</section>
1160
1161
1162</section>
diff --git a/Documentation/DocBook/media/dvb/dvbapi.xml b/Documentation/DocBook/media/dvb/dvbapi.xml
deleted file mode 100644
index 8576481e20ae..000000000000
--- a/Documentation/DocBook/media/dvb/dvbapi.xml
+++ /dev/null
@@ -1,156 +0,0 @@
1<partinfo>
2<authorgroup>
3<author>
4<firstname>Ralph</firstname>
5<surname>Metzler</surname>
6<othername role="mi">J. K.</othername>
7<affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation>
8</author>
9<author>
10<firstname>Marcus</firstname>
11<surname>Metzler</surname>
12<othername role="mi">O. C.</othername>
13<affiliation><address><email>rjkm@metzlerbros.de</email></address></affiliation>
14</author>
15</authorgroup>
16<authorgroup>
17<author>
18<firstname>Mauro</firstname>
19<othername role="mi">Carvalho</othername>
20<surname>Chehab</surname>
21<affiliation><address><email>m.chehab@samsung.com</email></address></affiliation>
22<contrib>Ported document to Docbook XML.</contrib>
23</author>
24</authorgroup>
25<copyright>
26 <year>2002</year>
27 <year>2003</year>
28 <holder>Convergence GmbH</holder>
29</copyright>
30<copyright>
31 <year>2009-2015</year>
32 <holder>Mauro Carvalho Chehab</holder>
33</copyright>
34
35<revhistory>
36<!-- Put document revisions here, newest first. -->
37<revision>
38 <revnumber>2.1.0</revnumber>
39 <date>2015-05-29</date>
40 <authorinitials>mcc</authorinitials>
41 <revremark>
42 DocBook improvements and cleanups, in order to document the
43 system calls on a more standard way and provide more description
44 about the current DVB API.
45 </revremark>
46</revision>
47<revision>
48 <revnumber>2.0.4</revnumber>
49 <date>2011-05-06</date>
50 <authorinitials>mcc</authorinitials>
51 <revremark>
52 Add more information about DVB APIv5, better describing the frontend GET/SET props ioctl's.
53 </revremark>
54</revision>
55<revision>
56 <revnumber>2.0.3</revnumber>
57 <date>2010-07-03</date>
58 <authorinitials>mcc</authorinitials>
59 <revremark>
60 Add some frontend capabilities flags, present on kernel, but missing at the specs.
61 </revremark>
62</revision>
63<revision>
64 <revnumber>2.0.2</revnumber>
65 <date>2009-10-25</date>
66 <authorinitials>mcc</authorinitials>
67 <revremark>
68 documents FE_SET_FRONTEND_TUNE_MODE and FE_DISHETWORK_SEND_LEGACY_CMD ioctls.
69 </revremark>
70</revision>
71<revision>
72<revnumber>2.0.1</revnumber>
73<date>2009-09-16</date>
74<authorinitials>mcc</authorinitials>
75<revremark>
76Added ISDB-T test originally written by Patrick Boettcher
77</revremark>
78</revision>
79<revision>
80<revnumber>2.0.0</revnumber>
81<date>2009-09-06</date>
82<authorinitials>mcc</authorinitials>
83<revremark>Conversion from LaTex to DocBook XML. The
84 contents is the same as the original LaTex version.</revremark>
85</revision>
86<revision>
87<revnumber>1.0.0</revnumber>
88<date>2003-07-24</date>
89<authorinitials>rjkm</authorinitials>
90<revremark>Initial revision on LaTEX.</revremark>
91</revision>
92</revhistory>
93</partinfo>
94
95
96<title>LINUX DVB API</title>
97<subtitle>Version 5.10</subtitle>
98<!-- ADD THE CHAPTERS HERE -->
99 <chapter id="dvb_introdution">
100 &sub-intro;
101 </chapter>
102 <chapter id="dvb_frontend">
103 &sub-frontend;
104 </chapter>
105 <chapter id="dvb_demux">
106 &sub-demux;
107 </chapter>
108 <chapter id="dvb_ca">
109 &sub-ca;
110 </chapter>
111 <chapter id="net">
112 &sub-net;
113 </chapter>
114 <chapter id="legacy_dvb_apis">
115 <title>DVB Deprecated APIs</title>
116 <para>The APIs described here are kept only for historical reasons. There's
117 just one driver for a very legacy hardware that uses this API. No
118 modern drivers should use it. Instead, audio and video should be using
119 the V4L2 and ALSA APIs, and the pipelines should be set using the
120 Media Controller API</para>
121 <section id="dvb_video">
122 &sub-video;
123 </section>
124 <section id="dvb_audio">
125 &sub-audio;
126 </section>
127 </chapter>
128 <chapter id="dvb_examples">
129 &sub-examples;
130 </chapter>
131<!-- END OF CHAPTERS -->
132 <appendix id="audio_h">
133 <title>DVB Audio Header File</title>
134 &sub-audio-h;
135 </appendix>
136 <appendix id="ca_h">
137 <title>DVB Conditional Access Header File</title>
138 &sub-ca-h;
139 </appendix>
140 <appendix id="dmx_h">
141 <title>DVB Demux Header File</title>
142 &sub-dmx-h;
143 </appendix>
144 <appendix id="frontend_h">
145 <title>DVB Frontend Header File</title>
146 &sub-frontend-h;
147 </appendix>
148 <appendix id="net_h">
149 <title>DVB Network Header File</title>
150 &sub-net-h;
151 </appendix>
152 <appendix id="video_h">
153 <title>DVB Video Header File</title>
154 &sub-video-h;
155 </appendix>
156
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml
deleted file mode 100644
index e579ae5088ae..000000000000
--- a/Documentation/DocBook/media/dvb/dvbproperty.xml
+++ /dev/null
@@ -1,1680 +0,0 @@
1<section id="frontend-properties">
2<title>DVB Frontend properties</title>
3<para>Tuning into a Digital TV physical channel and starting decoding it
4 requires changing a set of parameters, in order to control the
5 tuner, the demodulator, the Linear Low-noise Amplifier (LNA) and to set the
6 antenna subsystem via Satellite Equipment Control (SEC), on satellite
7 systems. The actual parameters are specific to each particular digital
8 TV standards, and may change as the digital TV specs evolves.</para>
9<para>In the past, the strategy used was to have a union with the parameters
10 needed to tune for DVB-S, DVB-C, DVB-T and ATSC delivery systems grouped
11 there. The problem is that, as the second generation standards appeared,
12 those structs were not big enough to contain the additional parameters.
13 Also, the union didn't have any space left to be expanded without breaking
14 userspace. So, the decision was to deprecate the legacy union/struct based
15 approach, in favor of a properties set approach.</para>
16
17<para>NOTE: on Linux DVB API version 3, setting a frontend were done via
18 <link linkend="dvb-frontend-parameters">struct <constant>dvb_frontend_parameters</constant></link>.
19 This got replaced on version 5 (also called "S2API", as this API were
20 added originally_enabled to provide support for DVB-S2), because the old
21 API has a very limited support to new standards and new hardware. This
22 section describes the new and recommended way to set the frontend, with
23 suppports all digital TV delivery systems.</para>
24
25<para>Example: with the properties based approach, in order to set the tuner
26 to a DVB-C channel at 651 kHz, modulated with 256-QAM, FEC 3/4 and symbol
27 rate of 5.217 Mbauds, those properties should be sent to
28 <link linkend="FE_GET_PROPERTY"><constant>FE_SET_PROPERTY</constant></link> ioctl:</para>
29 <itemizedlist>
30 <listitem><para>&DTV-DELIVERY-SYSTEM; = SYS_DVBC_ANNEX_A</para></listitem>
31 <listitem><para>&DTV-FREQUENCY; = 651000000</para></listitem>
32 <listitem><para>&DTV-MODULATION; = QAM_256</para></listitem>
33 <listitem><para>&DTV-INVERSION; = INVERSION_AUTO</para></listitem>
34 <listitem><para>&DTV-SYMBOL-RATE; = 5217000</para></listitem>
35 <listitem><para>&DTV-INNER-FEC; = FEC_3_4</para></listitem>
36 <listitem><para>&DTV-TUNE;</para></listitem>
37 </itemizedlist>
38
39<para>The code that would do the above is:</para>
40<programlisting>
41#include &lt;stdio.h&gt;
42#include &lt;fcntl.h&gt;
43#include &lt;sys/ioctl.h&gt;
44#include &lt;linux/dvb/frontend.h&gt;
45
46static struct dtv_property props[] = {
47 { .cmd = DTV_DELIVERY_SYSTEM, .u.data = SYS_DVBC_ANNEX_A },
48 { .cmd = DTV_FREQUENCY, .u.data = 651000000 },
49 { .cmd = DTV_MODULATION, .u.data = QAM_256 },
50 { .cmd = DTV_INVERSION, .u.data = INVERSION_AUTO },
51 { .cmd = DTV_SYMBOL_RATE, .u.data = 5217000 },
52 { .cmd = DTV_INNER_FEC, .u.data = FEC_3_4 },
53 { .cmd = DTV_TUNE }
54};
55
56static struct dtv_properties dtv_prop = {
57 .num = 6, .props = props
58};
59
60int main(void)
61{
62 int fd = open("/dev/dvb/adapter0/frontend0", O_RDWR);
63
64 if (!fd) {
65 perror ("open");
66 return -1;
67 }
68 if (ioctl(fd, FE_SET_PROPERTY, &amp;dtv_prop) == -1) {
69 perror("ioctl");
70 return -1;
71 }
72 printf("Frontend set\n");
73 return 0;
74}
75</programlisting>
76
77<para>NOTE: While it is possible to directly call the Kernel code like the
78 above example, it is strongly recommended to use
79 <ulink url="https://linuxtv.org/docs/libdvbv5/index.html">libdvbv5</ulink>,
80 as it provides abstraction to work with the supported digital TV standards
81 and provides methods for usual operations like program scanning and to
82 read/write channel descriptor files.</para>
83
84<section id="dtv-stats">
85<title>struct <structname>dtv_stats</structname></title>
86<programlisting>
87struct dtv_stats {
88 __u8 scale; /* enum fecap_scale_params type */
89 union {
90 __u64 uvalue; /* for counters and relative scales */
91 __s64 svalue; /* for 1/1000 dB measures */
92 };
93} __packed;
94</programlisting>
95</section>
96<section id="dtv-fe-stats">
97<title>struct <structname>dtv_fe_stats</structname></title>
98<programlisting>
99#define MAX_DTV_STATS 4
100
101struct dtv_fe_stats {
102 __u8 len;
103 &dtv-stats; stat[MAX_DTV_STATS];
104} __packed;
105</programlisting>
106</section>
107
108<section id="dtv-property">
109<title>struct <structname>dtv_property</structname></title>
110<programlisting>
111/* Reserved fields should be set to 0 */
112
113struct dtv_property {
114 __u32 cmd;
115 __u32 reserved[3];
116 union {
117 __u32 data;
118 &dtv-fe-stats; st;
119 struct {
120 __u8 data[32];
121 __u32 len;
122 __u32 reserved1[3];
123 void *reserved2;
124 } buffer;
125 } u;
126 int result;
127} __attribute__ ((packed));
128
129/* num of properties cannot exceed DTV_IOCTL_MAX_MSGS per ioctl */
130#define DTV_IOCTL_MAX_MSGS 64
131</programlisting>
132</section>
133<section id="dtv-properties">
134<title>struct <structname>dtv_properties</structname></title>
135<programlisting>
136struct dtv_properties {
137 __u32 num;
138 &dtv-property; *props;
139};
140</programlisting>
141</section>
142
143<section>
144 <title>Property types</title>
145<para>
146On <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY and FE_SET_PROPERTY</link>,
147the actual action is determined by the dtv_property cmd/data pairs. With one single ioctl, is possible to
148get/set up to 64 properties. The actual meaning of each property is described on the next sections.
149</para>
150
151<para>The available frontend property types are shown on the next section.</para>
152</section>
153
154<section id="fe_property_parameters">
155 <title>Digital TV property parameters</title>
156 <section id="DTV-UNDEFINED">
157 <title><constant>DTV_UNDEFINED</constant></title>
158 <para>Used internally. A GET/SET operation for it won't change or return anything.</para>
159 </section>
160 <section id="DTV-TUNE">
161 <title><constant>DTV_TUNE</constant></title>
162 <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>
163 </section>
164 <section id="DTV-CLEAR">
165 <title><constant>DTV_CLEAR</constant></title>
166 <para>Reset a cache of data specific to the frontend here. This does not effect hardware.</para>
167 </section>
168 <section id="DTV-FREQUENCY">
169 <title><constant>DTV_FREQUENCY</constant></title>
170
171 <para>Central frequency of the channel.</para>
172
173 <para>Notes:</para>
174 <para>1)For satellite delivery systems, it is measured in kHz.
175 For the other ones, it is measured in Hz.</para>
176 <para>2)For ISDB-T, the channels are usually transmitted with an offset of 143kHz.
177 E.g. a valid frequency could be 474143 kHz. The stepping is bound to the bandwidth of
178 the channel which is 6MHz.</para>
179
180 <para>3)As in ISDB-Tsb the channel consists of only one or three segments the
181 frequency step is 429kHz, 3*429 respectively. As for ISDB-T the
182 central frequency of the channel is expected.</para>
183 </section>
184 <section id="DTV-MODULATION">
185 <title><constant>DTV_MODULATION</constant></title>
186<para>Specifies the frontend modulation type for delivery systems that supports
187 more than one modulation type. The modulation can be one of the types
188 defined by &fe-modulation;.</para>
189
190
191<section id="fe-modulation-t">
192<title>Modulation property</title>
193
194<para>Most of the digital TV standards currently offers more than one possible
195 modulation (sometimes called as "constellation" on some standards). This
196 enum contains the values used by the Kernel. Please note that not all
197 modulations are supported by a given standard.</para>
198
199<table pgwide="1" frame="none" id="fe-modulation">
200 <title>enum fe_modulation</title>
201 <tgroup cols="2">
202 &cs-def;
203 <thead>
204 <row>
205 <entry>ID</entry>
206 <entry>Description</entry>
207 </row>
208 </thead>
209 <tbody valign="top">
210 <row>
211 <entry id="QPSK"><constant>QPSK</constant></entry>
212 <entry>QPSK modulation</entry>
213 </row><row>
214 <entry id="QAM-16"><constant>QAM_16</constant></entry>
215 <entry>16-QAM modulation</entry>
216 </row><row>
217 <entry id="QAM-32"><constant>QAM_32</constant></entry>
218 <entry>32-QAM modulation</entry>
219 </row><row>
220 <entry id="QAM-64"><constant>QAM_64</constant></entry>
221 <entry>64-QAM modulation</entry>
222 </row><row>
223 <entry id="QAM-128"><constant>QAM_128</constant></entry>
224 <entry>128-QAM modulation</entry>
225 </row><row>
226 <entry id="QAM-256"><constant>QAM_256</constant></entry>
227 <entry>256-QAM modulation</entry>
228 </row><row>
229 <entry id="QAM-AUTO"><constant>QAM_AUTO</constant></entry>
230 <entry>Autodetect QAM modulation</entry>
231 </row><row>
232 <entry id="VSB-8"><constant>VSB_8</constant></entry>
233 <entry>8-VSB modulation</entry>
234 </row><row>
235 <entry id="VSB-16"><constant>VSB_16</constant></entry>
236 <entry>16-VSB modulation</entry>
237 </row><row>
238 <entry id="PSK-8"><constant>PSK_8</constant></entry>
239 <entry>8-PSK modulation</entry>
240 </row><row>
241 <entry id="APSK-16"><constant>APSK_16</constant></entry>
242 <entry>16-APSK modulation</entry>
243 </row><row>
244 <entry id="APSK-32"><constant>APSK_32</constant></entry>
245 <entry>32-APSK modulation</entry>
246 </row><row>
247 <entry id="DQPSK"><constant>DQPSK</constant></entry>
248 <entry>DQPSK modulation</entry>
249 </row><row>
250 <entry id="QAM-4-NR"><constant>QAM_4_NR</constant></entry>
251 <entry>4-QAM-NR modulation</entry>
252 </row>
253 </tbody>
254 </tgroup>
255</table>
256</section>
257
258 </section>
259 <section id="DTV-BANDWIDTH-HZ">
260 <title><constant>DTV_BANDWIDTH_HZ</constant></title>
261
262 <para>Bandwidth for the channel, in HZ.</para>
263
264 <para>Possible values:
265 <constant>1712000</constant>,
266 <constant>5000000</constant>,
267 <constant>6000000</constant>,
268 <constant>7000000</constant>,
269 <constant>8000000</constant>,
270 <constant>10000000</constant>.
271 </para>
272
273 <para>Notes:</para>
274
275 <para>1) For ISDB-T it should be always 6000000Hz (6MHz)</para>
276 <para>2) For ISDB-Tsb it can vary depending on the number of connected segments</para>
277 <para>3) Bandwidth doesn't apply for DVB-C transmissions, as the bandwidth
278 for DVB-C depends on the symbol rate</para>
279 <para>4) Bandwidth in ISDB-T is fixed (6MHz) or can be easily derived from
280 other parameters (DTV_ISDBT_SB_SEGMENT_IDX,
281 DTV_ISDBT_SB_SEGMENT_COUNT).</para>
282 <para>5) DVB-T supports 6, 7 and 8MHz.</para>
283 <para>6) In addition, DVB-T2 supports 1.172, 5 and 10MHz.</para>
284 </section>
285 <section id="DTV-INVERSION">
286 <title><constant>DTV_INVERSION</constant></title>
287
288 <para>Specifies if the frontend should do spectral inversion or not.</para>
289
290<section id="fe-spectral-inversion-t">
291<title>enum fe_modulation: Frontend spectral inversion</title>
292
293<para>This parameter indicates if spectral inversion should be presumed or not.
294 In the automatic setting (<constant>INVERSION_AUTO</constant>) the hardware
295 will try to figure out the correct setting by itself. If the hardware
296 doesn't support, the DVB core will try to lock at the carrier first with
297 inversion off. If it fails, it will try to enable inversion.
298</para>
299
300<table pgwide="1" frame="none" id="fe-spectral-inversion">
301 <title>enum fe_modulation</title>
302 <tgroup cols="2">
303 &cs-def;
304 <thead>
305 <row>
306 <entry>ID</entry>
307 <entry>Description</entry>
308 </row>
309 </thead>
310 <tbody valign="top">
311 <row>
312 <entry id="INVERSION-OFF"><constant>INVERSION_OFF</constant></entry>
313 <entry>Don't do spectral band inversion.</entry>
314 </row><row>
315 <entry id="INVERSION-ON"><constant>INVERSION_ON</constant></entry>
316 <entry>Do spectral band inversion.</entry>
317 </row><row>
318 <entry id="INVERSION-AUTO"><constant>INVERSION_AUTO</constant></entry>
319 <entry>Autodetect spectral band inversion.</entry>
320 </row>
321 </tbody>
322 </tgroup>
323</table>
324</section>
325
326 </section>
327 <section id="DTV-DISEQC-MASTER">
328 <title><constant>DTV_DISEQC_MASTER</constant></title>
329 <para>Currently not implemented.</para>
330 </section>
331 <section id="DTV-SYMBOL-RATE">
332 <title><constant>DTV_SYMBOL_RATE</constant></title>
333 <para>Digital TV symbol rate, in bauds (symbols/second). Used on cable standards.</para>
334 </section>
335 <section id="DTV-INNER-FEC">
336 <title><constant>DTV_INNER_FEC</constant></title>
337 <para>Used cable/satellite transmissions. The acceptable values are:
338 </para>
339<section id="fe-code-rate-t">
340<title>enum fe_code_rate: type of the Forward Error Correction.</title>
341
342<table pgwide="1" frame="none" id="fe-code-rate">
343 <title>enum fe_code_rate</title>
344 <tgroup cols="2">
345 &cs-def;
346 <thead>
347 <row>
348 <entry>ID</entry>
349 <entry>Description</entry>
350 </row>
351 </thead>
352 <tbody valign="top">
353 <row>
354 <entry id="FEC-NONE"><constant>FEC_NONE</constant></entry>
355 <entry>No Forward Error Correction Code</entry>
356 </row><row>
357 <entry id="FEC-AUTO"><constant>FEC_AUTO</constant></entry>
358 <entry>Autodetect Error Correction Code</entry>
359 </row><row>
360 <entry id="FEC-1-2"><constant>FEC_1_2</constant></entry>
361 <entry>Forward Error Correction Code 1/2</entry>
362 </row><row>
363 <entry id="FEC-2-3"><constant>FEC_2_3</constant></entry>
364 <entry>Forward Error Correction Code 2/3</entry>
365 </row><row>
366 <entry id="FEC-3-4"><constant>FEC_3_4</constant></entry>
367 <entry>Forward Error Correction Code 3/4</entry>
368 </row><row>
369 <entry id="FEC-4-5"><constant>FEC_4_5</constant></entry>
370 <entry>Forward Error Correction Code 4/5</entry>
371 </row><row>
372 <entry id="FEC-5-6"><constant>FEC_5_6</constant></entry>
373 <entry>Forward Error Correction Code 5/6</entry>
374 </row><row>
375 <entry id="FEC-6-7"><constant>FEC_6_7</constant></entry>
376 <entry>Forward Error Correction Code 6/7</entry>
377 </row><row>
378 <entry id="FEC-7-8"><constant>FEC_7_8</constant></entry>
379 <entry>Forward Error Correction Code 7/8</entry>
380 </row><row>
381 <entry id="FEC-8-9"><constant>FEC_8_9</constant></entry>
382 <entry>Forward Error Correction Code 8/9</entry>
383 </row><row>
384 <entry id="FEC-9-10"><constant>FEC_9_10</constant></entry>
385 <entry>Forward Error Correction Code 9/10</entry>
386 </row><row>
387 <entry id="FEC-2-5"><constant>FEC_2_5</constant></entry>
388 <entry>Forward Error Correction Code 2/5</entry>
389 </row><row>
390 <entry id="FEC-3-5"><constant>FEC_3_5</constant></entry>
391 <entry>Forward Error Correction Code 3/5</entry>
392 </row>
393 </tbody>
394 </tgroup>
395</table>
396</section>
397 </section>
398 <section id="DTV-VOLTAGE">
399 <title><constant>DTV_VOLTAGE</constant></title>
400 <para>The voltage is usually used with non-DiSEqC capable LNBs to switch
401 the polarzation (horizontal/vertical). When using DiSEqC epuipment this
402 voltage has to be switched consistently to the DiSEqC commands as
403 described in the DiSEqC spec.</para>
404
405<table pgwide="1" frame="none" id="fe-sec-voltage">
406 <title id="fe-sec-voltage-t">enum fe_sec_voltage</title>
407 <tgroup cols="2">
408 &cs-def;
409 <thead>
410 <row>
411 <entry>ID</entry>
412 <entry>Description</entry>
413 </row>
414 </thead>
415 <tbody valign="top">
416 <row>
417 <entry align="char" id="SEC-VOLTAGE-13"><constant>SEC_VOLTAGE_13</constant></entry>
418 <entry align="char">Set DC voltage level to 13V</entry>
419 </row><row>
420 <entry align="char" id="SEC-VOLTAGE-18"><constant>SEC_VOLTAGE_18</constant></entry>
421 <entry align="char">Set DC voltage level to 18V</entry>
422 </row><row>
423 <entry align="char" id="SEC-VOLTAGE-OFF"><constant>SEC_VOLTAGE_OFF</constant></entry>
424 <entry align="char">Don't send any voltage to the antenna</entry>
425 </row>
426 </tbody>
427 </tgroup>
428</table>
429 </section>
430 <section id="DTV-TONE">
431 <title><constant>DTV_TONE</constant></title>
432 <para>Currently not used.</para>
433 </section>
434 <section id="DTV-PILOT">
435 <title><constant>DTV_PILOT</constant></title>
436 <para>Sets DVB-S2 pilot</para>
437 <section id="fe-pilot-t">
438 <title>fe_pilot type</title>
439<table pgwide="1" frame="none" id="fe-pilot">
440 <title>enum fe_pilot</title>
441 <tgroup cols="2">
442 &cs-def;
443 <thead>
444 <row>
445 <entry>ID</entry>
446 <entry>Description</entry>
447 </row>
448 </thead>
449 <tbody valign="top">
450 <row>
451 <entry align="char" id="PILOT-ON"><constant>PILOT_ON</constant></entry>
452 <entry align="char">Pilot tones enabled</entry>
453 </row><row>
454 <entry align="char" id="PILOT-OFF"><constant>PILOT_OFF</constant></entry>
455 <entry align="char">Pilot tones disabled</entry>
456 </row><row>
457 <entry align="char" id="PILOT-AUTO"><constant>PILOT_AUTO</constant></entry>
458 <entry align="char">Autodetect pilot tones</entry>
459 </row>
460 </tbody>
461 </tgroup>
462</table>
463 </section>
464 </section>
465 <section id="DTV-ROLLOFF">
466 <title><constant>DTV_ROLLOFF</constant></title>
467 <para>Sets DVB-S2 rolloff</para>
468
469 <section id="fe-rolloff-t">
470 <title>fe_rolloff type</title>
471<table pgwide="1" frame="none" id="fe-rolloff">
472 <title>enum fe_rolloff</title>
473 <tgroup cols="2">
474 &cs-def;
475 <thead>
476 <row>
477 <entry>ID</entry>
478 <entry>Description</entry>
479 </row>
480 </thead>
481 <tbody valign="top">
482 <row>
483 <entry align="char" id="ROLLOFF-35"><constant>ROLLOFF_35</constant></entry>
484 <entry align="char">Roloff factor: &alpha;=35%</entry>
485 </row><row>
486 <entry align="char" id="ROLLOFF-20"><constant>ROLLOFF_20</constant></entry>
487 <entry align="char">Roloff factor: &alpha;=20%</entry>
488 </row><row>
489 <entry align="char" id="ROLLOFF-25"><constant>ROLLOFF_25</constant></entry>
490 <entry align="char">Roloff factor: &alpha;=25%</entry>
491 </row><row>
492 <entry align="char" id="ROLLOFF-AUTO"><constant>ROLLOFF_AUTO</constant></entry>
493 <entry align="char">Auto-detect the roloff factor.</entry>
494 </row>
495 </tbody>
496 </tgroup>
497</table>
498 </section>
499 </section>
500 <section id="DTV-DISEQC-SLAVE-REPLY">
501 <title><constant>DTV_DISEQC_SLAVE_REPLY</constant></title>
502 <para>Currently not implemented.</para>
503 </section>
504 <section id="DTV-FE-CAPABILITY-COUNT">
505 <title><constant>DTV_FE_CAPABILITY_COUNT</constant></title>
506 <para>Currently not implemented.</para>
507 </section>
508 <section id="DTV-FE-CAPABILITY">
509 <title><constant>DTV_FE_CAPABILITY</constant></title>
510 <para>Currently not implemented.</para>
511 </section>
512 <section id="DTV-DELIVERY-SYSTEM">
513 <title><constant>DTV_DELIVERY_SYSTEM</constant></title>
514 <para>Specifies the type of Delivery system</para>
515 <section id="fe-delivery-system-t">
516 <title>fe_delivery_system type</title>
517 <para>Possible values: </para>
518
519<table pgwide="1" frame="none" id="fe-delivery-system">
520 <title>enum fe_delivery_system</title>
521 <tgroup cols="2">
522 &cs-def;
523 <thead>
524 <row>
525 <entry>ID</entry>
526 <entry>Description</entry>
527 </row>
528 </thead>
529 <tbody valign="top">
530 <row>
531 <entry id="SYS-UNDEFINED"><constant>SYS_UNDEFINED</constant></entry>
532 <entry>Undefined standard. Generally, indicates an error</entry>
533 </row><row>
534 <entry id="SYS-DVBC-ANNEX-A"><constant>SYS_DVBC_ANNEX_A</constant></entry>
535 <entry>Cable TV: DVB-C following ITU-T J.83 Annex A spec</entry>
536 </row><row>
537 <entry id="SYS-DVBC-ANNEX-B"><constant>SYS_DVBC_ANNEX_B</constant></entry>
538 <entry>Cable TV: DVB-C following ITU-T J.83 Annex B spec (ClearQAM)</entry>
539 </row><row>
540 <entry id="SYS-DVBC-ANNEX-C"><constant>SYS_DVBC_ANNEX_C</constant></entry>
541 <entry>Cable TV: DVB-C following ITU-T J.83 Annex C spec</entry>
542 </row><row>
543 <entry id="SYS-ISDBC"><constant>SYS_ISDBC</constant></entry>
544 <entry>Cable TV: ISDB-C (no drivers yet)</entry>
545 </row><row>
546 <entry id="SYS-DVBT"><constant>SYS_DVBT</constant></entry>
547 <entry>Terrestral TV: DVB-T</entry>
548 </row><row>
549 <entry id="SYS-DVBT2"><constant>SYS_DVBT2</constant></entry>
550 <entry>Terrestral TV: DVB-T2</entry>
551 </row><row>
552 <entry id="SYS-ISDBT"><constant>SYS_ISDBT</constant></entry>
553 <entry>Terrestral TV: ISDB-T</entry>
554 </row><row>
555 <entry id="SYS-ATSC"><constant>SYS_ATSC</constant></entry>
556 <entry>Terrestral TV: ATSC</entry>
557 </row><row>
558 <entry id="SYS-ATSCMH"><constant>SYS_ATSCMH</constant></entry>
559 <entry>Terrestral TV (mobile): ATSC-M/H</entry>
560 </row><row>
561 <entry id="SYS-DTMB"><constant>SYS_DTMB</constant></entry>
562 <entry>Terrestrial TV: DTMB</entry>
563 </row><row>
564 <entry id="SYS-DVBS"><constant>SYS_DVBS</constant></entry>
565 <entry>Satellite TV: DVB-S</entry>
566 </row><row>
567 <entry id="SYS-DVBS2"><constant>SYS_DVBS2</constant></entry>
568 <entry>Satellite TV: DVB-S2</entry>
569 </row><row>
570 <entry id="SYS-TURBO"><constant>SYS_TURBO</constant></entry>
571 <entry>Satellite TV: DVB-S Turbo</entry>
572 </row><row>
573 <entry id="SYS-ISDBS"><constant>SYS_ISDBS</constant></entry>
574 <entry>Satellite TV: ISDB-S</entry>
575 </row><row>
576 <entry id="SYS-DAB"><constant>SYS_DAB</constant></entry>
577 <entry>Digital audio: DAB (not fully supported)</entry>
578 </row><row>
579 <entry id="SYS-DSS"><constant>SYS_DSS</constant></entry>
580 <entry>Satellite TV:"DSS (not fully supported)</entry>
581 </row><row>
582 <entry id="SYS-CMMB"><constant>SYS_CMMB</constant></entry>
583 <entry>Terrestral TV (mobile):CMMB (not fully supported)</entry>
584 </row><row>
585 <entry id="SYS-DVBH"><constant>SYS_DVBH</constant></entry>
586 <entry>Terrestral TV (mobile): DVB-H (standard deprecated)</entry>
587 </row>
588 </tbody>
589 </tgroup>
590</table>
591
592
593</section>
594 </section>
595 <section id="DTV-ISDBT-PARTIAL-RECEPTION">
596 <title><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></title>
597
598 <para>If <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '0' this bit-field represents whether
599 the channel is in partial reception mode or not.</para>
600
601 <para>If '1' <constant>DTV_ISDBT_LAYERA_*</constant> values are assigned to the center segment and
602 <constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant> has to be '1'.</para>
603
604 <para>If in addition <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'
605 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> represents whether this ISDB-Tsb channel
606 is consisting of one segment and layer or three segments and two layers.</para>
607
608 <para>Possible values: 0, 1, -1 (AUTO)</para>
609 </section>
610 <section id="DTV-ISDBT-SOUND-BROADCASTING">
611 <title><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></title>
612
613 <para>This field represents whether the other DTV_ISDBT_*-parameters are
614 referring to an ISDB-T and an ISDB-Tsb channel. (See also
615 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>).</para>
616
617 <para>Possible values: 0, 1, -1 (AUTO)</para>
618 </section>
619 <section id="DTV-ISDBT-SB-SUBCHANNEL-ID">
620 <title><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></title>
621
622 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
623
624 <para>(Note of the author: This might not be the correct description of the
625 <constant>SUBCHANNEL-ID</constant> in all details, but it is my understanding of the technical
626 background needed to program a device)</para>
627
628 <para>An ISDB-Tsb channel (1 or 3 segments) can be broadcasted alone or in a
629 set of connected ISDB-Tsb channels. In this set of channels every
630 channel can be received independently. The number of connected
631 ISDB-Tsb segment can vary, e.g. depending on the frequency spectrum
632 bandwidth available.</para>
633
634 <para>Example: Assume 8 ISDB-Tsb connected segments are broadcasted. The
635 broadcaster has several possibilities to put those channels in the
636 air: Assuming a normal 13-segment ISDB-T spectrum he can align the 8
637 segments from position 1-8 to 5-13 or anything in between.</para>
638
639 <para>The underlying layer of segments are subchannels: each segment is
640 consisting of several subchannels with a predefined IDs. A sub-channel
641 is used to help the demodulator to synchronize on the channel.</para>
642
643 <para>An ISDB-T channel is always centered over all sub-channels. As for
644 the example above, in ISDB-Tsb it is no longer as simple as that.</para>
645
646 <para><constant>The DTV_ISDBT_SB_SUBCHANNEL_ID</constant> parameter is used to give the
647 sub-channel ID of the segment to be demodulated.</para>
648
649 <para>Possible values: 0 .. 41, -1 (AUTO)</para>
650 </section>
651 <section id="DTV-ISDBT-SB-SEGMENT-IDX">
652 <title><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></title>
653 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
654 <para><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant> gives the index of the segment to be
655 demodulated for an ISDB-Tsb channel where several of them are
656 transmitted in the connected manner.</para>
657 <para>Possible values: 0 .. <constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> - 1</para>
658 <para>Note: This value cannot be determined by an automatic channel search.</para>
659 </section>
660 <section id="DTV-ISDBT-SB-SEGMENT-COUNT">
661 <title><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></title>
662 <para>This field only applies if <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> is '1'.</para>
663 <para><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant> gives the total count of connected ISDB-Tsb
664 channels.</para>
665 <para>Possible values: 1 .. 13</para>
666 <para>Note: This value cannot be determined by an automatic channel search.</para>
667 </section>
668 <section id="isdb-hierq-layers">
669 <title><constant>DTV-ISDBT-LAYER*</constant> parameters</title>
670 <para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
671 ISDB-T hierarchical layers can be decoded simultaneously. For that
672 reason a ISDB-T demodulator has 3 Viterbi and 3 Reed-Solomon decoders.</para>
673 <para>ISDB-T has 3 hierarchical layers which each can use a part of the
674 available segments. The total number of segments over all layers has
675 to 13 in ISDB-T.</para>
676 <para>There are 3 parameter sets, for Layers A, B and C.</para>
677 <section id="DTV-ISDBT-LAYER-ENABLED">
678 <title><constant>DTV_ISDBT_LAYER_ENABLED</constant></title>
679 <para>Hierarchical reception in ISDB-T is achieved by enabling or disabling
680 layers in the decoding process. Setting all bits of
681 <constant>DTV_ISDBT_LAYER_ENABLED</constant> to '1' forces all layers (if applicable) to be
682 demodulated. This is the default.</para>
683 <para>If the channel is in the partial reception mode
684 (<constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> = 1) the central segment can be decoded
685 independently of the other 12 segments. In that mode layer A has to
686 have a <constant>SEGMENT_COUNT</constant> of 1.</para>
687 <para>In ISDB-Tsb only layer A is used, it can be 1 or 3 in ISDB-Tsb
688 according to <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>. <constant>SEGMENT_COUNT</constant> must be filled
689 accordingly.</para>
690 <para>Possible values: 0x1, 0x2, 0x4 (|-able)</para>
691 <para><constant>DTV_ISDBT_LAYER_ENABLED[0:0]</constant> - layer A</para>
692 <para><constant>DTV_ISDBT_LAYER_ENABLED[1:1]</constant> - layer B</para>
693 <para><constant>DTV_ISDBT_LAYER_ENABLED[2:2]</constant> - layer C</para>
694 <para><constant>DTV_ISDBT_LAYER_ENABLED[31:3]</constant> unused</para>
695 </section>
696 <section id="DTV-ISDBT-LAYER-FEC">
697 <title><constant>DTV_ISDBT_LAYER*_FEC</constant></title>
698 <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>
699 </section>
700 <section id="DTV-ISDBT-LAYER-MODULATION">
701 <title><constant>DTV_ISDBT_LAYER*_MODULATION</constant></title>
702 <para>Possible values: <constant>QAM_AUTO</constant>, QP<constant>SK, QAM_16</constant>, <constant>QAM_64</constant>, <constant>DQPSK</constant></para>
703 <para>Note: If layer C is <constant>DQPSK</constant> layer B has to be <constant>DQPSK</constant>. If layer B is <constant>DQPSK</constant>
704 and <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant>=0 layer has to be <constant>DQPSK</constant>.</para>
705 </section>
706 <section id="DTV-ISDBT-LAYER-SEGMENT-COUNT">
707 <title><constant>DTV_ISDBT_LAYER*_SEGMENT_COUNT</constant></title>
708 <para>Possible values: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1 (AUTO)</para>
709 <para>Note: Truth table for <constant>DTV_ISDBT_SOUND_BROADCASTING</constant> and
710 <constant>DTV_ISDBT_PARTIAL_RECEPTION</constant> and <constant>LAYER</constant>*_SEGMENT_COUNT</para>
711 <informaltable id="isdbt-layer_seg-cnt-table">
712 <tgroup cols="6">
713 <tbody>
714 <row>
715 <entry>PR</entry>
716 <entry>SB</entry>
717 <entry>Layer A width</entry>
718 <entry>Layer B width</entry>
719 <entry>Layer C width</entry>
720 <entry>total width</entry>
721 </row>
722 <row>
723 <entry>0</entry>
724 <entry>0</entry>
725 <entry>1 .. 13</entry>
726 <entry>1 .. 13</entry>
727 <entry>1 .. 13</entry>
728 <entry>13</entry>
729 </row>
730 <row>
731 <entry>1</entry>
732 <entry>0</entry>
733 <entry>1</entry>
734 <entry>1 .. 13</entry>
735 <entry>1 .. 13</entry>
736 <entry>13</entry>
737 </row>
738 <row>
739 <entry>0</entry>
740 <entry>1</entry>
741 <entry>1</entry>
742 <entry>0</entry>
743 <entry>0</entry>
744 <entry>1</entry>
745 </row>
746 <row>
747 <entry>1</entry>
748 <entry>1</entry>
749 <entry>1</entry>
750 <entry>2</entry>
751 <entry>0</entry>
752 <entry>13</entry>
753 </row>
754 </tbody>
755 </tgroup>
756 </informaltable>
757 </section>
758 <section id="DTV-ISDBT-LAYER-TIME-INTERLEAVING">
759 <title><constant>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</constant></title>
760 <para>Valid values: 0, 1, 2, 4, -1 (AUTO)</para>
761 <para>when DTV_ISDBT_SOUND_BROADCASTING is active, value 8 is also valid.</para>
762 <para>Note: The real time interleaving length depends on the mode (fft-size). The values
763 here are referring to what can be found in the TMCC-structure, as shown in the table below.</para>
764 <informaltable id="isdbt-layer-interleaving-table">
765 <tgroup cols="4" align="center">
766 <tbody>
767 <row>
768 <entry>DTV_ISDBT_LAYER*_TIME_INTERLEAVING</entry>
769 <entry>Mode 1 (2K FFT)</entry>
770 <entry>Mode 2 (4K FFT)</entry>
771 <entry>Mode 3 (8K FFT)</entry>
772 </row>
773 <row>
774 <entry>0</entry>
775 <entry>0</entry>
776 <entry>0</entry>
777 <entry>0</entry>
778 </row>
779 <row>
780 <entry>1</entry>
781 <entry>4</entry>
782 <entry>2</entry>
783 <entry>1</entry>
784 </row>
785 <row>
786 <entry>2</entry>
787 <entry>8</entry>
788 <entry>4</entry>
789 <entry>2</entry>
790 </row>
791 <row>
792 <entry>4</entry>
793 <entry>16</entry>
794 <entry>8</entry>
795 <entry>4</entry>
796 </row>
797 </tbody>
798 </tgroup>
799 </informaltable>
800 </section>
801 <section id="DTV-ATSCMH-FIC-VER">
802 <title><constant>DTV_ATSCMH_FIC_VER</constant></title>
803 <para>Version number of the FIC (Fast Information Channel) signaling data.</para>
804 <para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para>
805 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
806 </section>
807 <section id="DTV-ATSCMH-PARADE-ID">
808 <title><constant>DTV_ATSCMH_PARADE_ID</constant></title>
809 <para>Parade identification number</para>
810 <para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para>
811 <para>Possible values: 0, 1, 2, 3, ..., 126, 127</para>
812 </section>
813 <section id="DTV-ATSCMH-NOG">
814 <title><constant>DTV_ATSCMH_NOG</constant></title>
815 <para>Number of MH groups per MH subframe for a designated parade.</para>
816 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
817 </section>
818 <section id="DTV-ATSCMH-TNOG">
819 <title><constant>DTV_ATSCMH_TNOG</constant></title>
820 <para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para>
821 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
822 </section>
823 <section id="DTV-ATSCMH-SGN">
824 <title><constant>DTV_ATSCMH_SGN</constant></title>
825 <para>Start group number.</para>
826 <para>Possible values: 0, 1, 2, 3, ..., 14, 15</para>
827 </section>
828 <section id="DTV-ATSCMH-PRC">
829 <title><constant>DTV_ATSCMH_PRC</constant></title>
830 <para>Parade repetition cycle.</para>
831 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
832 </section>
833 <section id="DTV-ATSCMH-RS-FRAME-MODE">
834 <title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title>
835 <para>Reed Solomon (RS) frame mode.</para>
836 <para>Possible values are:</para>
837<table pgwide="1" frame="none" id="atscmh-rs-frame-mode">
838 <title>enum atscmh_rs_frame_mode</title>
839 <tgroup cols="2">
840 &cs-def;
841 <thead>
842 <row>
843 <entry>ID</entry>
844 <entry>Description</entry>
845 </row>
846 </thead>
847 <tbody valign="top">
848 <row>
849 <entry id="ATSCMH-RSFRAME-PRI-ONLY"><constant>ATSCMH_RSFRAME_PRI_ONLY</constant></entry>
850 <entry>Single Frame: There is only a primary RS Frame for all
851 Group Regions.</entry>
852 </row><row>
853 <entry id="ATSCMH-RSFRAME-PRI-SEC"><constant>ATSCMH_RSFRAME_PRI_SEC</constant></entry>
854 <entry>Dual Frame: There are two separate RS Frames: Primary RS
855 Frame for Group Region A and B and Secondary RS Frame for Group
856 Region C and D.</entry>
857 </row>
858 </tbody>
859 </tgroup>
860</table>
861 </section>
862 <section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE">
863 <title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title>
864 <para>Reed Solomon(RS) frame ensemble.</para>
865 <para>Possible values are:</para>
866<table pgwide="1" frame="none" id="atscmh-rs-frame-ensemble">
867 <title>enum atscmh_rs_frame_ensemble</title>
868 <tgroup cols="2">
869 &cs-def;
870 <thead>
871 <row>
872 <entry>ID</entry>
873 <entry>Description</entry>
874 </row>
875 </thead>
876 <tbody valign="top">
877 <row>
878 <entry id="ATSCMH-RSFRAME-ENS-PRI"><constant>ATSCMH_RSFRAME_ENS_PRI</constant></entry>
879 <entry>Primary Ensemble.</entry>
880 </row><row>
881 <entry id="ATSCMH-RSFRAME-ENS-SEC"><constant>AATSCMH_RSFRAME_PRI_SEC</constant></entry>
882 <entry>Secondary Ensemble.</entry>
883 </row><row>
884 <entry id="ATSCMH-RSFRAME-RES"><constant>AATSCMH_RSFRAME_RES</constant></entry>
885 <entry>Reserved. Shouldn't be used.</entry>
886 </row>
887 </tbody>
888 </tgroup>
889</table>
890 </section>
891 <section id="DTV-ATSCMH-RS-CODE-MODE-PRI">
892 <title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title>
893 <para>Reed Solomon (RS) code mode (primary).</para>
894 <para>Possible values are:</para>
895<table pgwide="1" frame="none" id="atscmh-rs-code-mode">
896 <title>enum atscmh_rs_code_mode</title>
897 <tgroup cols="2">
898 &cs-def;
899 <thead>
900 <row>
901 <entry>ID</entry>
902 <entry>Description</entry>
903 </row>
904 </thead>
905 <tbody valign="top">
906 <row>
907 <entry id="ATSCMH-RSCODE-211-187"><constant>ATSCMH_RSCODE_211_187</constant></entry>
908 <entry>Reed Solomon code (211,187).</entry>
909 </row><row>
910 <entry id="ATSCMH-RSCODE-223-187"><constant>ATSCMH_RSCODE_223_187</constant></entry>
911 <entry>Reed Solomon code (223,187).</entry>
912 </row><row>
913 <entry id="ATSCMH-RSCODE-235-187"><constant>ATSCMH_RSCODE_235_187</constant></entry>
914 <entry>Reed Solomon code (235,187).</entry>
915 </row><row>
916 <entry id="ATSCMH-RSCODE-RES"><constant>ATSCMH_RSCODE_RES</constant></entry>
917 <entry>Reserved. Shouldn't be used.</entry>
918 </row>
919 </tbody>
920 </tgroup>
921</table>
922 </section>
923 <section id="DTV-ATSCMH-RS-CODE-MODE-SEC">
924 <title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title>
925 <para>Reed Solomon (RS) code mode (secondary).</para>
926 <para>Possible values are the same as documented on
927 &atscmh-rs-code-mode;:</para>
928 </section>
929 <section id="DTV-ATSCMH-SCCC-BLOCK-MODE">
930 <title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title>
931 <para>Series Concatenated Convolutional Code Block Mode.</para>
932 <para>Possible values are:</para>
933<table pgwide="1" frame="none" id="atscmh-sccc-block-mode">
934 <title>enum atscmh_scc_block_mode</title>
935 <tgroup cols="2">
936 &cs-def;
937 <thead>
938 <row>
939 <entry>ID</entry>
940 <entry>Description</entry>
941 </row>
942 </thead>
943 <tbody valign="top">
944 <row>
945 <entry id="ATSCMH-SCCC-BLK-SEP"><constant>ATSCMH_SCCC_BLK_SEP</constant></entry>
946 <entry>Separate SCCC: the SCCC outer code mode shall be set independently
947 for each Group Region (A, B, C, D)</entry>
948 </row><row>
949 <entry id="ATSCMH-SCCC-BLK-COMB"><constant>ATSCMH_SCCC_BLK_COMB</constant></entry>
950 <entry>Combined SCCC: all four Regions shall have the same SCCC outer
951 code mode.</entry>
952 </row><row>
953 <entry id="ATSCMH-SCCC-BLK-RES"><constant>ATSCMH_SCCC_BLK_RES</constant></entry>
954 <entry>Reserved. Shouldn't be used.</entry>
955 </row>
956 </tbody>
957 </tgroup>
958</table>
959 </section>
960 <section id="DTV-ATSCMH-SCCC-CODE-MODE-A">
961 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title>
962 <para>Series Concatenated Convolutional Code Rate.</para>
963 <para>Possible values are:</para>
964<table pgwide="1" frame="none" id="atscmh-sccc-code-mode">
965 <title>enum atscmh_sccc_code_mode</title>
966 <tgroup cols="2">
967 &cs-def;
968 <thead>
969 <row>
970 <entry>ID</entry>
971 <entry>Description</entry>
972 </row>
973 </thead>
974 <tbody valign="top">
975 <row>
976 <entry id="ATSCMH-SCCC-CODE-HLF"><constant>ATSCMH_SCCC_CODE_HLF</constant></entry>
977 <entry>The outer code rate of a SCCC Block is 1/2 rate.</entry>
978 </row><row>
979 <entry id="ATSCMH-SCCC-CODE-QTR"><constant>ATSCMH_SCCC_CODE_QTR</constant></entry>
980 <entry>The outer code rate of a SCCC Block is 1/4 rate.</entry>
981 </row><row>
982 <entry id="ATSCMH-SCCC-CODE-RES"><constant>ATSCMH_SCCC_CODE_RES</constant></entry>
983 <entry>to be documented.</entry>
984 </row>
985 </tbody>
986 </tgroup>
987</table>
988 </section>
989 <section id="DTV-ATSCMH-SCCC-CODE-MODE-B">
990 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title>
991 <para>Series Concatenated Convolutional Code Rate.</para>
992 <para>Possible values are the same as documented on
993 &atscmh-sccc-code-mode;.</para>
994 </section>
995 <section id="DTV-ATSCMH-SCCC-CODE-MODE-C">
996 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title>
997 <para>Series Concatenated Convolutional Code Rate.</para>
998 <para>Possible values are the same as documented on
999 &atscmh-sccc-code-mode;.</para>
1000 </section>
1001 <section id="DTV-ATSCMH-SCCC-CODE-MODE-D">
1002 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title>
1003 <para>Series Concatenated Convolutional Code Rate.</para>
1004 <para>Possible values are the same as documented on
1005 &atscmh-sccc-code-mode;.</para>
1006 </section>
1007 </section>
1008 <section id="DTV-API-VERSION">
1009 <title><constant>DTV_API_VERSION</constant></title>
1010 <para>Returns the major/minor version of the DVB API</para>
1011 </section>
1012 <section id="DTV-CODE-RATE-HP">
1013 <title><constant>DTV_CODE_RATE_HP</constant></title>
1014 <para>Used on terrestrial transmissions. The acceptable values are
1015 the ones described at &fe-transmit-mode-t;.
1016 </para>
1017 </section>
1018 <section id="DTV-CODE-RATE-LP">
1019 <title><constant>DTV_CODE_RATE_LP</constant></title>
1020 <para>Used on terrestrial transmissions. The acceptable values are
1021 the ones described at &fe-transmit-mode-t;.
1022 </para>
1023
1024 </section>
1025
1026 <section id="DTV-GUARD-INTERVAL">
1027 <title><constant>DTV_GUARD_INTERVAL</constant></title>
1028
1029 <para>Possible values are:</para>
1030
1031<section id="fe-guard-interval-t">
1032<title>Modulation guard interval</title>
1033
1034<table pgwide="1" frame="none" id="fe-guard-interval">
1035 <title>enum fe_guard_interval</title>
1036 <tgroup cols="2">
1037 &cs-def;
1038 <thead>
1039 <row>
1040 <entry>ID</entry>
1041 <entry>Description</entry>
1042 </row>
1043 </thead>
1044 <tbody valign="top">
1045 <row>
1046 <entry id="GUARD-INTERVAL-AUTO"><constant>GUARD_INTERVAL_AUTO</constant></entry>
1047 <entry>Autodetect the guard interval</entry>
1048 </row><row>
1049 <entry id="GUARD-INTERVAL-1-128"><constant>GUARD_INTERVAL_1_128</constant></entry>
1050 <entry>Guard interval 1/128</entry>
1051 </row><row>
1052 <entry id="GUARD-INTERVAL-1-32"><constant>GUARD_INTERVAL_1_32</constant></entry>
1053 <entry>Guard interval 1/32</entry>
1054 </row><row>
1055 <entry id="GUARD-INTERVAL-1-16"><constant>GUARD_INTERVAL_1_16</constant></entry>
1056 <entry>Guard interval 1/16</entry>
1057 </row><row>
1058 <entry id="GUARD-INTERVAL-1-8"><constant>GUARD_INTERVAL_1_8</constant></entry>
1059 <entry>Guard interval 1/8</entry>
1060 </row><row>
1061 <entry id="GUARD-INTERVAL-1-4"><constant>GUARD_INTERVAL_1_4</constant></entry>
1062 <entry>Guard interval 1/4</entry>
1063 </row><row>
1064 <entry id="GUARD-INTERVAL-19-128"><constant>GUARD_INTERVAL_19_128</constant></entry>
1065 <entry>Guard interval 19/128</entry>
1066 </row><row>
1067 <entry id="GUARD-INTERVAL-19-256"><constant>GUARD_INTERVAL_19_256</constant></entry>
1068 <entry>Guard interval 19/256</entry>
1069 </row><row>
1070 <entry id="GUARD-INTERVAL-PN420"><constant>GUARD_INTERVAL_PN420</constant></entry>
1071 <entry>PN length 420 (1/4)</entry>
1072 </row><row>
1073 <entry id="GUARD-INTERVAL-PN595"><constant>GUARD_INTERVAL_PN595</constant></entry>
1074 <entry>PN length 595 (1/6)</entry>
1075 </row><row>
1076 <entry id="GUARD-INTERVAL-PN945"><constant>GUARD_INTERVAL_PN945</constant></entry>
1077 <entry>PN length 945 (1/9)</entry>
1078 </row>
1079 </tbody>
1080 </tgroup>
1081</table>
1082
1083 <para>Notes:</para>
1084 <para>1) If <constant>DTV_GUARD_INTERVAL</constant> is set the <constant>GUARD_INTERVAL_AUTO</constant> the hardware will
1085 try to find the correct guard interval (if capable) and will use TMCC to fill
1086 in the missing parameters.</para>
1087 <para>2) Intervals 1/128, 19/128 and 19/256 are used only for DVB-T2 at present</para>
1088 <para>3) DTMB specifies PN420, PN595 and PN945.</para>
1089</section>
1090 </section>
1091 <section id="DTV-TRANSMISSION-MODE">
1092 <title><constant>DTV_TRANSMISSION_MODE</constant></title>
1093
1094 <para>Specifies the number of carriers used by the standard.
1095 This is used only on OFTM-based standards, e. g.
1096 DVB-T/T2, ISDB-T, DTMB</para>
1097
1098<section id="fe-transmit-mode-t">
1099<title>enum fe_transmit_mode: Number of carriers per channel</title>
1100
1101<table pgwide="1" frame="none" id="fe-transmit-mode">
1102 <title>enum fe_transmit_mode</title>
1103 <tgroup cols="2">
1104 &cs-def;
1105 <thead>
1106 <row>
1107 <entry>ID</entry>
1108 <entry>Description</entry>
1109 </row>
1110 </thead>
1111 <tbody valign="top">
1112 <row>
1113 <entry id="TRANSMISSION-MODE-AUTO"><constant>TRANSMISSION_MODE_AUTO</constant></entry>
1114 <entry>Autodetect transmission mode. The hardware will try to find
1115 the correct FFT-size (if capable) to fill in the missing
1116 parameters.</entry>
1117 </row><row>
1118 <entry id="TRANSMISSION-MODE-1K"><constant>TRANSMISSION_MODE_1K</constant></entry>
1119 <entry>Transmission mode 1K</entry>
1120 </row><row>
1121 <entry id="TRANSMISSION-MODE-2K"><constant>TRANSMISSION_MODE_2K</constant></entry>
1122 <entry>Transmission mode 2K</entry>
1123 </row><row>
1124 <entry id="TRANSMISSION-MODE-8K"><constant>TRANSMISSION_MODE_8K</constant></entry>
1125 <entry>Transmission mode 8K</entry>
1126 </row><row>
1127 <entry id="TRANSMISSION-MODE-4K"><constant>TRANSMISSION_MODE_4K</constant></entry>
1128 <entry>Transmission mode 4K</entry>
1129 </row><row>
1130 <entry id="TRANSMISSION-MODE-16K"><constant>TRANSMISSION_MODE_16K</constant></entry>
1131 <entry>Transmission mode 16K</entry>
1132 </row><row>
1133 <entry id="TRANSMISSION-MODE-32K"><constant>TRANSMISSION_MODE_32K</constant></entry>
1134 <entry>Transmission mode 32K</entry>
1135 </row><row>
1136 <entry id="TRANSMISSION-MODE-C1"><constant>TRANSMISSION_MODE_C1</constant></entry>
1137 <entry>Single Carrier (C=1) transmission mode (DTMB)</entry>
1138 </row><row>
1139 <entry id="TRANSMISSION-MODE-C3780"><constant>TRANSMISSION_MODE_C3780</constant></entry>
1140 <entry>Multi Carrier (C=3780) transmission mode (DTMB)</entry>
1141 </row>
1142 </tbody>
1143 </tgroup>
1144</table>
1145
1146
1147 <para>Notes:</para>
1148 <para>1) ISDB-T supports three carrier/symbol-size: 8K, 4K, 2K. It is called
1149 'mode' in the standard: Mode 1 is 2K, mode 2 is 4K, mode 3 is 8K</para>
1150
1151 <para>2) If <constant>DTV_TRANSMISSION_MODE</constant> is set the <constant>TRANSMISSION_MODE_AUTO</constant> the
1152 hardware will try to find the correct FFT-size (if capable) and will
1153 use TMCC to fill in the missing parameters.</para>
1154 <para>3) DVB-T specifies 2K and 8K as valid sizes.</para>
1155 <para>4) DVB-T2 specifies 1K, 2K, 4K, 8K, 16K and 32K.</para>
1156 <para>5) DTMB specifies C1 and C3780.</para>
1157</section>
1158 </section>
1159 <section id="DTV-HIERARCHY">
1160 <title><constant>DTV_HIERARCHY</constant></title>
1161 <para>Frontend hierarchy</para>
1162
1163
1164<section id="fe-hierarchy-t">
1165<title>Frontend hierarchy</title>
1166
1167<table pgwide="1" frame="none" id="fe-hierarchy">
1168 <title>enum fe_hierarchy</title>
1169 <tgroup cols="2">
1170 &cs-def;
1171 <thead>
1172 <row>
1173 <entry>ID</entry>
1174 <entry>Description</entry>
1175 </row>
1176 </thead>
1177 <tbody valign="top">
1178 <row>
1179 <entry id="HIERARCHY-NONE"><constant>HIERARCHY_NONE</constant></entry>
1180 <entry>No hierarchy</entry>
1181 </row><row>
1182 <entry id="HIERARCHY-AUTO"><constant>HIERARCHY_AUTO</constant></entry>
1183 <entry>Autodetect hierarchy (if supported)</entry>
1184 </row><row>
1185 <entry id="HIERARCHY-1"><constant>HIERARCHY_1</constant></entry>
1186 <entry>Hierarchy 1</entry>
1187 </row><row>
1188 <entry id="HIERARCHY-2"><constant>HIERARCHY_2</constant></entry>
1189 <entry>Hierarchy 2</entry>
1190 </row><row>
1191 <entry id="HIERARCHY-4"><constant>HIERARCHY_4</constant></entry>
1192 <entry>Hierarchy 4</entry>
1193 </row>
1194 </tbody>
1195 </tgroup>
1196</table>
1197</section>
1198
1199 </section>
1200 <section id="DTV-STREAM-ID">
1201 <title><constant>DTV_STREAM_ID</constant></title>
1202 <para>DVB-S2, DVB-T2 and ISDB-S support the transmission of several
1203 streams on a single transport stream.
1204 This property enables the DVB driver to handle substream filtering,
1205 when supported by the hardware.
1206 By default, substream filtering is disabled.
1207 </para><para>
1208 For DVB-S2 and DVB-T2, the valid substream id range is from 0 to 255.
1209 </para><para>
1210 For ISDB, the valid substream id range is from 1 to 65535.
1211 </para><para>
1212 To disable it, you should use the special macro NO_STREAM_ID_FILTER.
1213 </para><para>
1214 Note: any value outside the id range also disables filtering.
1215 </para>
1216 </section>
1217 <section id="DTV-DVBT2-PLP-ID-LEGACY">
1218 <title><constant>DTV_DVBT2_PLP_ID_LEGACY</constant></title>
1219 <para>Obsolete, replaced with DTV_STREAM_ID.</para>
1220 </section>
1221 <section id="DTV-ENUM-DELSYS">
1222 <title><constant>DTV_ENUM_DELSYS</constant></title>
1223 <para>A Multi standard frontend needs to advertise the delivery systems provided.
1224 Applications need to enumerate the provided delivery systems, before using
1225 any other operation with the frontend. Prior to it's introduction,
1226 FE_GET_INFO was used to determine a frontend type. A frontend which
1227 provides more than a single delivery system, FE_GET_INFO doesn't help much.
1228 Applications which intends to use a multistandard frontend must enumerate
1229 the delivery systems associated with it, rather than trying to use
1230 FE_GET_INFO. In the case of a legacy frontend, the result is just the same
1231 as with FE_GET_INFO, but in a more structured format </para>
1232 </section>
1233 <section id="DTV-INTERLEAVING">
1234 <title><constant>DTV_INTERLEAVING</constant></title>
1235
1236<para>Time interleaving to be used. Currently, used only on DTMB.</para>
1237
1238<table pgwide="1" frame="none" id="fe-interleaving">
1239 <title>enum fe_interleaving</title>
1240 <tgroup cols="2">
1241 &cs-def;
1242 <thead>
1243 <row>
1244 <entry>ID</entry>
1245 <entry>Description</entry>
1246 </row>
1247 </thead>
1248 <tbody valign="top">
1249 <row>
1250 <entry id="INTERLEAVING-NONE"><constant>INTERLEAVING_NONE</constant></entry>
1251 <entry>No interleaving.</entry>
1252 </row><row>
1253 <entry id="INTERLEAVING-AUTO"><constant>INTERLEAVING_AUTO</constant></entry>
1254 <entry>Auto-detect interleaving.</entry>
1255 </row><row>
1256 <entry id="INTERLEAVING-240"><constant>INTERLEAVING_240</constant></entry>
1257 <entry>Interleaving of 240 symbols.</entry>
1258 </row><row>
1259 <entry id="INTERLEAVING-720"><constant>INTERLEAVING_720</constant></entry>
1260 <entry>Interleaving of 720 symbols.</entry>
1261 </row>
1262 </tbody>
1263 </tgroup>
1264</table>
1265
1266 </section>
1267 <section id="DTV-LNA">
1268 <title><constant>DTV_LNA</constant></title>
1269 <para>Low-noise amplifier.</para>
1270 <para>Hardware might offer controllable LNA which can be set manually
1271 using that parameter. Usually LNA could be found only from
1272 terrestrial devices if at all.</para>
1273 <para>Possible values: 0, 1, LNA_AUTO</para>
1274 <para>0, LNA off</para>
1275 <para>1, LNA on</para>
1276 <para>use the special macro LNA_AUTO to set LNA auto</para>
1277 </section>
1278</section>
1279
1280 <section id="frontend-stat-properties">
1281 <title>Frontend statistics indicators</title>
1282 <para>The values are returned via <constant>dtv_property.stat</constant>.
1283 If the property is supported, <constant>dtv_property.stat.len</constant> is bigger than zero.</para>
1284 <para>For most delivery systems, <constant>dtv_property.stat.len</constant>
1285 will be 1 if the stats is supported, and the properties will
1286 return a single value for each parameter.</para>
1287 <para>It should be noted, however, that new OFDM delivery systems
1288 like ISDB can use different modulation types for each group of
1289 carriers. On such standards, up to 3 groups of statistics can be
1290 provided, and <constant>dtv_property.stat.len</constant> is updated
1291 to reflect the "global" metrics, plus one metric per each carrier
1292 group (called "layer" on ISDB).</para>
1293 <para>So, in order to be consistent with other delivery systems, the first
1294 value at <link linkend="dtv-stats"><constant>dtv_property.stat.dtv_stats</constant></link>
1295 array refers to the global metric. The other elements of the array
1296 represent each layer, starting from layer A(index 1),
1297 layer B (index 2) and so on.</para>
1298 <para>The number of filled elements are stored at <constant>dtv_property.stat.len</constant>.</para>
1299 <para>Each element of the <constant>dtv_property.stat.dtv_stats</constant> array consists on two elements:</para>
1300 <itemizedlist mark='opencircle'>
1301 <listitem><para><constant>svalue</constant> or <constant>uvalue</constant>, where
1302 <constant>svalue</constant> is for signed values of the measure (dB measures)
1303 and <constant>uvalue</constant> is for unsigned values (counters, relative scale)</para></listitem>
1304 <listitem><para><constant>scale</constant> - Scale for the value. It can be:</para>
1305 <itemizedlist mark='bullet' id="fecap-scale-params">
1306 <listitem id="FE-SCALE-NOT-AVAILABLE"><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - The parameter is supported by the frontend, but it was not possible to collect it (could be a transitory or permanent condition)</para></listitem>
1307 <listitem id="FE-SCALE-DECIBEL"><para><constant>FE_SCALE_DECIBEL</constant> - parameter is a signed value, measured in 1/1000 dB</para></listitem>
1308 <listitem id="FE-SCALE-RELATIVE"><para><constant>FE_SCALE_RELATIVE</constant> - parameter is a unsigned value, where 0 means 0% and 65535 means 100%.</para></listitem>
1309 <listitem id="FE-SCALE-COUNTER"><para><constant>FE_SCALE_COUNTER</constant> - parameter is a unsigned value that counts the occurrence of an event, like bit error, block error, or lapsed time.</para></listitem>
1310 </itemizedlist>
1311 </listitem>
1312 </itemizedlist>
1313 <section id="DTV-STAT-SIGNAL-STRENGTH">
1314 <title><constant>DTV_STAT_SIGNAL_STRENGTH</constant></title>
1315 <para>Indicates the signal strength level at the analog part of the tuner or of the demod.</para>
1316 <para>Possible scales for this metric are:</para>
1317 <itemizedlist mark='bullet'>
1318 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1319 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - signal strength is in 0.001 dBm units, power measured in miliwatts. This value is generally negative.</para></listitem>
1320 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for power (actually, 0 to 65535).</para></listitem>
1321 </itemizedlist>
1322 </section>
1323 <section id="DTV-STAT-CNR">
1324 <title><constant>DTV_STAT_CNR</constant></title>
1325 <para>Indicates the Signal to Noise ratio for the main carrier.</para>
1326 <para>Possible scales for this metric are:</para>
1327 <itemizedlist mark='bullet'>
1328 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1329 <listitem><para><constant>FE_SCALE_DECIBEL</constant> - Signal/Noise ratio is in 0.001 dB units.</para></listitem>
1330 <listitem><para><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for Signal/Noise (actually, 0 to 65535).</para></listitem>
1331 </itemizedlist>
1332 </section>
1333 <section id="DTV-STAT-PRE-ERROR-BIT-COUNT">
1334 <title><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></title>
1335 <para>Measures the number of bit errors before the forward error correction (FEC) on the inner coding block (before Viterbi, LDPC or other inner code).</para>
1336 <para>This measure is taken during the same interval as <constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant>.</para>
1337 <para>In order to get the BER (Bit Error Rate) measurement, it should be divided by
1338 <link linkend="DTV-STAT-PRE-TOTAL-BIT-COUNT"><constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant></link>.</para>
1339 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1340 The frontend may reset it when a channel/transponder is tuned.</para>
1341 <para>Possible scales for this metric are:</para>
1342 <itemizedlist mark='bullet'>
1343 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1344 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted before the inner coding.</para></listitem>
1345 </itemizedlist>
1346 </section>
1347 <section id="DTV-STAT-PRE-TOTAL-BIT-COUNT">
1348 <title><constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant></title>
1349 <para>Measures the amount of bits received before the inner code block, during the same period as
1350 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
1351 <para>It should be noted that this measurement can be smaller than the total amount of bits on the transport stream,
1352 as the frontend may need to manually restart the measurement, losing some data between each measurement interval.</para>
1353 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1354 The frontend may reset it when a channel/transponder is tuned.</para>
1355 <para>Possible scales for this metric are:</para>
1356 <itemizedlist mark='bullet'>
1357 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1358 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
1359 <link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link>.</para></listitem>
1360 </itemizedlist>
1361 </section>
1362 <section id="DTV-STAT-POST-ERROR-BIT-COUNT">
1363 <title><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></title>
1364 <para>Measures the number of bit errors after the forward error correction (FEC) done by inner code block (after Viterbi, LDPC or other inner code).</para>
1365 <para>This measure is taken during the same interval as <constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant>.</para>
1366 <para>In order to get the BER (Bit Error Rate) measurement, it should be divided by
1367 <link linkend="DTV-STAT-POST-TOTAL-BIT-COUNT"><constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant></link>.</para>
1368 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1369 The frontend may reset it when a channel/transponder is tuned.</para>
1370 <para>Possible scales for this metric are:</para>
1371 <itemizedlist mark='bullet'>
1372 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1373 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted after the inner coding.</para></listitem>
1374 </itemizedlist>
1375 </section>
1376 <section id="DTV-STAT-POST-TOTAL-BIT-COUNT">
1377 <title><constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant></title>
1378 <para>Measures the amount of bits received after the inner coding, during the same period as
1379 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
1380 <para>It should be noted that this measurement can be smaller than the total amount of bits on the transport stream,
1381 as the frontend may need to manually restart the measurement, losing some data between each measurement interval.</para>
1382 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1383 The frontend may reset it when a channel/transponder is tuned.</para>
1384 <para>Possible scales for this metric are:</para>
1385 <itemizedlist mark='bullet'>
1386 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1387 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
1388 <link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link>.</para></listitem>
1389 </itemizedlist>
1390 </section>
1391 <section id="DTV-STAT-ERROR-BLOCK-COUNT">
1392 <title><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></title>
1393 <para>Measures the number of block errors after the outer forward error correction coding (after Reed-Solomon or other outer code).</para>
1394 <para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
1395 The frontend may reset it when a channel/transponder is tuned.</para>
1396 <para>Possible scales for this metric are:</para>
1397 <itemizedlist mark='bullet'>
1398 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1399 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of error blocks counted after the outer coding.</para></listitem>
1400 </itemizedlist>
1401 </section>
1402 <section id="DTV-STAT-TOTAL-BLOCK-COUNT">
1403 <title><constant>DTV-STAT_TOTAL_BLOCK_COUNT</constant></title>
1404 <para>Measures the total number of blocks received during the same period as
1405 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link> measurement was taken.</para>
1406 <para>It can be used to calculate the PER indicator, by dividing
1407 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>
1408 by <link linkend="DTV-STAT-TOTAL-BLOCK-COUNT"><constant>DTV-STAT-TOTAL-BLOCK-COUNT</constant></link>.</para>
1409 <para>Possible scales for this metric are:</para>
1410 <itemizedlist mark='bullet'>
1411 <listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</para></listitem>
1412 <listitem><para><constant>FE_SCALE_COUNTER</constant> - Number of blocks counted while measuring
1413 <link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>.</para></listitem>
1414 </itemizedlist>
1415 </section>
1416 </section>
1417
1418 <section id="frontend-property-terrestrial-systems">
1419 <title>Properties used on terrestrial delivery systems</title>
1420 <section id="dvbt-params">
1421 <title>DVB-T delivery system</title>
1422 <para>The following parameters are valid for DVB-T:</para>
1423 <itemizedlist mark='opencircle'>
1424 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1425 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1426 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1427 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1428 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1429 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1430 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1431 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1432 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
1433 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
1434 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1435 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1436 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
1437 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1438 </itemizedlist>
1439 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1440 </section>
1441 <section id="dvbt2-params">
1442 <title>DVB-T2 delivery system</title>
1443 <para>DVB-T2 support is currently in the early stages
1444 of development, so expect that this section maygrow and become
1445 more detailed with time.</para>
1446 <para>The following parameters are valid for DVB-T2:</para>
1447 <itemizedlist mark='opencircle'>
1448 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1449 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1450 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1451 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1452 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1453 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1454 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1455 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1456 <listitem><para><link linkend="DTV-CODE-RATE-HP"><constant>DTV_CODE_RATE_HP</constant></link></para></listitem>
1457 <listitem><para><link linkend="DTV-CODE-RATE-LP"><constant>DTV_CODE_RATE_LP</constant></link></para></listitem>
1458 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1459 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1460 <listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
1461 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1462 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1463 </itemizedlist>
1464 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1465 </section>
1466 <section id="isdbt">
1467 <title>ISDB-T delivery system</title>
1468 <para>This ISDB-T/ISDB-Tsb API extension should reflect all information
1469 needed to tune any ISDB-T/ISDB-Tsb hardware. Of course it is possible
1470 that some very sophisticated devices won't need certain parameters to
1471 tune.</para>
1472 <para>The information given here should help application writers to know how
1473 to handle ISDB-T and ISDB-Tsb hardware using the Linux DVB-API.</para>
1474 <para>The details given here about ISDB-T and ISDB-Tsb are just enough to
1475 basically show the dependencies between the needed parameter values,
1476 but surely some information is left out. For more detailed information
1477 see the following documents:</para>
1478 <para>ARIB STD-B31 - "Transmission System for Digital Terrestrial
1479 Television Broadcasting" and</para>
1480 <para>ARIB TR-B14 - "Operational Guidelines for Digital Terrestrial
1481 Television Broadcasting".</para>
1482 <para>In order to understand the ISDB specific parameters,
1483 one has to have some knowledge the channel structure in
1484 ISDB-T and ISDB-Tsb. I.e. it has to be known to
1485 the reader that an ISDB-T channel consists of 13 segments,
1486 that it can have up to 3 layer sharing those segments,
1487 and things like that.</para>
1488 <para>The following parameters are valid for ISDB-T:</para>
1489 <itemizedlist mark='opencircle'>
1490 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1491 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1492 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1493 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1494 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1495 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1496 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1497 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1498 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1499 <listitem><para><link linkend="DTV-ISDBT-LAYER-ENABLED"><constant>DTV_ISDBT_LAYER_ENABLED</constant></link></para></listitem>
1500 <listitem><para><link linkend="DTV-ISDBT-PARTIAL-RECEPTION"><constant>DTV_ISDBT_PARTIAL_RECEPTION</constant></link></para></listitem>
1501 <listitem><para><link linkend="DTV-ISDBT-SOUND-BROADCASTING"><constant>DTV_ISDBT_SOUND_BROADCASTING</constant></link></para></listitem>
1502 <listitem><para><link linkend="DTV-ISDBT-SB-SUBCHANNEL-ID"><constant>DTV_ISDBT_SB_SUBCHANNEL_ID</constant></link></para></listitem>
1503 <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-IDX"><constant>DTV_ISDBT_SB_SEGMENT_IDX</constant></link></para></listitem>
1504 <listitem><para><link linkend="DTV-ISDBT-SB-SEGMENT-COUNT"><constant>DTV_ISDBT_SB_SEGMENT_COUNT</constant></link></para></listitem>
1505 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERA_FEC</constant></link></para></listitem>
1506 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERA_MODULATION</constant></link></para></listitem>
1507 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERA_SEGMENT_COUNT</constant></link></para></listitem>
1508 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERA_TIME_INTERLEAVING</constant></link></para></listitem>
1509 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERB_FEC</constant></link></para></listitem>
1510 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERB_MODULATION</constant></link></para></listitem>
1511 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERB_SEGMENT_COUNT</constant></link></para></listitem>
1512 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERB_TIME_INTERLEAVING</constant></link></para></listitem>
1513 <listitem><para><link linkend="DTV-ISDBT-LAYER-FEC"><constant>DTV_ISDBT_LAYERC_FEC</constant></link></para></listitem>
1514 <listitem><para><link linkend="DTV-ISDBT-LAYER-MODULATION"><constant>DTV_ISDBT_LAYERC_MODULATION</constant></link></para></listitem>
1515 <listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERC_SEGMENT_COUNT</constant></link></para></listitem>
1516 <listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERC_TIME_INTERLEAVING</constant></link></para></listitem>
1517 </itemizedlist>
1518 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1519 </section>
1520 <section id="atsc-params">
1521 <title>ATSC delivery system</title>
1522 <para>The following parameters are valid for ATSC:</para>
1523 <itemizedlist mark='opencircle'>
1524 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1525 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1526 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1527 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1528 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1529 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1530 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1531 </itemizedlist>
1532 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1533 </section>
1534 <section id="atscmh-params">
1535 <title>ATSC-MH delivery system</title>
1536 <para>The following parameters are valid for ATSC-MH:</para>
1537 <itemizedlist mark='opencircle'>
1538 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1539 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1540 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1541 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1542 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1543 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1544 <listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem>
1545 <listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem>
1546 <listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem>
1547 <listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem>
1548 <listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem>
1549 <listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem>
1550 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem>
1551 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem>
1552 <listitem><para><link linkend="DTV-ATSCMH-RS-CODE-MODE-PRI"><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></link></para></listitem>
1553 <listitem><para><link linkend="DTV-ATSCMH-RS-CODE-MODE-SEC"><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></link></para></listitem>
1554 <listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem>
1555 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem>
1556 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem>
1557 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
1558 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
1559 </itemizedlist>
1560 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1561 </section>
1562 <section id="dtmb-params">
1563 <title>DTMB delivery system</title>
1564 <para>The following parameters are valid for DTMB:</para>
1565 <itemizedlist mark='opencircle'>
1566 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1567 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1568 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1569 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1570 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1571 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1572 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
1573 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1574 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1575 <listitem><para><link linkend="DTV-GUARD-INTERVAL"><constant>DTV_GUARD_INTERVAL</constant></link></para></listitem>
1576 <listitem><para><link linkend="DTV-TRANSMISSION-MODE"><constant>DTV_TRANSMISSION_MODE</constant></link></para></listitem>
1577 <listitem><para><link linkend="DTV-INTERLEAVING"><constant>DTV_INTERLEAVING</constant></link></para></listitem>
1578 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1579 </itemizedlist>
1580 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1581 </section>
1582 </section>
1583 <section id="frontend-property-cable-systems">
1584 <title>Properties used on cable delivery systems</title>
1585 <section id="dvbc-params">
1586 <title>DVB-C delivery system</title>
1587 <para>The DVB-C Annex-A is the widely used cable standard. Transmission uses QAM modulation.</para>
1588 <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>
1589 <para>The following parameters are valid for DVB-C Annex A/C:</para>
1590 <itemizedlist mark='opencircle'>
1591 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1592 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1593 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1594 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1595 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1596 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1597 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1598 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1599 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1600 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1601 </itemizedlist>
1602 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1603 </section>
1604 <section id="dvbc-annex-b-params">
1605 <title>DVB-C Annex B delivery system</title>
1606 <para>The DVB-C Annex-B is only used on a few Countries like the United States.</para>
1607 <para>The following parameters are valid for DVB-C Annex B:</para>
1608 <itemizedlist mark='opencircle'>
1609 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1610 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1611 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1612 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1613 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1614 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1615 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1616 <listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
1617 </itemizedlist>
1618 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1619 </section>
1620 </section>
1621 <section id="frontend-property-satellite-systems">
1622 <title>Properties used on satellite delivery systems</title>
1623 <section id="dvbs-params">
1624 <title>DVB-S delivery system</title>
1625 <para>The following parameters are valid for DVB-S:</para>
1626 <itemizedlist mark='opencircle'>
1627 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1628 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1629 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1630 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1631 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1632 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1633 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1634 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1635 <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
1636 <listitem><para><link linkend="DTV-TONE"><constant>DTV_TONE</constant></link></para></listitem>
1637 </itemizedlist>
1638 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1639 <para>Future implementations might add those two missing parameters:</para>
1640 <itemizedlist mark='opencircle'>
1641 <listitem><para><link linkend="DTV-DISEQC-MASTER"><constant>DTV_DISEQC_MASTER</constant></link></para></listitem>
1642 <listitem><para><link linkend="DTV-DISEQC-SLAVE-REPLY"><constant>DTV_DISEQC_SLAVE_REPLY</constant></link></para></listitem>
1643 </itemizedlist>
1644 </section>
1645 <section id="dvbs2-params">
1646 <title>DVB-S2 delivery system</title>
1647 <para>In addition to all parameters valid for DVB-S, DVB-S2 supports the following parameters:</para>
1648 <itemizedlist mark='opencircle'>
1649 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1650 <listitem><para><link linkend="DTV-PILOT"><constant>DTV_PILOT</constant></link></para></listitem>
1651 <listitem><para><link linkend="DTV-ROLLOFF"><constant>DTV_ROLLOFF</constant></link></para></listitem>
1652 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1653 </itemizedlist>
1654 <para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
1655 </section>
1656 <section id="turbo-params">
1657 <title>Turbo code delivery system</title>
1658 <para>In addition to all parameters valid for DVB-S, turbo code supports the following parameters:</para>
1659 <itemizedlist mark='opencircle'>
1660 <listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
1661 </itemizedlist>
1662 </section>
1663 <section id="isdbs-params">
1664 <title>ISDB-S delivery system</title>
1665 <para>The following parameters are valid for ISDB-S:</para>
1666 <itemizedlist mark='opencircle'>
1667 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
1668 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
1669 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
1670 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
1671 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
1672 <listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
1673 <listitem><para><link linkend="DTV-SYMBOL-RATE"><constant>DTV_SYMBOL_RATE</constant></link></para></listitem>
1674 <listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
1675 <listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
1676 <listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
1677 </itemizedlist>
1678 </section>
1679 </section>
1680</section>
diff --git a/Documentation/DocBook/media/dvb/dvbstb.pdf b/Documentation/DocBook/media/dvb/dvbstb.pdf
deleted file mode 100644
index 0fa75d90c3eb..000000000000
--- a/Documentation/DocBook/media/dvb/dvbstb.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/dvb/examples.xml b/Documentation/DocBook/media/dvb/examples.xml
deleted file mode 100644
index 837fb3b64b72..000000000000
--- a/Documentation/DocBook/media/dvb/examples.xml
+++ /dev/null
@@ -1,367 +0,0 @@
1<title>Examples</title>
2<para>In this section we would like to present some examples for using the DVB API.
3</para>
4<para>NOTE: This section is out of date, and the code below won't even
5 compile. Please refer to the
6 <ulink url="https://linuxtv.org/docs/libdvbv5/index.html">libdvbv5</ulink>
7 for updated/recommended examples.
8</para>
9
10<section id="tuning">
11<title>Tuning</title>
12<para>We will start with a generic tuning subroutine that uses the frontend and SEC, as well as
13the demux devices. The example is given for QPSK tuners, but can easily be adjusted for
14QAM.
15</para>
16<programlisting>
17 #include &#x003C;sys/ioctl.h&#x003E;
18 #include &#x003C;stdio.h&#x003E;
19 #include &#x003C;stdint.h&#x003E;
20 #include &#x003C;sys/types.h&#x003E;
21 #include &#x003C;sys/stat.h&#x003E;
22 #include &#x003C;fcntl.h&#x003E;
23 #include &#x003C;time.h&#x003E;
24 #include &#x003C;unistd.h&#x003E;
25
26 #include &#x003C;linux/dvb/dmx.h&#x003E;
27 #include &#x003C;linux/dvb/frontend.h&#x003E;
28 #include &#x003C;linux/dvb/sec.h&#x003E;
29 #include &#x003C;sys/poll.h&#x003E;
30
31 #define DMX "/dev/dvb/adapter0/demux1"
32 #define FRONT "/dev/dvb/adapter0/frontend1"
33 #define SEC "/dev/dvb/adapter0/sec1"
34
35 /&#x22C6; routine for checking if we have a signal and other status information&#x22C6;/
36 int FEReadStatus(int fd, fe_status_t &#x22C6;stat)
37 {
38 int ans;
39
40 if ( (ans = ioctl(fd,FE_READ_STATUS,stat) &#x003C; 0)){
41 perror("FE READ STATUS: ");
42 return -1;
43 }
44
45 if (&#x22C6;stat &amp; FE_HAS_POWER)
46 printf("FE HAS POWER\n");
47
48 if (&#x22C6;stat &amp; FE_HAS_SIGNAL)
49 printf("FE HAS SIGNAL\n");
50
51 if (&#x22C6;stat &amp; FE_SPECTRUM_INV)
52 printf("SPEKTRUM INV\n");
53
54 return 0;
55 }
56
57
58 /&#x22C6; tune qpsk &#x22C6;/
59 /&#x22C6; freq: frequency of transponder &#x22C6;/
60 /&#x22C6; vpid, apid, tpid: PIDs of video, audio and teletext TS packets &#x22C6;/
61 /&#x22C6; diseqc: DiSEqC address of the used LNB &#x22C6;/
62 /&#x22C6; pol: Polarisation &#x22C6;/
63 /&#x22C6; srate: Symbol Rate &#x22C6;/
64 /&#x22C6; fec. FEC &#x22C6;/
65 /&#x22C6; lnb_lof1: local frequency of lower LNB band &#x22C6;/
66 /&#x22C6; lnb_lof2: local frequency of upper LNB band &#x22C6;/
67 /&#x22C6; lnb_slof: switch frequency of LNB &#x22C6;/
68
69 int set_qpsk_channel(int freq, int vpid, int apid, int tpid,
70 int diseqc, int pol, int srate, int fec, int lnb_lof1,
71 int lnb_lof2, int lnb_slof)
72 {
73 struct secCommand scmd;
74 struct secCmdSequence scmds;
75 struct dmx_pes_filter_params pesFilterParams;
76 FrontendParameters frp;
77 struct pollfd pfd[1];
78 FrontendEvent event;
79 int demux1, demux2, demux3, front;
80
81 frequency = (uint32_t) freq;
82 symbolrate = (uint32_t) srate;
83
84 if((front = open(FRONT,O_RDWR)) &#x003C; 0){
85 perror("FRONTEND DEVICE: ");
86 return -1;
87 }
88
89 if((sec = open(SEC,O_RDWR)) &#x003C; 0){
90 perror("SEC DEVICE: ");
91 return -1;
92 }
93
94 if (demux1 &#x003C; 0){
95 if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
96 &#x003C; 0){
97 perror("DEMUX DEVICE: ");
98 return -1;
99 }
100 }
101
102 if (demux2 &#x003C; 0){
103 if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
104 &#x003C; 0){
105 perror("DEMUX DEVICE: ");
106 return -1;
107 }
108 }
109
110 if (demux3 &#x003C; 0){
111 if ((demux3=open(DMX, O_RDWR|O_NONBLOCK))
112 &#x003C; 0){
113 perror("DEMUX DEVICE: ");
114 return -1;
115 }
116 }
117
118 if (freq &#x003C; lnb_slof) {
119 frp.Frequency = (freq - lnb_lof1);
120 scmds.continuousTone = SEC_TONE_OFF;
121 } else {
122 frp.Frequency = (freq - lnb_lof2);
123 scmds.continuousTone = SEC_TONE_ON;
124 }
125 frp.Inversion = INVERSION_AUTO;
126 if (pol) scmds.voltage = SEC_VOLTAGE_18;
127 else scmds.voltage = SEC_VOLTAGE_13;
128
129 scmd.type=0;
130 scmd.u.diseqc.addr=0x10;
131 scmd.u.diseqc.cmd=0x38;
132 scmd.u.diseqc.numParams=1;
133 scmd.u.diseqc.params[0] = 0xF0 | ((diseqc &#x22C6; 4) &amp; 0x0F) |
134 (scmds.continuousTone == SEC_TONE_ON ? 1 : 0) |
135 (scmds.voltage==SEC_VOLTAGE_18 ? 2 : 0);
136
137 scmds.miniCommand=SEC_MINI_NONE;
138 scmds.numCommands=1;
139 scmds.commands=&amp;scmd;
140 if (ioctl(sec, SEC_SEND_SEQUENCE, &amp;scmds) &#x003C; 0){
141 perror("SEC SEND: ");
142 return -1;
143 }
144
145 if (ioctl(sec, SEC_SEND_SEQUENCE, &amp;scmds) &#x003C; 0){
146 perror("SEC SEND: ");
147 return -1;
148 }
149
150 frp.u.qpsk.SymbolRate = srate;
151 frp.u.qpsk.FEC_inner = fec;
152
153 if (ioctl(front, FE_SET_FRONTEND, &amp;frp) &#x003C; 0){
154 perror("QPSK TUNE: ");
155 return -1;
156 }
157
158 pfd[0].fd = front;
159 pfd[0].events = POLLIN;
160
161 if (poll(pfd,1,3000)){
162 if (pfd[0].revents &amp; POLLIN){
163 printf("Getting QPSK event\n");
164 if ( ioctl(front, FE_GET_EVENT, &amp;event)
165
166 == -EOVERFLOW){
167 perror("qpsk get event");
168 return -1;
169 }
170 printf("Received ");
171 switch(event.type){
172 case FE_UNEXPECTED_EV:
173 printf("unexpected event\n");
174 return -1;
175 case FE_FAILURE_EV:
176 printf("failure event\n");
177 return -1;
178
179 case FE_COMPLETION_EV:
180 printf("completion event\n");
181 }
182 }
183 }
184
185
186 pesFilterParams.pid = vpid;
187 pesFilterParams.input = DMX_IN_FRONTEND;
188 pesFilterParams.output = DMX_OUT_DECODER;
189 pesFilterParams.pes_type = DMX_PES_VIDEO;
190 pesFilterParams.flags = DMX_IMMEDIATE_START;
191 if (ioctl(demux1, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
192 perror("set_vpid");
193 return -1;
194 }
195
196 pesFilterParams.pid = apid;
197 pesFilterParams.input = DMX_IN_FRONTEND;
198 pesFilterParams.output = DMX_OUT_DECODER;
199 pesFilterParams.pes_type = DMX_PES_AUDIO;
200 pesFilterParams.flags = DMX_IMMEDIATE_START;
201 if (ioctl(demux2, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
202 perror("set_apid");
203 return -1;
204 }
205
206 pesFilterParams.pid = tpid;
207 pesFilterParams.input = DMX_IN_FRONTEND;
208 pesFilterParams.output = DMX_OUT_DECODER;
209 pesFilterParams.pes_type = DMX_PES_TELETEXT;
210 pesFilterParams.flags = DMX_IMMEDIATE_START;
211 if (ioctl(demux3, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
212 perror("set_tpid");
213 return -1;
214 }
215
216 return has_signal(fds);
217 }
218
219</programlisting>
220<para>The program assumes that you are using a universal LNB and a standard DiSEqC
221switch with up to 4 addresses. Of course, you could build in some more checking if
222tuning was successful and maybe try to repeat the tuning process. Depending on the
223external hardware, i.e. LNB and DiSEqC switch, and weather conditions this may be
224necessary.
225</para>
226</section>
227
228<section id="the_dvr_device">
229<title>The DVR device</title>
230<para>The following program code shows how to use the DVR device for recording.
231</para>
232<programlisting>
233 #include &#x003C;sys/ioctl.h&#x003E;
234 #include &#x003C;stdio.h&#x003E;
235 #include &#x003C;stdint.h&#x003E;
236 #include &#x003C;sys/types.h&#x003E;
237 #include &#x003C;sys/stat.h&#x003E;
238 #include &#x003C;fcntl.h&#x003E;
239 #include &#x003C;time.h&#x003E;
240 #include &#x003C;unistd.h&#x003E;
241
242 #include &#x003C;linux/dvb/dmx.h&#x003E;
243 #include &#x003C;linux/dvb/video.h&#x003E;
244 #include &#x003C;sys/poll.h&#x003E;
245 #define DVR "/dev/dvb/adapter0/dvr1"
246 #define AUDIO "/dev/dvb/adapter0/audio1"
247 #define VIDEO "/dev/dvb/adapter0/video1"
248
249 #define BUFFY (188&#x22C6;20)
250 #define MAX_LENGTH (1024&#x22C6;1024&#x22C6;5) /&#x22C6; record 5MB &#x22C6;/
251
252
253 /&#x22C6; switch the demuxes to recording, assuming the transponder is tuned &#x22C6;/
254
255 /&#x22C6; demux1, demux2: file descriptor of video and audio filters &#x22C6;/
256 /&#x22C6; vpid, apid: PIDs of video and audio channels &#x22C6;/
257
258 int switch_to_record(int demux1, int demux2, uint16_t vpid, uint16_t apid)
259 {
260 struct dmx_pes_filter_params pesFilterParams;
261
262 if (demux1 &#x003C; 0){
263 if ((demux1=open(DMX, O_RDWR|O_NONBLOCK))
264 &#x003C; 0){
265 perror("DEMUX DEVICE: ");
266 return -1;
267 }
268 }
269
270 if (demux2 &#x003C; 0){
271 if ((demux2=open(DMX, O_RDWR|O_NONBLOCK))
272 &#x003C; 0){
273 perror("DEMUX DEVICE: ");
274 return -1;
275 }
276 }
277
278 pesFilterParams.pid = vpid;
279 pesFilterParams.input = DMX_IN_FRONTEND;
280 pesFilterParams.output = DMX_OUT_TS_TAP;
281 pesFilterParams.pes_type = DMX_PES_VIDEO;
282 pesFilterParams.flags = DMX_IMMEDIATE_START;
283 if (ioctl(demux1, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
284 perror("DEMUX DEVICE");
285 return -1;
286 }
287 pesFilterParams.pid = apid;
288 pesFilterParams.input = DMX_IN_FRONTEND;
289 pesFilterParams.output = DMX_OUT_TS_TAP;
290 pesFilterParams.pes_type = DMX_PES_AUDIO;
291 pesFilterParams.flags = DMX_IMMEDIATE_START;
292 if (ioctl(demux2, DMX_SET_PES_FILTER, &amp;pesFilterParams) &#x003C; 0){
293 perror("DEMUX DEVICE");
294 return -1;
295 }
296 return 0;
297 }
298
299 /&#x22C6; start recording MAX_LENGTH , assuming the transponder is tuned &#x22C6;/
300
301 /&#x22C6; demux1, demux2: file descriptor of video and audio filters &#x22C6;/
302 /&#x22C6; vpid, apid: PIDs of video and audio channels &#x22C6;/
303 int record_dvr(int demux1, int demux2, uint16_t vpid, uint16_t apid)
304 {
305 int i;
306 int len;
307 int written;
308 uint8_t buf[BUFFY];
309 uint64_t length;
310 struct pollfd pfd[1];
311 int dvr, dvr_out;
312
313 /&#x22C6; open dvr device &#x22C6;/
314 if ((dvr = open(DVR, O_RDONLY|O_NONBLOCK)) &#x003C; 0){
315 perror("DVR DEVICE");
316 return -1;
317 }
318
319 /&#x22C6; switch video and audio demuxes to dvr &#x22C6;/
320 printf ("Switching dvr on\n");
321 i = switch_to_record(demux1, demux2, vpid, apid);
322 printf("finished: ");
323
324 printf("Recording %2.0f MB of test file in TS format\n",
325 MAX_LENGTH/(1024.0&#x22C6;1024.0));
326 length = 0;
327
328 /&#x22C6; open output file &#x22C6;/
329 if ((dvr_out = open(DVR_FILE,O_WRONLY|O_CREAT
330 |O_TRUNC, S_IRUSR|S_IWUSR
331 |S_IRGRP|S_IWGRP|S_IROTH|
332 S_IWOTH)) &#x003C; 0){
333 perror("Can't open file for dvr test");
334 return -1;
335 }
336
337 pfd[0].fd = dvr;
338 pfd[0].events = POLLIN;
339
340 /&#x22C6; poll for dvr data and write to file &#x22C6;/
341 while (length &#x003C; MAX_LENGTH ) {
342 if (poll(pfd,1,1)){
343 if (pfd[0].revents &amp; POLLIN){
344 len = read(dvr, buf, BUFFY);
345 if (len &#x003C; 0){
346 perror("recording");
347 return -1;
348 }
349 if (len &#x003E; 0){
350 written = 0;
351 while (written &#x003C; len)
352 written +=
353 write (dvr_out,
354 buf, len);
355 length += len;
356 printf("written %2.0f MB\r",
357 length/1024./1024.);
358 }
359 }
360 }
361 }
362 return 0;
363 }
364
365</programlisting>
366
367</section>
diff --git a/Documentation/DocBook/media/dvb/fe-diseqc-recv-slave-reply.xml b/Documentation/DocBook/media/dvb/fe-diseqc-recv-slave-reply.xml
deleted file mode 100644
index 4595dbfff208..000000000000
--- a/Documentation/DocBook/media/dvb/fe-diseqc-recv-slave-reply.xml
+++ /dev/null
@@ -1,78 +0,0 @@
1<refentry id="FE_DISEQC_RECV_SLAVE_REPLY">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_RECV_SLAVE_REPLY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_RECV_SLAVE_REPLY</refname>
9 <refpurpose>Receives reply from a DiSEqC 2.0 command</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 dvb_diseqc_slave_reply *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_DISEQC_RECV_SLAVE_REPLY</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>argp</parameter></term>
40 <listitem>
41 <para>pointer to &dvb-diseqc-slave-reply;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50 <para>Receives reply from a DiSEqC 2.0 command.</para>
51&return-value-dvb;
52
53<table pgwide="1" frame="none" id="dvb-diseqc-slave-reply">
54 <title>struct <structname>dvb_diseqc_slave_reply</structname></title>
55 <tgroup cols="3">
56 &cs-str;
57 <tbody valign="top">
58 <row>
59 <entry>uint8_t</entry>
60 <entry>msg[4]</entry>
61 <entry>DiSEqC message (framing, data[3])</entry>
62 </row><row>
63 <entry>uint8_t</entry>
64 <entry>msg_len</entry>
65 <entry>Length of the DiSEqC message. Valid values are 0 to 4,
66 where 0 means no msg</entry>
67 </row><row>
68 <entry>int</entry>
69 <entry>timeout</entry>
70 <entry>Return from ioctl after timeout ms with errorcode when no
71 message was received</entry>
72 </row>
73 </tbody>
74 </tgroup>
75</table>
76
77</refsect1>
78</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-diseqc-reset-overload.xml b/Documentation/DocBook/media/dvb/fe-diseqc-reset-overload.xml
deleted file mode 100644
index c104df77ecd0..000000000000
--- a/Documentation/DocBook/media/dvb/fe-diseqc-reset-overload.xml
+++ /dev/null
@@ -1,51 +0,0 @@
1<refentry id="FE_DISEQC_RESET_OVERLOAD">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_RESET_OVERLOAD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_RESET_OVERLOAD</refname>
9 <refpurpose>Restores the power to the antenna subsystem, if it was powered
10 off due to power overload.</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>NULL</paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_DISEQC_RESET_OVERLOAD</para>
37 </listitem>
38 </varlistentry>
39 </variablelist>
40 </refsect1>
41
42 <refsect1>
43 <title>Description</title>
44
45 <para>If the bus has been automatically powered off due to power overload, this ioctl
46 call restores the power to the bus. The call requires read/write access to the
47 device. This call has no effect if the device is manually powered off. Not all
48 DVB adapters support this ioctl.</para>
49&return-value-dvb;
50</refsect1>
51</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-diseqc-send-burst.xml b/Documentation/DocBook/media/dvb/fe-diseqc-send-burst.xml
deleted file mode 100644
index 9f6a68f32de3..000000000000
--- a/Documentation/DocBook/media/dvb/fe-diseqc-send-burst.xml
+++ /dev/null
@@ -1,89 +0,0 @@
1<refentry id="FE_DISEQC_SEND_BURST">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_SEND_BURST</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_SEND_BURST</refname>
9 <refpurpose>Sends a 22KHz tone burst for 2x1 mini DiSEqC satellite selection.</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>enum fe_sec_mini_cmd *<parameter>tone</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_DISEQC_SEND_BURST</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>tone</parameter></term>
40 <listitem>
41 <para>pointer to &fe-sec-mini-cmd;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50<para>This ioctl is used to set the generation of a 22kHz tone burst for mini
51 DiSEqC satellite
52 selection for 2x1 switches.
53 This call requires read/write permissions.</para>
54<para>It provides support for what's specified at
55 <ulink url="http://www.eutelsat.com/files/contributed/satellites/pdf/Diseqc/associated%20docs/simple_tone_burst_detec.pdf">Digital Satellite Equipment Control
56 (DiSEqC) - Simple "ToneBurst" Detection Circuit specification.</ulink>
57 </para>
58&return-value-dvb;
59</refsect1>
60
61<refsect1 id="fe-sec-mini-cmd-t">
62<title>enum fe_sec_mini_cmd</title>
63
64<table pgwide="1" frame="none" id="fe-sec-mini-cmd">
65 <title>enum fe_sec_mini_cmd</title>
66 <tgroup cols="2">
67 &cs-def;
68 <thead>
69 <row>
70 <entry>ID</entry>
71 <entry>Description</entry>
72 </row>
73 </thead>
74 <tbody valign="top">
75 <row>
76 <entry align="char" id="SEC-MINI-A"><constant>SEC_MINI_A</constant></entry>
77 <entry align="char">Sends a mini-DiSEqC 22kHz '0' Tone Burst to
78 select satellite-A</entry>
79 </row><row>
80 <entry align="char" id="SEC-MINI-B"><constant>SEC_MINI_B</constant></entry>
81 <entry align="char">Sends a mini-DiSEqC 22kHz '1' Data Burst to
82 select satellite-B</entry>
83 </row>
84 </tbody>
85 </tgroup>
86</table>
87</refsect1>
88
89</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-diseqc-send-master-cmd.xml b/Documentation/DocBook/media/dvb/fe-diseqc-send-master-cmd.xml
deleted file mode 100644
index 38cf313e121b..000000000000
--- a/Documentation/DocBook/media/dvb/fe-diseqc-send-master-cmd.xml
+++ /dev/null
@@ -1,72 +0,0 @@
1<refentry id="FE_DISEQC_SEND_MASTER_CMD">
2 <refmeta>
3 <refentrytitle>ioctl FE_DISEQC_SEND_MASTER_CMD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_DISEQC_SEND_MASTER_CMD</refname>
9 <refpurpose>Sends a DiSEqC command</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 dvb_diseqc_master_cmd *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_DISEQC_SEND_MASTER_CMD</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>argp</parameter></term>
40 <listitem>
41 <para>pointer to &dvb-diseqc-master-cmd;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50 <para>Sends a DiSEqC command to the antenna subsystem.</para>
51&return-value-dvb;
52
53<table pgwide="1" frame="none" id="dvb-diseqc-master-cmd">
54 <title>struct <structname>dvb_diseqc_master_cmd</structname></title>
55 <tgroup cols="3">
56 &cs-str;
57 <tbody valign="top">
58 <row>
59 <entry>uint8_t</entry>
60 <entry>msg[6]</entry>
61 <entry>DiSEqC message (framing, address, command, data[3])</entry>
62 </row><row>
63 <entry>uint8_t</entry>
64 <entry>msg_len</entry>
65 <entry>Length of the DiSEqC message. Valid values are 3 to 6</entry>
66 </row>
67 </tbody>
68 </tgroup>
69</table>
70
71</refsect1>
72</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-enable-high-lnb-voltage.xml b/Documentation/DocBook/media/dvb/fe-enable-high-lnb-voltage.xml
deleted file mode 100644
index c11890b184ad..000000000000
--- a/Documentation/DocBook/media/dvb/fe-enable-high-lnb-voltage.xml
+++ /dev/null
@@ -1,61 +0,0 @@
1<refentry id="FE_ENABLE_HIGH_LNB_VOLTAGE">
2 <refmeta>
3 <refentrytitle>ioctl FE_ENABLE_HIGH_LNB_VOLTAGE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_ENABLE_HIGH_LNB_VOLTAGE</refname>
9 <refpurpose>Select output DC level between normal LNBf voltages or higher
10 LNBf voltages.</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>unsigned int <parameter>high</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_ENABLE_HIGH_LNB_VOLTAGE</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>high</parameter></term>
41 <listitem>
42 <para>Valid flags:</para>
43 <itemizedlist>
44 <listitem><para>0 - normal 13V and 18V.</para></listitem>
45 <listitem><para>&gt;0 - enables slightly higher voltages instead of
46 13/18V, in order to compensate for long antenna cables.</para></listitem>
47 </itemizedlist>
48 </listitem>
49 </varlistentry>
50 </variablelist>
51 </refsect1>
52
53 <refsect1>
54 <title>Description</title>
55
56 <para>Select output DC level between normal LNBf voltages or higher
57 LNBf voltages between 0 (normal) or a value grater than 0 for higher
58 voltages.</para>
59&return-value-dvb;
60</refsect1>
61</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-get-info.xml b/Documentation/DocBook/media/dvb/fe-get-info.xml
deleted file mode 100644
index ed0eeb29dd65..000000000000
--- a/Documentation/DocBook/media/dvb/fe-get-info.xml
+++ /dev/null
@@ -1,266 +0,0 @@
1<refentry id="FE_GET_INFO">
2 <refmeta>
3 <refentrytitle>ioctl FE_GET_INFO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_GET_INFO</refname>
9 <refpurpose>Query DVB frontend capabilities and returns information about
10 the front-end. This call only requires read-only access to the device</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 dvb_frontend_info *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_GET_INFO</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para>pointer to struct &dvb-frontend-info;</para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <para>All DVB frontend devices support the
52<constant>FE_GET_INFO</constant> ioctl. It is used to identify
53kernel devices compatible with this specification and to obtain
54information about driver and hardware capabilities. The ioctl takes a
55pointer to dvb_frontend_info which is filled by the driver. When the
56driver is not compatible with this specification the ioctl returns an error.
57</para>
58&return-value-dvb;
59
60 <table pgwide="1" frame="none" id="dvb-frontend-info">
61 <title>struct <structname>dvb_frontend_info</structname></title>
62 <tgroup cols="3">
63 &cs-str;
64 <tbody valign="top">
65 <row>
66 <entry>char</entry>
67 <entry>name[128]</entry>
68 <entry>Name of the frontend</entry>
69 </row><row>
70 <entry>fe_type_t</entry>
71 <entry>type</entry>
72 <entry><emphasis role="bold">DEPRECATED</emphasis>. DVBv3 type. Should not be used on modern programs, as a
73 frontend may have more than one type. So, the DVBv5 API should
74 be used instead to enumerate and select the frontend type.</entry>
75 </row><row>
76 <entry>uint32_t</entry>
77 <entry>frequency_min</entry>
78 <entry>Minimal frequency supported by the frontend</entry>
79 </row><row>
80 <entry>uint32_t</entry>
81 <entry>frequency_max</entry>
82 <entry>Maximal frequency supported by the frontend</entry>
83 </row><row>
84 <entry>uint32_t</entry>
85 <entry>frequency_stepsize</entry>
86 <entry>Frequency step - all frequencies are multiple of this value</entry>
87 </row><row>
88 <entry>uint32_t</entry>
89 <entry>frequency_tolerance</entry>
90 <entry>Tolerance of the frequency</entry>
91 </row><row>
92 <entry>uint32_t</entry>
93 <entry>symbol_rate_min</entry>
94 <entry>Minimal symbol rate (for Cable/Satellite systems), in bauds</entry>
95 </row><row>
96 <entry>uint32_t</entry>
97 <entry>symbol_rate_max</entry>
98 <entry>Maximal symbol rate (for Cable/Satellite systems), in bauds</entry>
99 </row><row>
100 <entry>uint32_t</entry>
101 <entry>symbol_rate_tolerance</entry>
102 <entry>Maximal symbol rate tolerance, in ppm</entry>
103 </row><row>
104 <entry>uint32_t</entry>
105 <entry>notifier_delay</entry>
106 <entry><emphasis role="bold">DEPRECATED</emphasis>. Not used by any driver.</entry>
107 </row><row>
108 <entry>&fe-caps;</entry>
109 <entry>caps</entry>
110 <entry>Capabilities supported by the frontend</entry>
111 </row>
112 </tbody>
113 </tgroup>
114 </table>
115
116 <para>NOTE: The frequencies are specified in Hz for Terrestrial and Cable
117 systems. They're specified in kHz for Satellite systems</para>
118 </refsect1>
119
120<refsect1 id="fe-caps-t">
121<title>frontend capabilities</title>
122
123<para>Capabilities describe what a frontend can do. Some capabilities are
124 supported only on some specific frontend types.</para>
125
126<table pgwide="1" frame="none" id="fe-caps">
127 <title>enum fe_caps</title>
128 <tgroup cols="2">
129 &cs-def;
130 <thead>
131 <row>
132 <entry>ID</entry>
133 <entry>Description</entry>
134 </row>
135 </thead>
136 <tbody valign="top">
137 <row>
138 <entry id="FE-IS-STUPID"><constant>FE_IS_STUPID</constant></entry>
139 <entry>There's something wrong at the frontend, and it can't
140 report its capabilities</entry>
141 </row>
142 <row>
143 <entry id="FE-CAN-INVERSION-AUTO"><constant>FE_CAN_INVERSION_AUTO</constant></entry>
144 <entry>The frontend is capable of auto-detecting inversion</entry>
145 </row>
146 <row>
147 <entry id="FE-CAN-FEC-1-2"><constant>FE_CAN_FEC_1_2</constant></entry>
148 <entry>The frontend supports FEC 1/2</entry>
149 </row>
150 <row>
151 <entry id="FE-CAN-FEC-2-3"><constant>FE_CAN_FEC_2_3</constant></entry>
152 <entry>The frontend supports FEC 2/3</entry>
153 </row>
154 <row>
155 <entry id="FE-CAN-FEC-3-4"><constant>FE_CAN_FEC_3_4</constant></entry>
156 <entry>The frontend supports FEC 3/4</entry>
157 </row>
158 <row>
159 <entry id="FE-CAN-FEC-4-5"><constant>FE_CAN_FEC_4_5</constant></entry>
160 <entry>The frontend supports FEC 4/5</entry>
161 </row>
162 <row>
163 <entry id="FE-CAN-FEC-5-6"><constant>FE_CAN_FEC_5_6</constant></entry>
164 <entry>The frontend supports FEC 5/6</entry>
165 </row>
166 <row>
167 <entry id="FE-CAN-FEC-6-7"><constant>FE_CAN_FEC_6_7</constant></entry>
168 <entry>The frontend supports FEC 6/7</entry>
169 </row>
170 <row>
171 <entry id="FE-CAN-FEC-7-8"><constant>FE_CAN_FEC_7_8</constant></entry>
172 <entry>The frontend supports FEC 7/8</entry>
173 </row>
174 <row>
175 <entry id="FE-CAN-FEC-8-9"><constant>FE_CAN_FEC_8_9</constant></entry>
176 <entry>The frontend supports FEC 8/9</entry>
177 </row>
178 <row>
179 <entry id="FE-CAN-FEC-AUTO"><constant>FE_CAN_FEC_AUTO</constant></entry>
180 <entry>The frontend can autodetect FEC.</entry>
181 </row>
182 <row>
183 <entry id="FE-CAN-QPSK"><constant>FE_CAN_QPSK</constant></entry>
184 <entry>The frontend supports QPSK modulation</entry>
185 </row>
186 <row>
187 <entry id="FE-CAN-QAM-16"><constant>FE_CAN_QAM_16</constant></entry>
188 <entry>The frontend supports 16-QAM modulation</entry>
189 </row>
190 <row>
191 <entry id="FE-CAN-QAM-32"><constant>FE_CAN_QAM_32</constant></entry>
192 <entry>The frontend supports 32-QAM modulation</entry>
193 </row>
194 <row>
195 <entry id="FE-CAN-QAM-64"><constant>FE_CAN_QAM_64</constant></entry>
196 <entry>The frontend supports 64-QAM modulation</entry>
197 </row>
198 <row>
199 <entry id="FE-CAN-QAM-128"><constant>FE_CAN_QAM_128</constant></entry>
200 <entry>The frontend supports 128-QAM modulation</entry>
201 </row>
202 <row>
203 <entry id="FE-CAN-QAM-256"><constant>FE_CAN_QAM_256</constant></entry>
204 <entry>The frontend supports 256-QAM modulation</entry>
205 </row>
206 <row>
207 <entry id="FE-CAN-QAM-AUTO"><constant>FE_CAN_QAM_AUTO</constant></entry>
208 <entry>The frontend can autodetect modulation</entry>
209 </row>
210 <row>
211 <entry id="FE-CAN-TRANSMISSION-MODE-AUTO"><constant>FE_CAN_TRANSMISSION_MODE_AUTO</constant></entry>
212 <entry>The frontend can autodetect the transmission mode</entry>
213 </row>
214 <row>
215 <entry id="FE-CAN-BANDWIDTH-AUTO"><constant>FE_CAN_BANDWIDTH_AUTO</constant></entry>
216 <entry>The frontend can autodetect the bandwidth</entry>
217 </row>
218 <row>
219 <entry id="FE-CAN-GUARD-INTERVAL-AUTO"><constant>FE_CAN_GUARD_INTERVAL_AUTO</constant></entry>
220 <entry>The frontend can autodetect the guard interval</entry>
221 </row>
222 <row>
223 <entry id="FE-CAN-HIERARCHY-AUTO"><constant>FE_CAN_HIERARCHY_AUTO</constant></entry>
224 <entry>The frontend can autodetect hierarch</entry>
225 </row>
226 <row>
227 <entry id="FE-CAN-8VSB"><constant>FE_CAN_8VSB</constant></entry>
228 <entry>The frontend supports 8-VSB modulation</entry>
229 </row>
230 <row>
231 <entry id="FE-CAN-16VSB"><constant>FE_CAN_16VSB</constant></entry>
232 <entry>The frontend supports 16-VSB modulation</entry>
233 </row>
234 <row>
235 <entry id="FE-HAS-EXTENDED-CAPS"><constant>FE_HAS_EXTENDED_CAPS</constant></entry>
236 <entry>Currently, unused</entry>
237 </row>
238 <row>
239 <entry id="FE-CAN-MULTISTREAM"><constant>FE_CAN_MULTISTREAM</constant></entry>
240 <entry>The frontend supports multistream filtering</entry>
241 </row>
242 <row>
243 <entry id="FE-CAN-TURBO-FEC"><constant>FE_CAN_TURBO_FEC</constant></entry>
244 <entry>The frontend supports turbo FEC modulation</entry>
245 </row>
246 <row>
247 <entry id="FE-CAN-2G-MODULATION"><constant>FE_CAN_2G_MODULATION</constant></entry>
248 <entry>The frontend supports "2nd generation modulation" (DVB-S2/T2)></entry>
249 </row>
250 <row>
251 <entry id="FE-NEEDS-BENDING"><constant>FE_NEEDS_BENDING</constant></entry>
252 <entry>Not supported anymore, don't use it</entry>
253 </row>
254 <row>
255 <entry id="FE-CAN-RECOVER"><constant>FE_CAN_RECOVER</constant></entry>
256 <entry>The frontend can recover from a cable unplug automatically</entry>
257 </row>
258 <row>
259 <entry id="FE-CAN-MUTE-TS"><constant>FE_CAN_MUTE_TS</constant></entry>
260 <entry>The frontend can stop spurious TS data output</entry>
261 </row>
262 </tbody>
263 </tgroup>
264</table>
265</refsect1>
266</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-get-property.xml b/Documentation/DocBook/media/dvb/fe-get-property.xml
deleted file mode 100644
index 53a170ed3bd1..000000000000
--- a/Documentation/DocBook/media/dvb/fe-get-property.xml
+++ /dev/null
@@ -1,81 +0,0 @@
1<refentry id="FE_GET_PROPERTY">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_PROPERTY, FE_GET_PROPERTY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_PROPERTY</refname>
9 <refname>FE_GET_PROPERTY</refname>
10 <refpurpose>FE_SET_PROPERTY sets one or more frontend properties.
11 FE_GET_PROPERTY returns one or more frontend properties.</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 dtv_properties *<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 </refsynopsisdiv>
24
25 <refsect1>
26 <title>Arguments</title>
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fe_fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>FE_SET_PROPERTY, FE_GET_PROPERTY</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para>pointer to &dtv-properties;</para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>All DVB frontend devices support the
53<constant>FE_SET_PROPERTY</constant> and <constant>FE_GET_PROPERTY</constant>
54ioctls. The supported properties and statistics depends on the delivery system
55and on the device:</para>
56<itemizedlist>
57<listitem>
58 <para><constant>FE_SET_PROPERTY:</constant></para>
59<itemizedlist>
60<listitem><para>This ioctl is used to set one or more
61 frontend properties.</para></listitem>
62<listitem><para>This is the basic command to request the frontend to tune into some
63 frequency and to start decoding the digital TV signal.</para></listitem>
64<listitem><para>This call requires read/write access to the device.</para></listitem>
65<listitem><para>At return, the values are updated to reflect the
66 actual parameters used.</para></listitem>
67</itemizedlist>
68</listitem>
69<listitem>
70 <para><constant>FE_GET_PROPERTY:</constant></para>
71<itemizedlist>
72<listitem><para>This ioctl is used to get properties and
73statistics from the frontend.</para></listitem>
74<listitem><para>No properties are changed, and statistics aren't reset.</para></listitem>
75<listitem><para>This call only requires read-only access to the device.</para></listitem>
76</itemizedlist>
77</listitem>
78</itemizedlist>
79&return-value-dvb;
80</refsect1>
81</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-read-status.xml b/Documentation/DocBook/media/dvb/fe-read-status.xml
deleted file mode 100644
index bc0dc2a55f19..000000000000
--- a/Documentation/DocBook/media/dvb/fe-read-status.xml
+++ /dev/null
@@ -1,107 +0,0 @@
1<refentry id="FE_READ_STATUS">
2 <refmeta>
3 <refentrytitle>ioctl FE_READ_STATUS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_READ_STATUS</refname>
9 <refpurpose>Returns status information about the front-end. This call only
10 requires read-only access to the device</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>unsigned int *<parameter>status</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fe_fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>FE_READ_STATUS</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>status</parameter></term>
41 <listitem>
42 <para>pointer to a bitmask integer filled with the values defined by
43 &fe-status;.</para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <para>All DVB frontend devices support the
53<constant>FE_READ_STATUS</constant> ioctl. It is used to check about the
54locking status of the frontend after being tuned. The ioctl takes a
55pointer to an integer where the status will be written.
56</para>
57<para>NOTE: the size of status is actually sizeof(enum fe_status), with varies
58 according with the architecture. This needs to be fixed in the future.</para>
59&return-value-dvb;
60</refsect1>
61
62<refsect1 id="fe-status-t">
63<title>int fe_status</title>
64
65<para>The fe_status parameter is used to indicate the current state
66 and/or state changes of the frontend hardware. It is produced using
67 the &fe-status; values on a bitmask</para>
68
69<table pgwide="1" frame="none" id="fe-status">
70 <title>enum fe_status</title>
71 <tgroup cols="2">
72 &cs-def;
73 <thead>
74 <row>
75 <entry>ID</entry>
76 <entry>Description</entry>
77 </row>
78 </thead>
79 <tbody valign="top">
80 <row>
81 <entry align="char" id="FE-HAS-SIGNAL"><constant>FE_HAS_SIGNAL</constant></entry>
82 <entry align="char">The frontend has found something above the noise level</entry>
83 </row><row>
84 <entry align="char" id="FE-HAS-CARRIER"><constant>FE_HAS_CARRIER</constant></entry>
85 <entry align="char">The frontend has found a DVB signal</entry>
86 </row><row>
87 <entry align="char" id="FE-HAS-VITERBI"><constant>FE_HAS_VITERBI</constant></entry>
88 <entry align="char">The frontend FEC inner coding (Viterbi, LDPC or other inner code) is stable</entry>
89 </row><row>
90 <entry align="char" id="FE-HAS-SYNC"><constant>FE_HAS_SYNC</constant></entry>
91 <entry align="char">Synchronization bytes was found</entry>
92 </row><row>
93 <entry align="char" id="FE-HAS-LOCK"><constant>FE_HAS_LOCK</constant></entry>
94 <entry align="char">The DVB were locked and everything is working</entry>
95 </row><row>
96 <entry align="char" id="FE-TIMEDOUT"><constant>FE_TIMEDOUT</constant></entry>
97 <entry align="char">no lock within the last about 2 seconds</entry>
98 </row><row>
99 <entry align="char" id="FE-REINIT"><constant>FE_REINIT</constant></entry>
100 <entry align="char">The frontend was reinitialized, application is
101 recommended to reset DiSEqC, tone and parameters</entry>
102 </row>
103 </tbody>
104 </tgroup>
105</table>
106</refsect1>
107</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-set-frontend-tune-mode.xml b/Documentation/DocBook/media/dvb/fe-set-frontend-tune-mode.xml
deleted file mode 100644
index 99fa8a015c7a..000000000000
--- a/Documentation/DocBook/media/dvb/fe-set-frontend-tune-mode.xml
+++ /dev/null
@@ -1,64 +0,0 @@
1<refentry id="FE_SET_FRONTEND_TUNE_MODE">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_FRONTEND_TUNE_MODE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_FRONTEND_TUNE_MODE</refname>
9 <refpurpose>Allow setting tuner mode flags to the frontend.</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>unsigned int <parameter>flags</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_SET_FRONTEND_TUNE_MODE</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>flags</parameter></term>
40 <listitem>
41 <para>Valid flags:</para>
42 <itemizedlist>
43 <listitem><para>0 - normal tune mode</para></listitem>
44 <listitem><para>FE_TUNE_MODE_ONESHOT - When set, this flag will
45 disable any zigzagging or other "normal" tuning behaviour.
46 Additionally, there will be no automatic monitoring of the
47 lock status, and hence no frontend events will be
48 generated. If a frontend device is closed, this flag will
49 be automatically turned off when the device is reopened
50 read-write.</para></listitem>
51 </itemizedlist>
52 </listitem>
53 </varlistentry>
54 </variablelist>
55 </refsect1>
56
57 <refsect1>
58 <title>Description</title>
59
60 <para>Allow setting tuner mode flags to the frontend, between 0 (normal)
61 or FE_TUNE_MODE_ONESHOT mode</para>
62&return-value-dvb;
63</refsect1>
64</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-set-tone.xml b/Documentation/DocBook/media/dvb/fe-set-tone.xml
deleted file mode 100644
index 62d44e4ccc39..000000000000
--- a/Documentation/DocBook/media/dvb/fe-set-tone.xml
+++ /dev/null
@@ -1,91 +0,0 @@
1<refentry id="FE_SET_TONE">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_TONE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_TONE</refname>
9 <refpurpose>Sets/resets the generation of the continuous 22kHz tone.</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>enum fe_sec_tone_mode *<parameter>tone</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_SET_TONE</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>tone</parameter></term>
40 <listitem>
41 <para>pointer to &fe-sec-tone-mode;</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50<para>This ioctl is used to set the generation of the continuous 22kHz tone.
51 This call requires read/write permissions.</para>
52<para>Usually, satellite antenna subsystems require that the digital TV
53 device to send a 22kHz tone in order to select between high/low band on
54 some dual-band LNBf. It is also used to send signals to DiSEqC equipment,
55 but this is done using the DiSEqC ioctls.</para>
56<para>NOTE: if more than one device is connected to the same antenna,
57 setting a tone may interfere on other devices, as they may lose
58 the capability of selecting the band. So, it is recommended that
59 applications would change to SEC_TONE_OFF when the device is not used.</para>
60
61&return-value-dvb;
62</refsect1>
63
64<refsect1 id="fe-sec-tone-mode-t">
65<title>enum fe_sec_tone_mode</title>
66
67<table pgwide="1" frame="none" id="fe-sec-tone-mode">
68 <title>enum fe_sec_tone_mode</title>
69 <tgroup cols="2">
70 &cs-def;
71 <thead>
72 <row>
73 <entry>ID</entry>
74 <entry>Description</entry>
75 </row>
76 </thead>
77 <tbody valign="top">
78 <row>
79 <entry align="char" id="SEC-TONE-ON"><constant>SEC_TONE_ON</constant></entry>
80 <entry align="char">Sends a 22kHz tone burst to the antenna</entry>
81 </row><row>
82 <entry align="char" id="SEC-TONE-OFF"><constant>SEC_TONE_OFF</constant></entry>
83 <entry align="char">Don't send a 22kHz tone to the antenna
84 (except if the FE_DISEQC_* ioctls are called)</entry>
85 </row>
86 </tbody>
87 </tgroup>
88</table>
89</refsect1>
90
91</refentry>
diff --git a/Documentation/DocBook/media/dvb/fe-set-voltage.xml b/Documentation/DocBook/media/dvb/fe-set-voltage.xml
deleted file mode 100644
index c89a6f79b5af..000000000000
--- a/Documentation/DocBook/media/dvb/fe-set-voltage.xml
+++ /dev/null
@@ -1,69 +0,0 @@
1<refentry id="FE_SET_VOLTAGE">
2 <refmeta>
3 <refentrytitle>ioctl FE_SET_VOLTAGE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>FE_SET_VOLTAGE</refname>
9 <refpurpose>Allow setting the DC level sent to the antenna subsystem.</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>enum fe_sec_voltage *<parameter>voltage</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fe_fd;</para>
30 </listitem>
31 </varlistentry>
32 <varlistentry>
33 <term><parameter>request</parameter></term>
34 <listitem>
35 <para>FE_SET_VOLTAGE</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>voltage</parameter></term>
40 <listitem>
41 <para>pointer to &fe-sec-voltage;</para>
42 <para>Valid values are described at &fe-sec-voltage;.</para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51<para>This ioctl allows to set the DC voltage level sent through the antenna
52 cable to 13V, 18V or off.</para>
53<para>Usually, a satellite antenna subsystems require that the digital TV
54 device to send a DC voltage to feed power to the LNBf. Depending on the
55 LNBf type, the polarization or the intermediate frequency (IF) of the LNBf
56 can controlled by the voltage level. Other devices (for example, the ones
57 that implement DISEqC and multipoint LNBf's don't need to control the
58 voltage level, provided that either 13V or 18V is sent to power up the
59 LNBf.</para>
60<para>NOTE: if more than one device is connected to the same antenna,
61 setting a voltage level may interfere on other devices, as they may lose
62 the capability of setting polarization or IF. So, on those
63 cases, setting the voltage to SEC_VOLTAGE_OFF while the device is not is
64 used is recommended.</para>
65
66&return-value-dvb;
67</refsect1>
68
69</refentry>
diff --git a/Documentation/DocBook/media/dvb/frontend.xml b/Documentation/DocBook/media/dvb/frontend.xml
deleted file mode 100644
index 01210b33c130..000000000000
--- a/Documentation/DocBook/media/dvb/frontend.xml
+++ /dev/null
@@ -1,269 +0,0 @@
1<title>DVB Frontend API</title>
2
3<para>The DVB frontend API was designed to support three types of delivery systems:</para>
4<itemizedlist>
5 <listitem><para>Terrestrial systems: DVB-T, DVB-T2, ATSC, ATSC M/H, ISDB-T, DVB-H, DTMB, CMMB</para></listitem>
6 <listitem><para>Cable systems: DVB-C Annex A/C, ClearQAM (DVB-C Annex B), ISDB-C</para></listitem>
7 <listitem><para>Satellite systems: DVB-S, DVB-S2, DVB Turbo, ISDB-S, DSS</para></listitem>
8</itemizedlist>
9<para>The DVB frontend controls several sub-devices including:</para>
10<itemizedlist>
11 <listitem><para>Tuner</para></listitem>
12 <listitem><para>Digital TV demodulator</para></listitem>
13 <listitem><para>Low noise amplifier (LNA)</para></listitem>
14 <listitem><para>Satellite Equipment Control (SEC) hardware (only for Satellite).</para></listitem>
15</itemizedlist>
16<para>The frontend can be accessed through
17 <constant>/dev/dvb/adapter?/frontend?</constant>. Data types and
18 ioctl definitions can be accessed by including
19 <constant>linux/dvb/frontend.h</constant> in your application.
20</para>
21
22<para>NOTE: Transmission via the internet (DVB-IP)
23 is not yet handled by this API but a future extension is possible.</para>
24<para>On Satellite systems, the API support for the Satellite Equipment Control
25 (SEC) allows to power control and to send/receive signals to control the
26 antenna subsystem, selecting the polarization and choosing the Intermediate
27 Frequency IF) of the Low Noise Block Converter Feed Horn (LNBf). It
28 supports the DiSEqC and V-SEC protocols. The DiSEqC (digital SEC)
29specification is available at
30<ulink url="http://www.eutelsat.com/satellites/4_5_5.html">Eutelsat</ulink>.</para>
31
32<section id="query-dvb-frontend-info">
33<title>Querying frontend information</title>
34
35<para>Usually, the first thing to do when the frontend is opened is to
36 check the frontend capabilities. This is done using <link linkend="FE_GET_INFO">FE_GET_INFO</link>. This ioctl will enumerate
37 the DVB API version and other characteristics about the frontend, and
38 can be opened either in read only or read/write mode.</para>
39</section>
40
41<section id="dvb-fe-read-status">
42<title>Querying frontend status and statistics</title>
43
44<para>Once <link linkend="FE_GET_PROPERTY"><constant>FE_SET_PROPERTY</constant></link>
45 is called, the frontend will run a kernel thread that will periodically
46 check for the tuner lock status and provide statistics about the quality
47 of the signal.</para>
48<para>The information about the frontend tuner locking status can be queried
49 using <link linkend="FE_READ_STATUS">FE_READ_STATUS</link>.</para>
50<para>Signal statistics are provided via <link linkend="FE_GET_PROPERTY"><constant>FE_GET_PROPERTY</constant></link>.
51 Please note that several statistics require the demodulator to be fully
52 locked (e. g. with FE_HAS_LOCK bit set). See
53 <link linkend="frontend-stat-properties">Frontend statistics indicators</link>
54 for more details.</para>
55</section>
56
57&sub-dvbproperty;
58
59<section id="frontend_fcalls">
60<title>Frontend Function Calls</title>
61
62<refentry id="frontend_f_open">
63 <refmeta>
64 <refentrytitle>DVB frontend open()</refentrytitle>
65 &manvol;
66 </refmeta>
67
68 <refnamediv>
69 <refname>fe-open</refname>
70 <refpurpose>Open a frontend device</refpurpose>
71 </refnamediv>
72
73 <refsynopsisdiv>
74 <funcsynopsis>
75 <funcsynopsisinfo>#include &lt;fcntl.h&gt;</funcsynopsisinfo>
76 <funcprototype>
77 <funcdef>int <function>open</function></funcdef>
78 <paramdef>const char *<parameter>device_name</parameter></paramdef>
79 <paramdef>int <parameter>flags</parameter></paramdef>
80 </funcprototype>
81 </funcsynopsis>
82 </refsynopsisdiv>
83
84 <refsect1>
85 <title>Arguments</title>
86
87 <variablelist>
88 <varlistentry>
89 <term><parameter>device_name</parameter></term>
90 <listitem>
91 <para>Device to be opened.</para>
92 </listitem>
93 </varlistentry>
94 <varlistentry>
95 <term><parameter>flags</parameter></term>
96 <listitem>
97 <para>Open flags. Access can either be
98 <constant>O_RDWR</constant> or <constant>O_RDONLY</constant>.</para>
99 <para>Multiple opens are allowed with <constant>O_RDONLY</constant>. In this mode, only query and read ioctls are allowed.</para>
100 <para>Only one open is allowed in <constant>O_RDWR</constant>. In this mode, all ioctls are allowed.</para>
101 <para>When the <constant>O_NONBLOCK</constant> flag is given, the system calls may return &EAGAIN; when no data is available or when the device driver is temporarily busy.</para>
102 <para>Other flags have no effect.</para>
103 </listitem>
104 </varlistentry>
105 </variablelist>
106 </refsect1>
107 <refsect1>
108 <title>Description</title>
109 <para>This system call opens a named frontend device (<constant>/dev/dvb/adapter?/frontend?</constant>)
110 for subsequent use. Usually the first thing to do after a successful open is to
111 find out the frontend type with <link linkend="FE_GET_INFO">FE_GET_INFO</link>.</para>
112<para>The device can be opened in read-only mode, which only allows monitoring of
113 device status and statistics, or read/write mode, which allows any kind of use
114 (e.g. performing tuning operations.)
115</para>
116<para>In a system with multiple front-ends, it is usually the case that multiple devices
117 cannot be open in read/write mode simultaneously. As long as a front-end
118 device is opened in read/write mode, other open() calls in read/write mode will
119 either fail or block, depending on whether non-blocking or blocking mode was
120 specified. A front-end device opened in blocking mode can later be put into
121 non-blocking mode (and vice versa) using the F_SETFL command of the fcntl
122 system call. This is a standard system call, documented in the Linux manual
123 page for fcntl. When an open() call has succeeded, the device will be ready
124 for use in the specified mode. This implies that the corresponding hardware is
125 powered up, and that other front-ends may have been powered down to make
126 that possible.</para>
127 </refsect1>
128
129 <refsect1>
130 <title>Return Value</title>
131
132 <para>On success <function>open</function> returns the new file
133descriptor. On error -1 is returned, and the <varname>errno</varname>
134variable is set appropriately. Possible error codes are:</para>
135
136 <variablelist>
137 <varlistentry>
138 <term><errorcode>EACCES</errorcode></term>
139 <listitem>
140 <para>The caller has no permission to access the
141device.</para>
142 </listitem>
143 </varlistentry>
144 <varlistentry>
145 <term><errorcode>EBUSY</errorcode></term>
146 <listitem>
147 <para>The the device driver is already in use.</para>
148 </listitem>
149 </varlistentry>
150 <varlistentry>
151 <term><errorcode>ENXIO</errorcode></term>
152 <listitem>
153 <para>No device corresponding to this device special file
154exists.</para>
155 </listitem>
156 </varlistentry>
157 <varlistentry>
158 <term><errorcode>ENOMEM</errorcode></term>
159 <listitem>
160 <para>Not enough kernel memory was available to complete the
161request.</para>
162 </listitem>
163 </varlistentry>
164 <varlistentry>
165 <term><errorcode>EMFILE</errorcode></term>
166 <listitem>
167 <para>The process already has the maximum number of
168files open.</para>
169 </listitem>
170 </varlistentry>
171 <varlistentry>
172 <term><errorcode>ENFILE</errorcode></term>
173 <listitem>
174 <para>The limit on the total number of files open on the
175system has been reached.</para>
176 </listitem>
177 </varlistentry>
178 <varlistentry>
179 <term><errorcode>ENODEV</errorcode></term>
180 <listitem>
181 <para>The device got removed.</para>
182 </listitem>
183 </varlistentry>
184 </variablelist>
185 </refsect1>
186</refentry>
187
188<refentry id="frontend_f_close">
189 <refmeta>
190 <refentrytitle>DVB frontend close()</refentrytitle>
191 &manvol;
192 </refmeta>
193
194 <refnamediv>
195 <refname>fe-close</refname>
196 <refpurpose>Close a frontend device</refpurpose>
197 </refnamediv>
198
199 <refsynopsisdiv>
200 <funcsynopsis>
201 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
202 <funcprototype>
203 <funcdef>int <function>close</function></funcdef>
204 <paramdef>int <parameter>fd</parameter></paramdef>
205 </funcprototype>
206 </funcsynopsis>
207 </refsynopsisdiv>
208
209 <refsect1>
210 <title>Arguments</title>
211
212 <variablelist>
213 <varlistentry>
214 <term><parameter>fd</parameter></term>
215 <listitem>
216 <para>&fd;</para>
217 </listitem>
218 </varlistentry>
219 </variablelist>
220 </refsect1>
221
222 <refsect1>
223 <title>Description</title>
224<para>This system call closes a previously opened front-end device. After closing
225 a front-end device, its corresponding hardware might be powered down
226 automatically.</para>
227</refsect1>
228 <refsect1>
229 <title>Return Value</title>
230
231 <para>The function returns <returnvalue>0</returnvalue> on
232success, <returnvalue>-1</returnvalue> on failure and the
233<varname>errno</varname> is set appropriately. Possible error
234codes:</para>
235
236 <variablelist>
237 <varlistentry>
238 <term><errorcode>EBADF</errorcode></term>
239 <listitem>
240 <para><parameter>fd</parameter> is not a valid open file
241descriptor.</para>
242 </listitem>
243 </varlistentry>
244 </variablelist>
245 </refsect1>
246</refentry>
247
248&sub-fe-get-info;
249&sub-fe-read-status;
250&sub-fe-get-property;
251&sub-fe-diseqc-reset-overload;
252&sub-fe-diseqc-send-master-cmd;
253&sub-fe-diseqc-recv-slave-reply;
254&sub-fe-diseqc-send-burst;
255&sub-fe-set-tone;
256&sub-fe-set-voltage;
257&sub-fe-enable-high-lnb-voltage;
258&sub-fe-set-frontend-tune-mode;
259
260</section>
261
262<section id="frontend_legacy_dvbv3_api">
263<title>DVB Frontend legacy API (a. k. a. DVBv3)</title>
264<para>The usage of this API is deprecated, as it doesn't support all digital
265 TV standards, doesn't provide good statistics measurements and provides
266 incomplete information. This is kept only to support legacy applications.</para>
267
268&sub-frontend_legacy_api;
269</section>
diff --git a/Documentation/DocBook/media/dvb/frontend_legacy_api.xml b/Documentation/DocBook/media/dvb/frontend_legacy_api.xml
deleted file mode 100644
index 8fadf3a4ba44..000000000000
--- a/Documentation/DocBook/media/dvb/frontend_legacy_api.xml
+++ /dev/null
@@ -1,654 +0,0 @@
1<section id="frontend_legacy_types">
2<title>Frontend Legacy Data Types</title>
3
4<section id="fe-type-t">
5<title>Frontend type</title>
6
7<para>For historical reasons, frontend types are named by the type of modulation
8 used in transmission. The fontend types are given by fe_type_t type, defined as:</para>
9
10<table pgwide="1" frame="none" id="fe-type">
11<title>Frontend types</title>
12<tgroup cols="3">
13 &cs-def;
14 <thead>
15 <row>
16 <entry>fe_type</entry>
17 <entry>Description</entry>
18 <entry><link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> equivalent type</entry>
19 </row>
20 </thead>
21 <tbody valign="top">
22 <row>
23 <entry id="FE-QPSK"><constant>FE_QPSK</constant></entry>
24 <entry>For DVB-S standard</entry>
25 <entry><constant>SYS_DVBS</constant></entry>
26 </row>
27 <row>
28 <entry id="FE-QAM"><constant>FE_QAM</constant></entry>
29 <entry>For DVB-C annex A standard</entry>
30 <entry><constant>SYS_DVBC_ANNEX_A</constant></entry>
31 </row>
32 <row>
33 <entry id="FE-OFDM"><constant>FE_OFDM</constant></entry>
34 <entry>For DVB-T standard</entry>
35 <entry><constant>SYS_DVBT</constant></entry>
36 </row>
37 <row>
38 <entry id="FE-ATSC"><constant>FE_ATSC</constant></entry>
39 <entry>For ATSC standard (terrestrial) or for DVB-C Annex B (cable) used in US.</entry>
40 <entry><constant>SYS_ATSC</constant> (terrestrial) or <constant>SYS_DVBC_ANNEX_B</constant> (cable)</entry>
41 </row>
42</tbody></tgroup></table>
43
44<para>Newer formats like DVB-S2, ISDB-T, ISDB-S and DVB-T2 are not described at the above, as they're
45supported via the new <link linkend="FE_GET_PROPERTY">FE_GET_PROPERTY/FE_GET_SET_PROPERTY</link> ioctl's, using the <link linkend="DTV-DELIVERY-SYSTEM">DTV_DELIVERY_SYSTEM</link> parameter.
46</para>
47
48<para>In the old days, &dvb-frontend-info; used to contain
49 <constant>fe_type_t</constant> field to indicate the delivery systems,
50 filled with either FE_QPSK, FE_QAM, FE_OFDM or FE_ATSC. While this is
51 still filled to keep backward compatibility, the usage of this
52 field is deprecated, as it can report just one delivery system, but some
53 devices support multiple delivery systems. Please use
54 <link linkend="DTV-ENUM-DELSYS">DTV_ENUM_DELSYS</link> instead.
55</para>
56<para>On devices that support multiple delivery systems,
57 &dvb-frontend-info;::<constant>fe_type_t</constant> is filled with the
58 currently standard, as selected by the last call to
59 <link linkend="FE_GET_PROPERTY">FE_SET_PROPERTY</link>
60 using the &DTV-DELIVERY-SYSTEM; property.</para>
61</section>
62
63<section id="fe-bandwidth-t">
64<title>Frontend bandwidth</title>
65
66<table pgwide="1" frame="none" id="fe-bandwidth">
67 <title>enum fe_bandwidth</title>
68 <tgroup cols="2">
69 &cs-def;
70 <thead>
71 <row>
72 <entry>ID</entry>
73 <entry>Description</entry>
74 </row>
75 </thead>
76 <tbody valign="top">
77 <row>
78 <entry id="BANDWIDTH-AUTO"><constant>BANDWIDTH_AUTO</constant></entry>
79 <entry>Autodetect bandwidth (if supported)</entry>
80 </row><row>
81 <entry id="BANDWIDTH-1-712-MHZ"><constant>BANDWIDTH_1_712_MHZ</constant></entry>
82 <entry>1.712 MHz</entry>
83 </row><row>
84 <entry id="BANDWIDTH-5-MHZ"><constant>BANDWIDTH_5_MHZ</constant></entry>
85 <entry>5 MHz</entry>
86 </row><row>
87 <entry id="BANDWIDTH-6-MHZ"><constant>BANDWIDTH_6_MHZ</constant></entry>
88 <entry>6 MHz</entry>
89 </row><row>
90 <entry id="BANDWIDTH-7-MHZ"><constant>BANDWIDTH_7_MHZ</constant></entry>
91 <entry>7 MHz</entry>
92 </row><row>
93 <entry id="BANDWIDTH-8-MHZ"><constant>BANDWIDTH_8_MHZ</constant></entry>
94 <entry>8 MHz</entry>
95 </row><row>
96 <entry id="BANDWIDTH-10-MHZ"><constant>BANDWIDTH_10_MHZ</constant></entry>
97 <entry>10 MHz</entry>
98 </row>
99 </tbody>
100 </tgroup>
101</table>
102
103</section>
104
105<section id="dvb-frontend-parameters">
106<title>frontend parameters</title>
107<para>The kind of parameters passed to the frontend device for tuning depend on
108the kind of hardware you are using.</para>
109<para>The struct <constant>dvb_frontend_parameters</constant> uses an
110union with specific per-system parameters. However, as newer delivery systems
111required more data, the structure size weren't enough to fit, and just
112extending its size would break the existing applications. So, those parameters
113were replaced by the usage of <link linkend="FE_GET_PROPERTY">
114<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> ioctl's. The
115new API is flexible enough to add new parameters to existing delivery systems,
116and to add newer delivery systems.</para>
117<para>So, newer applications should use <link linkend="FE_GET_PROPERTY">
118<constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant></link> instead, in
119order to be able to support the newer System Delivery like DVB-S2, DVB-T2,
120DVB-C2, ISDB, etc.</para>
121<para>All kinds of parameters are combined as an union in the FrontendParameters structure:
122<programlisting>
123struct dvb_frontend_parameters {
124 uint32_t frequency; /&#x22C6; (absolute) frequency in Hz for QAM/OFDM &#x22C6;/
125 /&#x22C6; intermediate frequency in kHz for QPSK &#x22C6;/
126 &fe-spectral-inversion-t; inversion;
127 union {
128 struct dvb_qpsk_parameters qpsk;
129 struct dvb_qam_parameters qam;
130 struct dvb_ofdm_parameters ofdm;
131 struct dvb_vsb_parameters vsb;
132 } u;
133};
134</programlisting></para>
135<para>In the case of QPSK frontends the <constant>frequency</constant> field specifies the intermediate
136frequency, i.e. the offset which is effectively added to the local oscillator frequency (LOF) of
137the LNB. The intermediate frequency has to be specified in units of kHz. For QAM and
138OFDM frontends the <constant>frequency</constant> specifies the absolute frequency and is given in Hz.
139</para>
140
141<section id="dvb-qpsk-parameters">
142<title>QPSK parameters</title>
143<para>For satellite QPSK frontends you have to use the <constant>dvb_qpsk_parameters</constant> structure:</para>
144<programlisting>
145 struct dvb_qpsk_parameters {
146 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
147 &fe-code-rate-t; fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
148 };
149</programlisting>
150</section>
151
152<section id="dvb-qam-parameters">
153<title>QAM parameters</title>
154<para>for cable QAM frontend you use the <constant>dvb_qam_parameters</constant> structure:</para>
155<programlisting>
156 struct dvb_qam_parameters {
157 uint32_t symbol_rate; /&#x22C6; symbol rate in Symbols per second &#x22C6;/
158 &fe-code-rate-t; fec_inner; /&#x22C6; forward error correction (see above) &#x22C6;/
159 &fe-modulation-t; modulation; /&#x22C6; modulation type (see above) &#x22C6;/
160 };
161</programlisting>
162</section>
163
164<section id="dvb-vsb-parameters">
165<title>VSB parameters</title>
166<para>ATSC frontends are supported by the <constant>dvb_vsb_parameters</constant> structure:</para>
167<programlisting>
168struct dvb_vsb_parameters {
169 &fe-modulation-t; modulation; /&#x22C6; modulation type (see above) &#x22C6;/
170};
171</programlisting>
172</section>
173
174<section id="dvb-ofdm-parameters">
175<title>OFDM parameters</title>
176<para>DVB-T frontends are supported by the <constant>dvb_ofdm_parameters</constant> structure:</para>
177<programlisting>
178 struct dvb_ofdm_parameters {
179 &fe-bandwidth-t; bandwidth;
180 &fe-code-rate-t; code_rate_HP; /&#x22C6; high priority stream code rate &#x22C6;/
181 &fe-code-rate-t; code_rate_LP; /&#x22C6; low priority stream code rate &#x22C6;/
182 &fe-modulation-t; constellation; /&#x22C6; modulation type (see above) &#x22C6;/
183 &fe-transmit-mode-t; transmission_mode;
184 &fe-guard-interval-t; guard_interval;
185 &fe-hierarchy-t; hierarchy_information;
186 };
187</programlisting>
188</section>
189</section>
190
191<section id="dvb-frontend-event">
192<title>frontend events</title>
193 <programlisting>
194 struct dvb_frontend_event {
195 fe_status_t status;
196 struct dvb_frontend_parameters parameters;
197 };
198</programlisting>
199 </section>
200</section>
201
202<section id="frontend_legacy_fcalls">
203<title>Frontend Legacy Function Calls</title>
204
205<para>Those functions are defined at DVB version 3. The support is kept in
206 the kernel due to compatibility issues only. Their usage is strongly
207 not recommended</para>
208
209<section id="FE_READ_BER">
210<title>FE_READ_BER</title>
211<para>DESCRIPTION
212</para>
213<informaltable><tgroup cols="1"><tbody><row><entry
214 align="char">
215<para>This ioctl call returns the bit error rate for the signal currently
216 received/demodulated by the front-end. For this command, read-only access to
217 the device is sufficient.</para>
218</entry>
219 </row></tbody></tgroup></informaltable>
220<para>SYNOPSIS
221</para>
222<informaltable><tgroup cols="1"><tbody><row><entry
223 align="char">
224<para>int ioctl(int fd, int request = <link linkend="FE_READ_BER">FE_READ_BER</link>,
225 uint32_t &#x22C6;ber);</para>
226</entry>
227 </row></tbody></tgroup></informaltable>
228<para>PARAMETERS
229</para>
230<informaltable><tgroup cols="2"><tbody><row><entry
231 align="char">
232<para>int fd</para>
233</entry><entry
234 align="char">
235<para>File descriptor returned by a previous call to open().</para>
236</entry>
237 </row><row><entry
238 align="char">
239<para>int request</para>
240</entry><entry
241 align="char">
242<para>Equals <link linkend="FE_READ_BER">FE_READ_BER</link> for this command.</para>
243</entry>
244 </row><row><entry
245 align="char">
246<para>uint32_t *ber</para>
247</entry><entry
248 align="char">
249<para>The bit error rate is stored into *ber.</para>
250</entry>
251 </row></tbody></tgroup></informaltable>
252
253&return-value-dvb;
254</section>
255
256<section id="FE_READ_SNR">
257<title>FE_READ_SNR</title>
258
259<para>DESCRIPTION
260</para>
261<informaltable><tgroup cols="1"><tbody><row><entry
262 align="char">
263<para>This ioctl call returns the signal-to-noise ratio for the signal currently received
264 by the front-end. For this command, read-only access to the device is sufficient.</para>
265</entry>
266 </row></tbody></tgroup></informaltable>
267<para>SYNOPSIS
268</para>
269<informaltable><tgroup cols="1"><tbody><row><entry
270 align="char">
271<para>int ioctl(int fd, int request = <link linkend="FE_READ_SNR">FE_READ_SNR</link>, uint16_t
272 &#x22C6;snr);</para>
273</entry>
274 </row></tbody></tgroup></informaltable>
275<para>PARAMETERS
276</para>
277<informaltable><tgroup cols="2"><tbody><row><entry
278 align="char">
279<para>int fd</para>
280</entry><entry
281 align="char">
282<para>File descriptor returned by a previous call to open().</para>
283</entry>
284 </row><row><entry
285 align="char">
286<para>int request</para>
287</entry><entry
288 align="char">
289<para>Equals <link linkend="FE_READ_SNR">FE_READ_SNR</link> for this command.</para>
290</entry>
291 </row><row><entry
292 align="char">
293<para>uint16_t *snr</para>
294</entry><entry
295 align="char">
296<para>The signal-to-noise ratio is stored into *snr.</para>
297</entry>
298 </row></tbody></tgroup></informaltable>
299
300&return-value-dvb;
301</section>
302
303<section id="FE_READ_SIGNAL_STRENGTH">
304<title>FE_READ_SIGNAL_STRENGTH</title>
305<para>DESCRIPTION
306</para>
307<informaltable><tgroup cols="1"><tbody><row><entry
308 align="char">
309<para>This ioctl call returns the signal strength value for the signal currently received
310 by the front-end. For this command, read-only access to the device is sufficient.</para>
311</entry>
312 </row></tbody></tgroup></informaltable>
313<para>SYNOPSIS
314</para>
315<informaltable><tgroup cols="1"><tbody><row><entry
316 align="char">
317<para>int ioctl( int fd, int request =
318 <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link>, uint16_t &#x22C6;strength);</para>
319</entry>
320 </row></tbody></tgroup></informaltable>
321
322<para>PARAMETERS
323</para>
324<informaltable><tgroup cols="2"><tbody><row><entry
325 align="char">
326<para>int fd</para>
327</entry><entry
328 align="char">
329<para>File descriptor returned by a previous call to open().</para>
330</entry>
331 </row><row><entry
332 align="char">
333<para>int request</para>
334</entry><entry
335 align="char">
336<para>Equals <link linkend="FE_READ_SIGNAL_STRENGTH">FE_READ_SIGNAL_STRENGTH</link> for this
337 command.</para>
338</entry>
339 </row><row><entry
340 align="char">
341<para>uint16_t *strength</para>
342</entry><entry
343 align="char">
344<para>The signal strength value is stored into *strength.</para>
345</entry>
346 </row></tbody></tgroup></informaltable>
347
348&return-value-dvb;
349</section>
350
351<section id="FE_READ_UNCORRECTED_BLOCKS">
352<title>FE_READ_UNCORRECTED_BLOCKS</title>
353<para>DESCRIPTION
354</para>
355<informaltable><tgroup cols="1"><tbody><row><entry
356 align="char">
357<para>This ioctl call returns the number of uncorrected blocks detected by the device
358 driver during its lifetime. For meaningful measurements, the increment in block
359 count during a specific time interval should be calculated. For this command,
360 read-only access to the device is sufficient.</para>
361</entry>
362 </row><row><entry
363 align="char">
364<para>Note that the counter will wrap to zero after its maximum count has been
365 reached.</para>
366</entry>
367 </row></tbody></tgroup></informaltable>
368<para>SYNOPSIS
369</para>
370<informaltable><tgroup cols="1"><tbody><row><entry
371 align="char">
372<para>int ioctl( int fd, int request =
373 <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link>, uint32_t &#x22C6;ublocks);</para>
374</entry>
375 </row></tbody></tgroup></informaltable>
376<para>PARAMETERS
377</para>
378<informaltable><tgroup cols="2"><tbody><row><entry
379 align="char">
380<para>int fd</para>
381</entry><entry
382 align="char">
383<para>File descriptor returned by a previous call to open().</para>
384</entry>
385 </row><row><entry
386 align="char">
387<para>int request</para>
388</entry><entry
389 align="char">
390<para>Equals <link linkend="FE_READ_UNCORRECTED_BLOCKS">FE_READ_UNCORRECTED_BLOCKS</link> for this
391 command.</para>
392</entry>
393 </row><row><entry
394 align="char">
395<para>uint32_t *ublocks</para>
396</entry><entry
397 align="char">
398<para>The total number of uncorrected blocks seen by the driver
399 so far.</para>
400</entry>
401 </row></tbody></tgroup></informaltable>
402
403&return-value-dvb;
404</section>
405
406<section id="FE_SET_FRONTEND">
407<title>FE_SET_FRONTEND</title>
408<para>DESCRIPTION
409</para>
410<informaltable><tgroup cols="1"><tbody><row><entry
411 align="char">
412<para>This ioctl call starts a tuning operation using specified parameters. The result
413 of this call will be successful if the parameters were valid and the tuning could
414 be initiated. The result of the tuning operation in itself, however, will arrive
415 asynchronously as an event (see documentation for <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> and
416 FrontendEvent.) If a new <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> operation is initiated before
417 the previous one was completed, the previous operation will be aborted in favor
418 of the new one. This command requires read/write access to the device.</para>
419</entry>
420 </row></tbody></tgroup></informaltable>
421
422<para>SYNOPSIS
423</para>
424<informaltable><tgroup cols="1"><tbody><row><entry
425 align="char">
426<para>int ioctl(int fd, int request = <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link>,
427 struct dvb_frontend_parameters &#x22C6;p);</para>
428</entry>
429 </row></tbody></tgroup></informaltable>
430<para>PARAMETERS
431</para>
432<informaltable><tgroup cols="2"><tbody><row><entry
433 align="char">
434<para>int fd</para>
435</entry><entry
436 align="char">
437<para>File descriptor returned by a previous call to open().</para>
438</entry>
439 </row><row><entry
440 align="char">
441<para>int request</para>
442</entry><entry
443 align="char">
444<para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
445</entry>
446 </row><row><entry
447 align="char">
448<para>struct
449 dvb_frontend_parameters
450 *p</para>
451</entry><entry
452 align="char">
453<para>Points to parameters for tuning operation.</para>
454</entry>
455 </row></tbody></tgroup></informaltable>
456
457&return-value-dvb;
458<informaltable><tgroup cols="2"><tbody><row><entry
459 align="char">
460<para>EINVAL</para>
461</entry><entry
462 align="char">
463<para>Maximum supported symbol rate reached.</para>
464</entry>
465</row></tbody></tgroup></informaltable>
466</section>
467
468<section id="FE_GET_FRONTEND">
469<title>FE_GET_FRONTEND</title>
470<para>DESCRIPTION
471</para>
472<informaltable><tgroup cols="1"><tbody><row><entry
473 align="char">
474<para>This ioctl call queries the currently effective frontend parameters. For this
475 command, read-only access to the device is sufficient.</para>
476</entry>
477 </row></tbody></tgroup></informaltable>
478
479<para>SYNOPSIS
480</para>
481<informaltable><tgroup cols="1"><tbody><row><entry
482 align="char">
483<para>int ioctl(int fd, int request = <link linkend="FE_GET_FRONTEND">FE_GET_FRONTEND</link>,
484 struct dvb_frontend_parameters &#x22C6;p);</para>
485</entry>
486 </row></tbody></tgroup></informaltable>
487
488<para>PARAMETERS
489</para>
490<informaltable><tgroup cols="2"><tbody><row><entry
491 align="char">
492<para>int fd</para>
493</entry><entry
494 align="char">
495<para>File descriptor returned by a previous call to open().</para>
496</entry>
497 </row><row><entry
498 align="char">
499<para>int request</para>
500</entry><entry
501 align="char">
502<para>Equals <link linkend="FE_SET_FRONTEND">FE_SET_FRONTEND</link> for this command.</para>
503</entry>
504 </row><row><entry
505 align="char">
506<para>struct
507 dvb_frontend_parameters
508 *p</para>
509</entry><entry
510 align="char">
511<para>Points to parameters for tuning operation.</para>
512</entry>
513 </row></tbody></tgroup></informaltable>
514
515&return-value-dvb;
516<informaltable><tgroup cols="2"><tbody><row><entry
517 align="char">
518<para>EINVAL</para>
519</entry><entry
520 align="char">
521<para>Maximum supported symbol rate reached.</para>
522</entry>
523 </row></tbody></tgroup></informaltable>
524
525</section>
526
527<section id="FE_GET_EVENT">
528<title>FE_GET_EVENT</title>
529<para>DESCRIPTION
530</para>
531<informaltable><tgroup cols="1"><tbody><row><entry
532 align="char">
533<para>This ioctl call returns a frontend event if available. If an event is not
534 available, the behavior depends on whether the device is in blocking or
535 non-blocking mode. In the latter case, the call fails immediately with errno
536 set to EWOULDBLOCK. In the former case, the call blocks until an event
537 becomes available.</para>
538</entry>
539 </row><row><entry
540 align="char">
541<para>The standard Linux poll() and/or select() system calls can be used with the
542 device file descriptor to watch for new events. For select(), the file descriptor
543 should be included in the exceptfds argument, and for poll(), POLLPRI should
544 be specified as the wake-up condition. Since the event queue allocated is
545 rather small (room for 8 events), the queue must be serviced regularly to avoid
546 overflow. If an overflow happens, the oldest event is discarded from the queue,
547 and an error (EOVERFLOW) occurs the next time the queue is read. After
548 reporting the error condition in this fashion, subsequent
549 <link linkend="FE_GET_EVENT">FE_GET_EVENT</link>
550 calls will return events from the queue as usual.</para>
551</entry>
552 </row><row><entry
553 align="char">
554<para>For the sake of implementation simplicity, this command requires read/write
555 access to the device.</para>
556</entry>
557 </row></tbody></tgroup></informaltable>
558
559<para>SYNOPSIS
560</para>
561<informaltable><tgroup cols="1"><tbody><row><entry
562 align="char">
563<para>int ioctl(int fd, int request = QPSK_GET_EVENT,
564 struct dvb_frontend_event &#x22C6;ev);</para>
565</entry>
566 </row></tbody></tgroup></informaltable>
567
568<para>PARAMETERS
569</para>
570<informaltable><tgroup cols="2"><tbody><row><entry
571 align="char">
572<para>int fd</para>
573</entry><entry
574 align="char">
575<para>File descriptor returned by a previous call to open().</para>
576</entry>
577 </row><row><entry
578 align="char">
579<para>int request</para>
580</entry><entry
581 align="char">
582<para>Equals <link linkend="FE_GET_EVENT">FE_GET_EVENT</link> for this command.</para>
583</entry>
584 </row><row><entry
585 align="char">
586<para>struct
587 dvb_frontend_event
588 *ev</para>
589</entry><entry
590 align="char">
591<para>Points to the location where the event,</para>
592</entry>
593 </row><row><entry
594 align="char">
595</entry><entry
596 align="char">
597<para>if any, is to be stored.</para>
598</entry>
599 </row></tbody></tgroup></informaltable>
600
601&return-value-dvb;
602<informaltable><tgroup cols="2"><tbody><row><entry
603 align="char">
604<para>EWOULDBLOCK</para>
605</entry><entry
606 align="char">
607<para>There is no event pending, and the device is in
608 non-blocking mode.</para>
609</entry>
610 </row><row><entry
611 align="char">
612<para>EOVERFLOW</para>
613</entry><entry
614 align="char">
615<para>Overflow in event queue - one or more events were lost.</para>
616</entry>
617</row></tbody></tgroup></informaltable>
618</section>
619
620<section id="FE_DISHNETWORK_SEND_LEGACY_CMD">
621 <title>FE_DISHNETWORK_SEND_LEGACY_CMD</title>
622<para>DESCRIPTION</para>
623<informaltable><tgroup cols="1"><tbody><row>
624<entry align="char">
625<para>WARNING: This is a very obscure legacy command, used only at stv0299 driver. Should not be used on newer drivers.</para>
626<para>It provides a non-standard method for selecting Diseqc voltage on the frontend, for Dish Network legacy switches.</para>
627<para>As support for this ioctl were added in 2004, this means that such dishes were already legacy in 2004.</para>
628</entry>
629</row></tbody></tgroup></informaltable>
630
631<para>SYNOPSIS</para>
632<informaltable><tgroup cols="1"><tbody><row>
633<entry align="char">
634<para>int ioctl(int fd, int request =
635 <link linkend="FE_DISHNETWORK_SEND_LEGACY_CMD">FE_DISHNETWORK_SEND_LEGACY_CMD</link>, unsigned long cmd);</para>
636</entry>
637</row></tbody></tgroup></informaltable>
638
639<para>PARAMETERS</para>
640<informaltable><tgroup cols="2"><tbody><row>
641<entry align="char">
642 <para>unsigned long cmd</para>
643</entry>
644<entry align="char">
645<para>
646sends the specified raw cmd to the dish via DISEqC.
647</para>
648</entry>
649 </row></tbody></tgroup></informaltable>
650
651&return-value-dvb;
652</section>
653
654</section>
diff --git a/Documentation/DocBook/media/dvb/intro.xml b/Documentation/DocBook/media/dvb/intro.xml
deleted file mode 100644
index b5b701f5d8c2..000000000000
--- a/Documentation/DocBook/media/dvb/intro.xml
+++ /dev/null
@@ -1,211 +0,0 @@
1<title>Introduction</title>
2
3<section id="requisites">
4<title>What you need to know</title>
5
6<para>The reader of this document is required to have some knowledge in
7the area of digital video broadcasting (DVB) and should be familiar with
8part I of the MPEG2 specification ISO/IEC 13818 (aka ITU-T H.222), i.e
9you should know what a program/transport stream (PS/TS) is and what is
10meant by a packetized elementary stream (PES) or an I-frame.</para>
11
12<para>Various DVB standards documents are available from
13<ulink url="http://www.dvb.org" /> and/or
14<ulink url="http://www.etsi.org" />.</para>
15
16<para>It is also necessary to know how to access unix/linux devices and
17how to use ioctl calls. This also includes the knowledge of C or C++.
18</para>
19</section>
20
21<section id="history">
22<title>History</title>
23
24<para>The first API for DVB cards we used at Convergence in late 1999
25was an extension of the Video4Linux API which was primarily developed
26for frame grabber cards. As such it was not really well suited to be
27used for DVB cards and their new features like recording MPEG streams
28and filtering several section and PES data streams at the same time.
29</para>
30
31<para>In early 2000, we were approached by Nokia with a proposal for a
32new standard Linux DVB API. As a commitment to the development of
33terminals based on open standards, Nokia and Convergence made it
34available to all Linux developers and published it on
35<ulink url="https://linuxtv.org" /> in September 2000.
36Convergence is the maintainer of the Linux DVB API. Together with the
37LinuxTV community (i.e. you, the reader of this document), the Linux DVB
38API will be constantly reviewed and improved. With the Linux driver for
39the Siemens/Hauppauge DVB PCI card Convergence provides a first
40implementation of the Linux DVB API.</para>
41</section>
42
43<section id="overview">
44<title>Overview</title>
45
46<figure id="stb_components">
47<title>Components of a DVB card/STB</title>
48<mediaobject>
49<imageobject>
50<imagedata fileref="dvbstb.pdf" format="PS" />
51</imageobject>
52<imageobject>
53<imagedata fileref="dvbstb.png" format="PNG" />
54</imageobject>
55</mediaobject>
56</figure>
57
58<para>A DVB PCI card or DVB set-top-box (STB) usually consists of the
59following main hardware components: </para>
60
61<itemizedlist>
62 <listitem>
63
64<para>Frontend consisting of tuner and DVB demodulator</para>
65
66<para>Here the raw signal reaches the DVB hardware from a satellite dish
67or antenna or directly from cable. The frontend down-converts and
68demodulates this signal into an MPEG transport stream (TS). In case of a
69satellite frontend, this includes a facility for satellite equipment
70control (SEC), which allows control of LNB polarization, multi feed
71switches or dish rotors.</para>
72
73</listitem>
74 <listitem>
75
76<para>Conditional Access (CA) hardware like CI adapters and smartcard slots
77</para>
78
79<para>The complete TS is passed through the CA hardware. Programs to
80which the user has access (controlled by the smart card) are decoded in
81real time and re-inserted into the TS.</para>
82
83</listitem>
84 <listitem>
85 <para>Demultiplexer which filters the incoming DVB stream</para>
86
87<para>The demultiplexer splits the TS into its components like audio and
88video streams. Besides usually several of such audio and video streams
89it also contains data streams with information about the programs
90offered in this or other streams of the same provider.</para>
91
92</listitem>
93<listitem>
94
95<para>MPEG2 audio and video decoder</para>
96
97<para>The main targets of the demultiplexer are the MPEG2 audio and
98video decoders. After decoding they pass on the uncompressed audio and
99video to the computer screen or (through a PAL/NTSC encoder) to a TV
100set.</para>
101
102
103</listitem>
104</itemizedlist>
105
106<para><xref linkend="stb_components" /> shows a crude schematic of the control and data flow
107between those components.</para>
108
109<para>On a DVB PCI card not all of these have to be present since some
110functionality can be provided by the main CPU of the PC (e.g. MPEG
111picture and sound decoding) or is not needed (e.g. for data-only uses
112like &#8220;internet over satellite&#8221;). Also not every card or STB
113provides conditional access hardware.</para>
114
115</section>
116
117<section id="dvb_devices">
118<title>Linux DVB Devices</title>
119
120<para>The Linux DVB API lets you control these hardware components
121through currently six Unix-style character devices for video, audio,
122frontend, demux, CA and IP-over-DVB networking. The video and audio
123devices control the MPEG2 decoder hardware, the frontend device the
124tuner and the DVB demodulator. The demux device gives you control over
125the PES and section filters of the hardware. If the hardware does not
126support filtering these filters can be implemented in software. Finally,
127the CA device controls all the conditional access capabilities of the
128hardware. It can depend on the individual security requirements of the
129platform, if and how many of the CA functions are made available to the
130application through this device.</para>
131
132<para>All devices can be found in the <constant>/dev</constant>
133tree under <constant>/dev/dvb</constant>. The individual devices
134are called:</para>
135
136<itemizedlist>
137<listitem>
138
139<para><constant>/dev/dvb/adapterN/audioM</constant>,</para>
140</listitem>
141<listitem>
142<para><constant>/dev/dvb/adapterN/videoM</constant>,</para>
143</listitem>
144<listitem>
145<para><constant>/dev/dvb/adapterN/frontendM</constant>,</para>
146</listitem>
147 <listitem>
148
149<para><constant>/dev/dvb/adapterN/netM</constant>,</para>
150</listitem>
151 <listitem>
152
153<para><constant>/dev/dvb/adapterN/demuxM</constant>,</para>
154</listitem>
155 <listitem>
156
157<para><constant>/dev/dvb/adapterN/dvrM</constant>,</para>
158</listitem>
159 <listitem>
160
161<para><constant>/dev/dvb/adapterN/caM</constant>,</para></listitem></itemizedlist>
162
163<para>where N enumerates the DVB PCI cards in a system starting
164from&#x00A0;0, and M enumerates the devices of each type within each
165adapter, starting from&#x00A0;0, too. We will omit the &#8220;
166<constant>/dev/dvb/adapterN/</constant>&#8221; in the further discussion
167of these devices.</para>
168
169<para>More details about the data structures and function calls of all
170the devices are described in the following chapters.</para>
171
172</section>
173
174<section id="include_files">
175<title>API include files</title>
176
177<para>For each of the DVB devices a corresponding include file exists.
178The DVB API include files should be included in application sources with
179a partial path like:</para>
180
181<programlisting>
182 #include &#x003C;linux/dvb/audio.h&#x003E;
183</programlisting>
184<programlisting>
185 #include &#x003C;linux/dvb/ca.h&#x003E;
186</programlisting>
187<programlisting>
188 #include &#x003C;linux/dvb/dmx.h&#x003E;
189</programlisting>
190<programlisting>
191 #include &#x003C;linux/dvb/frontend.h&#x003E;
192</programlisting>
193<programlisting>
194 #include &#x003C;linux/dvb/net.h&#x003E;
195</programlisting>
196<programlisting>
197 #include &#x003C;linux/dvb/osd.h&#x003E;
198</programlisting>
199<programlisting>
200 #include &#x003C;linux/dvb/video.h&#x003E;
201</programlisting>
202
203<para>To enable applications to support different API version, an
204additional include file
205<constant>linux/dvb/version.h</constant> exists, which defines the
206constant <constant>DVB_API_VERSION</constant>. This document
207describes <constant>DVB_API_VERSION 5.10</constant>.
208</para>
209
210</section>
211
diff --git a/Documentation/DocBook/media/dvb/net.xml b/Documentation/DocBook/media/dvb/net.xml
deleted file mode 100644
index da095ed0b75c..000000000000
--- a/Documentation/DocBook/media/dvb/net.xml
+++ /dev/null
@@ -1,238 +0,0 @@
1<title>DVB Network API</title>
2<para>The DVB net device controls the mapping of data packages that are
3 part of a transport stream to be mapped into a virtual network interface,
4 visible through the standard Linux network protocol stack.</para>
5<para>Currently, two encapsulations are supported:</para>
6<itemizedlist>
7 <listitem><para><ulink url="http://en.wikipedia.org/wiki/Multiprotocol_Encapsulation">
8 Multi Protocol Encapsulation (MPE)</ulink></para></listitem>
9 <listitem><para><ulink url="http://en.wikipedia.org/wiki/Unidirectional_Lightweight_Encapsulation">
10 Ultra Lightweight Encapsulation (ULE)</ulink></para></listitem>
11</itemizedlist>
12
13<para>In order to create the Linux virtual network interfaces, an application
14 needs to tell to the Kernel what are the PIDs and the encapsulation types
15 that are present on the transport stream. This is done through
16 <constant>/dev/dvb/adapter?/net?</constant> device node.
17 The data will be available via virtual <constant>dvb?_?</constant>
18 network interfaces, and will be controlled/routed via the standard
19 ip tools (like ip, route, netstat, ifconfig, etc).</para>
20<para> Data types and and ioctl definitions are defined via
21 <constant>linux/dvb/net.h</constant> header.</para>
22
23<section id="net_fcalls">
24<title>DVB net Function Calls</title>
25
26
27<refentry id="NET_ADD_IF">
28 <refmeta>
29 <refentrytitle>ioctl NET_ADD_IF</refentrytitle>
30 &manvol;
31 </refmeta>
32
33 <refnamediv>
34 <refname>NET_ADD_IF</refname>
35 <refpurpose>Creates a new network interface for a given Packet ID.</refpurpose>
36 </refnamediv>
37
38 <refsynopsisdiv>
39 <funcsynopsis>
40 <funcprototype>
41 <funcdef>int <function>ioctl</function></funcdef>
42 <paramdef>int <parameter>fd</parameter></paramdef>
43 <paramdef>int <parameter>request</parameter></paramdef>
44 <paramdef>struct dvb_net_if *<parameter>net_if</parameter></paramdef>
45 </funcprototype>
46 </funcsynopsis>
47 </refsynopsisdiv>
48
49 <refsect1>
50 <title>Arguments</title>
51 <variablelist>
52 <varlistentry>
53 <term><parameter>fd</parameter></term>
54 <listitem>
55 <para>&fe_fd;</para>
56 </listitem>
57 </varlistentry>
58 <varlistentry>
59 <term><parameter>request</parameter></term>
60 <listitem>
61 <para>FE_SET_TONE</para>
62 </listitem>
63 </varlistentry>
64 <varlistentry>
65 <term><parameter>net_if</parameter></term>
66 <listitem>
67 <para>pointer to &dvb-net-if;</para>
68 </listitem>
69 </varlistentry>
70 </variablelist>
71 </refsect1>
72
73 <refsect1>
74 <title>Description</title>
75
76<para>The NET_ADD_IF ioctl system call selects the Packet ID (PID) that
77 contains a TCP/IP traffic, the type of encapsulation to be used (MPE or ULE)
78 and the interface number for the new interface to be created. When the
79 system call successfully returns, a new virtual network interface is created.</para>
80<para>The &dvb-net-if;::ifnum field will be filled with the number of the
81 created interface.</para>
82
83&return-value-dvb;
84</refsect1>
85
86<refsect1 id="dvb-net-if-t">
87<title>struct <structname>dvb_net_if</structname> description</title>
88
89<table pgwide="1" frame="none" id="dvb-net-if">
90 <title>struct <structname>dvb_net_if</structname></title>
91 <tgroup cols="2">
92 &cs-def;
93 <thead>
94 <row>
95 <entry>ID</entry>
96 <entry>Description</entry>
97 </row>
98 </thead>
99 <tbody valign="top">
100 <row>
101 <entry align="char">pid</entry>
102 <entry align="char">Packet ID (PID) of the MPEG-TS that contains
103 data</entry>
104 </row><row>
105 <entry align="char">ifnum</entry>
106 <entry align="char">number of the DVB interface.</entry>
107 </row><row>
108 <entry align="char">feedtype</entry>
109 <entry align="char">Encapsulation type of the feed. It can be:
110 <constant>DVB_NET_FEEDTYPE_MPE</constant> for MPE encoding
111 or
112 <constant>DVB_NET_FEEDTYPE_ULE</constant> for ULE encoding.
113 </entry>
114 </row>
115 </tbody>
116 </tgroup>
117</table>
118</refsect1>
119</refentry>
120
121<refentry id="NET_REMOVE_IF">
122 <refmeta>
123 <refentrytitle>ioctl NET_REMOVE_IF</refentrytitle>
124 &manvol;
125 </refmeta>
126
127 <refnamediv>
128 <refname>NET_REMOVE_IF</refname>
129 <refpurpose>Removes a network interface.</refpurpose>
130 </refnamediv>
131
132 <refsynopsisdiv>
133 <funcsynopsis>
134 <funcprototype>
135 <funcdef>int <function>ioctl</function></funcdef>
136 <paramdef>int <parameter>fd</parameter></paramdef>
137 <paramdef>int <parameter>request</parameter></paramdef>
138 <paramdef>int <parameter>ifnum</parameter></paramdef>
139 </funcprototype>
140 </funcsynopsis>
141 </refsynopsisdiv>
142
143 <refsect1>
144 <title>Arguments</title>
145 <variablelist>
146 <varlistentry>
147 <term><parameter>fd</parameter></term>
148 <listitem>
149 <para>&fe_fd;</para>
150 </listitem>
151 </varlistentry>
152 <varlistentry>
153 <term><parameter>request</parameter></term>
154 <listitem>
155 <para>FE_SET_TONE</para>
156 </listitem>
157 </varlistentry>
158 <varlistentry>
159 <term><parameter>net_if</parameter></term>
160 <listitem>
161 <para>number of the interface to be removed</para>
162 </listitem>
163 </varlistentry>
164 </variablelist>
165 </refsect1>
166
167 <refsect1>
168 <title>Description</title>
169
170<para>The NET_REMOVE_IF ioctl deletes an interface previously created
171 via &NET-ADD-IF;.</para>
172
173&return-value-dvb;
174</refsect1>
175</refentry>
176
177
178<refentry id="NET_GET_IF">
179 <refmeta>
180 <refentrytitle>ioctl NET_GET_IF</refentrytitle>
181 &manvol;
182 </refmeta>
183
184 <refnamediv>
185 <refname>NET_GET_IF</refname>
186 <refpurpose>Read the configuration data of an interface created via
187 &NET-ADD-IF;.</refpurpose>
188 </refnamediv>
189
190 <refsynopsisdiv>
191 <funcsynopsis>
192 <funcprototype>
193 <funcdef>int <function>ioctl</function></funcdef>
194 <paramdef>int <parameter>fd</parameter></paramdef>
195 <paramdef>int <parameter>request</parameter></paramdef>
196 <paramdef>struct dvb_net_if *<parameter>net_if</parameter></paramdef>
197 </funcprototype>
198 </funcsynopsis>
199 </refsynopsisdiv>
200
201 <refsect1>
202 <title>Arguments</title>
203 <variablelist>
204 <varlistentry>
205 <term><parameter>fd</parameter></term>
206 <listitem>
207 <para>&fe_fd;</para>
208 </listitem>
209 </varlistentry>
210 <varlistentry>
211 <term><parameter>request</parameter></term>
212 <listitem>
213 <para>FE_SET_TONE</para>
214 </listitem>
215 </varlistentry>
216 <varlistentry>
217 <term><parameter>net_if</parameter></term>
218 <listitem>
219 <para>pointer to &dvb-net-if;</para>
220 </listitem>
221 </varlistentry>
222 </variablelist>
223 </refsect1>
224
225 <refsect1>
226 <title>Description</title>
227
228<para>The NET_GET_IF ioctl uses the interface number given by the
229 &dvb-net-if;::ifnum field and fills the content of &dvb-net-if; with
230 the packet ID and encapsulation type used on such interface. If the
231 interface was not created yet with &NET-ADD-IF;, it will return -1 and
232 fill the <constant>errno</constant> with <constant>EINVAL</constant>
233 error code.</para>
234
235&return-value-dvb;
236</refsect1>
237</refentry>
238</section>
diff --git a/Documentation/DocBook/media/dvb/video.xml b/Documentation/DocBook/media/dvb/video.xml
deleted file mode 100644
index 71547fcd7ba0..000000000000
--- a/Documentation/DocBook/media/dvb/video.xml
+++ /dev/null
@@ -1,1968 +0,0 @@
1<title>DVB Video Device</title>
2<para>The DVB video device controls the MPEG2 video decoder of the DVB hardware. It
3can be accessed through <emphasis role="bold">/dev/dvb/adapter0/video0</emphasis>. Data types and and
4ioctl definitions can be accessed by including <emphasis role="bold">linux/dvb/video.h</emphasis> in your
5application.
6</para>
7<para>Note that the DVB video device only controls decoding of the MPEG video stream, not
8its presentation on the TV or computer screen. On PCs this is typically handled by an
9associated video4linux device, e.g. <emphasis role="bold">/dev/video</emphasis>, which allows scaling and defining output
10windows.
11</para>
12<para>Some DVB cards don&#8217;t have their own MPEG decoder, which results in the omission of
13the audio and video device as well as the video4linux device.
14</para>
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.
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>
22<section id="video_types">
23<title>Video Data Types</title>
24
25<section id="video-format-t">
26<title>video_format_t</title>
27<para>The <constant>video_format_t</constant> data type defined by
28</para>
29<programlisting>
30typedef enum {
31 VIDEO_FORMAT_4_3, /&#x22C6; Select 4:3 format &#x22C6;/
32 VIDEO_FORMAT_16_9, /&#x22C6; Select 16:9 format. &#x22C6;/
33 VIDEO_FORMAT_221_1 /&#x22C6; 2.21:1 &#x22C6;/
34} video_format_t;
35</programlisting>
36<para>is used in the VIDEO_SET_FORMAT function (??) to tell the driver which aspect ratio
37the output hardware (e.g. TV) has. It is also used in the data structures video_status
38(??) returned by VIDEO_GET_STATUS (??) and video_event (??) returned by
39VIDEO_GET_EVENT (??) which report about the display format of the current video
40stream.
41</para>
42</section>
43
44<section id="video-displayformat-t">
45<title>video_displayformat_t</title>
46<para>In case the display format of the video stream and of the display hardware differ the
47application has to specify how to handle the cropping of the picture. This can be done using
48the VIDEO_SET_DISPLAY_FORMAT call (??) which accepts
49</para>
50<programlisting>
51typedef enum {
52 VIDEO_PAN_SCAN, /&#x22C6; use pan and scan format &#x22C6;/
53 VIDEO_LETTER_BOX, /&#x22C6; use letterbox format &#x22C6;/
54 VIDEO_CENTER_CUT_OUT /&#x22C6; use center cut out format &#x22C6;/
55} video_displayformat_t;
56</programlisting>
57<para>as argument.
58</para>
59</section>
60
61<section id="video-stream-source-t">
62<title>video_stream_source_t</title>
63<para>The video stream source is set through the VIDEO_SELECT_SOURCE call and can take
64the following values, depending on whether we are replaying from an internal (demuxer) or
65external (user write) source.
66</para>
67<programlisting>
68typedef enum {
69 VIDEO_SOURCE_DEMUX, /&#x22C6; Select the demux as the main source &#x22C6;/
70 VIDEO_SOURCE_MEMORY /&#x22C6; If this source is selected, the stream
71 comes from the user through the write
72 system call &#x22C6;/
73} video_stream_source_t;
74</programlisting>
75<para>VIDEO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
76DVR device) as the source of the video stream. If VIDEO_SOURCE_MEMORY
77is selected the stream comes from the application through the <emphasis role="bold">write()</emphasis> system
78call.
79</para>
80</section>
81
82<section id="video-play-state-t">
83<title>video_play_state_t</title>
84<para>The following values can be returned by the VIDEO_GET_STATUS call representing the
85state of video playback.
86</para>
87<programlisting>
88typedef enum {
89 VIDEO_STOPPED, /&#x22C6; Video is stopped &#x22C6;/
90 VIDEO_PLAYING, /&#x22C6; Video is currently playing &#x22C6;/
91 VIDEO_FREEZED /&#x22C6; Video is freezed &#x22C6;/
92} video_play_state_t;
93</programlisting>
94</section>
95
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">
140<title>struct video_event</title>
141<para>The following is the structure of a video event as it is returned by the VIDEO_GET_EVENT
142call.
143</para>
144<programlisting>
145struct video_event {
146 __s32 type;
147#define VIDEO_EVENT_SIZE_CHANGED 1
148#define VIDEO_EVENT_FRAME_RATE_CHANGED 2
149#define VIDEO_EVENT_DECODER_STOPPED 3
150#define VIDEO_EVENT_VSYNC 4
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};
158</programlisting>
159</section>
160
161<section id="video-status">
162<title>struct video_status</title>
163<para>The VIDEO_GET_STATUS call returns the following structure informing about various
164states of the playback operation.
165</para>
166<programlisting>
167struct video_status {
168 int video_blank; /&#x22C6; blank video on freeze? &#x22C6;/
169 video_play_state_t play_state; /&#x22C6; current state of playback &#x22C6;/
170 video_stream_source_t stream_source; /&#x22C6; current source (demux/memory) &#x22C6;/
171 video_format_t video_format; /&#x22C6; current aspect ratio of stream &#x22C6;/
172 video_displayformat_t display_format;/&#x22C6; selected cropping mode &#x22C6;/
173};
174</programlisting>
175<para>If video_blank is set video will be blanked out if the channel is changed or if playback is
176stopped. Otherwise, the last picture will be displayed. play_state indicates if the video is
177currently frozen, stopped, or being played back. The stream_source corresponds to the seleted
178source for the video stream. It can come either from the demultiplexer or from memory.
179The video_format indicates the aspect ratio (one of 4:3 or 16:9) of the currently
180played video stream. Finally, display_format corresponds to the selected cropping
181mode in case the source video format is not the same as the format of the output
182device.
183</para>
184</section>
185
186<section id="video-still-picture">
187<title>struct video_still_picture</title>
188<para>An I-frame displayed via the VIDEO_STILLPICTURE call is passed on within the
189following structure.
190</para>
191<programlisting>
192/&#x22C6; pointer to and size of a single iframe in memory &#x22C6;/
193struct video_still_picture {
194 char &#x22C6;iFrame; /&#x22C6; pointer to a single iframe in memory &#x22C6;/
195 int32_t size;
196};
197</programlisting>
198</section>
199
200<section id="video_caps">
201<title>video capabilities</title>
202<para>A call to VIDEO_GET_CAPABILITIES returns an unsigned integer with the following
203bits set according to the hardwares capabilities.
204</para>
205<programlisting>
206 /&#x22C6; bit definitions for capabilities: &#x22C6;/
207 /&#x22C6; can the hardware decode MPEG1 and/or MPEG2? &#x22C6;/
208 #define VIDEO_CAP_MPEG1 1
209 #define VIDEO_CAP_MPEG2 2
210 /&#x22C6; can you send a system and/or program stream to video device?
211 (you still have to open the video and the audio device but only
212 send the stream to the video device) &#x22C6;/
213 #define VIDEO_CAP_SYS 4
214 #define VIDEO_CAP_PROG 8
215 /&#x22C6; can the driver also handle SPU, NAVI and CSS encoded data?
216 (CSS API is not present yet) &#x22C6;/
217 #define VIDEO_CAP_SPU 16
218 #define VIDEO_CAP_NAVI 32
219 #define VIDEO_CAP_CSS 64
220</programlisting>
221</section>
222
223<section id="video-system">
224<title>video_system_t</title>
225<para>A call to VIDEO_SET_SYSTEM sets the desired video system for TV output. The
226following system types can be set:
227</para>
228<programlisting>
229typedef enum {
230 VIDEO_SYSTEM_PAL,
231 VIDEO_SYSTEM_NTSC,
232 VIDEO_SYSTEM_PALN,
233 VIDEO_SYSTEM_PALNc,
234 VIDEO_SYSTEM_PALM,
235 VIDEO_SYSTEM_NTSC60,
236 VIDEO_SYSTEM_PAL60,
237 VIDEO_SYSTEM_PALM60
238} video_system_t;
239</programlisting>
240</section>
241
242<section id="video-highlight">
243<title>struct video_highlight</title>
244<para>Calling the ioctl VIDEO_SET_HIGHLIGHTS posts the SPU highlight information. The
245call expects the following format for that information:
246</para>
247<programlisting>
248 typedef
249 struct video_highlight {
250 boolean active; /&#x22C6; 1=show highlight, 0=hide highlight &#x22C6;/
251 uint8_t contrast1; /&#x22C6; 7- 4 Pattern pixel contrast &#x22C6;/
252 /&#x22C6; 3- 0 Background pixel contrast &#x22C6;/
253 uint8_t contrast2; /&#x22C6; 7- 4 Emphasis pixel-2 contrast &#x22C6;/
254 /&#x22C6; 3- 0 Emphasis pixel-1 contrast &#x22C6;/
255 uint8_t color1; /&#x22C6; 7- 4 Pattern pixel color &#x22C6;/
256 /&#x22C6; 3- 0 Background pixel color &#x22C6;/
257 uint8_t color2; /&#x22C6; 7- 4 Emphasis pixel-2 color &#x22C6;/
258 /&#x22C6; 3- 0 Emphasis pixel-1 color &#x22C6;/
259 uint32_t ypos; /&#x22C6; 23-22 auto action mode &#x22C6;/
260 /&#x22C6; 21-12 start y &#x22C6;/
261 /&#x22C6; 9- 0 end y &#x22C6;/
262 uint32_t xpos; /&#x22C6; 23-22 button color number &#x22C6;/
263 /&#x22C6; 21-12 start x &#x22C6;/
264 /&#x22C6; 9- 0 end x &#x22C6;/
265 } video_highlight_t;
266</programlisting>
267
268</section>
269<section id="video-spu">
270<title>struct video_spu</title>
271<para>Calling VIDEO_SET_SPU deactivates or activates SPU decoding, according to the
272following format:
273</para>
274<programlisting>
275 typedef
276 struct video_spu {
277 boolean active;
278 int stream_id;
279 } video_spu_t;
280</programlisting>
281
282</section>
283<section id="video-spu-palette">
284<title>struct video_spu_palette</title>
285<para>The following structure is used to set the SPU palette by calling VIDEO_SPU_PALETTE:
286</para>
287<programlisting>
288 typedef
289 struct video_spu_palette {
290 int length;
291 uint8_t &#x22C6;palette;
292 } video_spu_palette_t;
293</programlisting>
294
295</section>
296<section id="video-navi-pack">
297<title>struct video_navi_pack</title>
298<para>In order to get the navigational data the following structure has to be passed to the ioctl
299VIDEO_GET_NAVI:
300</para>
301<programlisting>
302 typedef
303 struct video_navi_pack {
304 int length; /&#x22C6; 0 ... 1024 &#x22C6;/
305 uint8_t data[1024];
306 } video_navi_pack_t;
307</programlisting>
308</section>
309
310
311<section id="video-attributes-t">
312<title>video_attributes_t</title>
313<para>The following attributes can be set by a call to VIDEO_SET_ATTRIBUTES:
314</para>
315<programlisting>
316 typedef uint16_t video_attributes_t;
317 /&#x22C6; bits: descr. &#x22C6;/
318 /&#x22C6; 15-14 Video compression mode (0=MPEG-1, 1=MPEG-2) &#x22C6;/
319 /&#x22C6; 13-12 TV system (0=525/60, 1=625/50) &#x22C6;/
320 /&#x22C6; 11-10 Aspect ratio (0=4:3, 3=16:9) &#x22C6;/
321 /&#x22C6; 9- 8 permitted display mode on 4:3 monitor (0=both, 1=only pan-sca &#x22C6;/
322 /&#x22C6; 7 line 21-1 data present in GOP (1=yes, 0=no) &#x22C6;/
323 /&#x22C6; 6 line 21-2 data present in GOP (1=yes, 0=no) &#x22C6;/
324 /&#x22C6; 5- 3 source resolution (0=720x480/576, 1=704x480/576, 2=352x480/57 &#x22C6;/
325 /&#x22C6; 2 source letterboxed (1=yes, 0=no) &#x22C6;/
326 /&#x22C6; 0 film/camera mode (0=camera, 1=film (625/50 only)) &#x22C6;/
327</programlisting>
328</section></section>
329
330
331<section id="video_function_calls">
332<title>Video Function Calls</title>
333
334
335<section id="video_fopen">
336<title>open()</title>
337<para>DESCRIPTION
338</para>
339<informaltable><tgroup cols="1"><tbody><row><entry
340 align="char">
341<para>This system call opens a named video device (e.g. /dev/dvb/adapter0/video0)
342 for subsequent use.</para>
343<para>When an open() call has succeeded, the device will be ready for use.
344 The significance of blocking or non-blocking mode is described in the
345 documentation for functions where there is a difference. It does not affect the
346 semantics of the open() call itself. A device opened in blocking mode can later
347 be put into non-blocking mode (and vice versa) using the F_SETFL command
348 of the fcntl system call. This is a standard system call, documented in the Linux
349 manual page for fcntl. Only one user can open the Video Device in O_RDWR
350 mode. All other attempts to open the device in this mode will fail, and an
351 error-code will be returned. If the Video Device is opened in O_RDONLY
352 mode, the only ioctl call that can be used is VIDEO_GET_STATUS. All other
353 call will return an error code.</para>
354</entry>
355 </row></tbody></tgroup></informaltable>
356
357<para>SYNOPSIS
358</para>
359<informaltable><tgroup cols="1"><tbody><row><entry
360 align="char">
361<para>int open(const char &#x22C6;deviceName, int flags);</para>
362</entry>
363 </row></tbody></tgroup></informaltable>
364<para>PARAMETERS
365</para>
366<informaltable><tgroup cols="2"><tbody><row><entry
367 align="char">
368<para>const char
369 *deviceName</para>
370</entry><entry
371 align="char">
372<para>Name of specific video device.</para>
373</entry>
374 </row><row><entry
375 align="char">
376<para>int flags</para>
377</entry><entry
378 align="char">
379<para>A bit-wise OR of the following flags:</para>
380</entry>
381 </row><row><entry
382 align="char">
383</entry><entry
384 align="char">
385<para>O_RDONLY read-only access</para>
386</entry>
387 </row><row><entry
388 align="char">
389</entry><entry
390 align="char">
391<para>O_RDWR read/write access</para>
392</entry>
393 </row><row><entry
394 align="char">
395</entry><entry
396 align="char">
397<para>O_NONBLOCK open in non-blocking mode</para>
398</entry>
399 </row><row><entry
400 align="char">
401</entry><entry
402 align="char">
403<para>(blocking mode is the default)</para>
404</entry>
405 </row></tbody></tgroup></informaltable>
406<para>RETURN VALUE</para>
407<informaltable><tgroup cols="2"><tbody><row><entry
408 align="char">
409<para>ENODEV</para>
410</entry><entry
411 align="char">
412<para>Device driver not loaded/available.</para>
413</entry>
414 </row><row><entry
415 align="char">
416<para>EINTERNAL</para>
417</entry><entry
418 align="char">
419<para>Internal error.</para>
420</entry>
421 </row><row><entry
422 align="char">
423<para>EBUSY</para>
424</entry><entry
425 align="char">
426<para>Device or resource busy.</para>
427</entry>
428 </row><row><entry
429 align="char">
430<para>EINVAL</para>
431</entry><entry
432 align="char">
433<para>Invalid argument.</para>
434</entry>
435 </row></tbody></tgroup></informaltable>
436
437</section>
438<section id="video_fclose">
439<title>close()</title>
440<para>DESCRIPTION
441</para>
442<informaltable><tgroup cols="1"><tbody><row><entry
443 align="char">
444<para>This system call closes a previously opened video device.</para>
445</entry>
446 </row></tbody></tgroup></informaltable>
447<para>SYNOPSIS
448</para>
449<informaltable><tgroup cols="1"><tbody><row><entry
450 align="char">
451<para>int close(int fd);</para>
452</entry>
453 </row></tbody></tgroup></informaltable>
454<para>PARAMETERS
455</para>
456<informaltable><tgroup cols="2"><tbody><row><entry
457 align="char">
458<para>int fd</para>
459</entry><entry
460 align="char">
461<para>File descriptor returned by a previous call to open().</para>
462</entry>
463 </row></tbody></tgroup></informaltable>
464<para>RETURN VALUE</para>
465<informaltable><tgroup cols="2"><tbody><row><entry
466 align="char">
467<para>EBADF</para>
468</entry><entry
469 align="char">
470<para>fd is not a valid open file descriptor.</para>
471</entry>
472 </row></tbody></tgroup></informaltable>
473
474</section>
475<section id="video_fwrite">
476<title>write()</title>
477<para>DESCRIPTION
478</para>
479<informaltable><tgroup cols="1"><tbody><row><entry
480 align="char">
481<para>This system call can only be used if VIDEO_SOURCE_MEMORY is selected
482 in the ioctl call VIDEO_SELECT_SOURCE. The data provided shall be in
483 PES format, unless the capability allows other formats. If O_NONBLOCK is
484 not specified the function will block until buffer space is available. The amount
485 of data to be transferred is implied by count.</para>
486</entry>
487 </row></tbody></tgroup></informaltable>
488<para>SYNOPSIS
489</para>
490<informaltable><tgroup cols="1"><tbody><row><entry
491 align="char">
492<para>size_t write(int fd, const void &#x22C6;buf, size_t count);</para>
493</entry>
494 </row></tbody></tgroup></informaltable>
495<para>PARAMETERS
496</para>
497<informaltable><tgroup cols="2"><tbody><row><entry
498 align="char">
499<para>int fd</para>
500</entry><entry
501 align="char">
502<para>File descriptor returned by a previous call to open().</para>
503</entry>
504 </row><row><entry
505 align="char">
506<para>void *buf</para>
507</entry><entry
508 align="char">
509<para>Pointer to the buffer containing the PES data.</para>
510</entry>
511 </row><row><entry
512 align="char">
513<para>size_t count</para>
514</entry><entry
515 align="char">
516<para>Size of buf.</para>
517</entry>
518 </row></tbody></tgroup></informaltable>
519<para>RETURN VALUE</para>
520<informaltable><tgroup cols="2"><tbody><row><entry
521 align="char">
522<para>EPERM</para>
523</entry><entry
524 align="char">
525<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
526</entry>
527 </row><row><entry
528 align="char">
529<para>ENOMEM</para>
530</entry><entry
531 align="char">
532<para>Attempted to write more data than the internal buffer can
533 hold.</para>
534</entry>
535 </row><row><entry
536 align="char">
537<para>EBADF</para>
538</entry><entry
539 align="char">
540<para>fd is not a valid open file descriptor.</para>
541</entry>
542 </row></tbody></tgroup></informaltable>
543
544</section><section id="VIDEO_STOP"
545role="subsection"><title>VIDEO_STOP</title>
546<para>DESCRIPTION
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>
550<informaltable><tgroup cols="1"><tbody><row><entry
551 align="char">
552<para>This ioctl call asks the Video Device to stop playing the current stream.
553 Depending on the input parameter, the screen can be blanked out or displaying
554 the last decoded frame.</para>
555</entry>
556 </row></tbody></tgroup></informaltable>
557<para>SYNOPSIS
558</para>
559<informaltable><tgroup cols="1"><tbody><row><entry
560 align="char">
561<para>int ioctl(fd, int request = VIDEO_STOP, boolean
562 mode);</para>
563</entry>
564 </row></tbody></tgroup></informaltable>
565<para>PARAMETERS
566</para>
567<informaltable><tgroup cols="2"><tbody><row><entry
568 align="char">
569<para>int fd</para>
570</entry><entry
571 align="char">
572<para>File descriptor returned by a previous call to open().</para>
573</entry>
574 </row><row><entry
575 align="char">
576<para>int request</para>
577</entry><entry
578 align="char">
579<para>Equals VIDEO_STOP for this command.</para>
580</entry>
581 </row><row><entry
582 align="char">
583<para>Boolean mode</para>
584</entry><entry
585 align="char">
586<para>Indicates how the screen shall be handled.</para>
587</entry>
588 </row><row><entry
589 align="char">
590</entry><entry
591 align="char">
592<para>TRUE: Blank screen when stop.</para>
593</entry>
594 </row><row><entry
595 align="char">
596</entry><entry
597 align="char">
598<para>FALSE: Show last decoded frame.</para>
599</entry>
600 </row></tbody></tgroup></informaltable>
601&return-value-dvb;
602
603</section><section id="VIDEO_PLAY"
604role="subsection"><title>VIDEO_PLAY</title>
605<para>DESCRIPTION
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>
609<informaltable><tgroup cols="1"><tbody><row><entry
610 align="char">
611<para>This ioctl call asks the Video Device to start playing a video stream from the
612 selected source.</para>
613</entry>
614 </row></tbody></tgroup></informaltable>
615<para>SYNOPSIS
616</para>
617<informaltable><tgroup cols="1"><tbody><row><entry
618 align="char">
619<para>int ioctl(fd, int request = VIDEO_PLAY);</para>
620</entry>
621 </row></tbody></tgroup></informaltable>
622<para>PARAMETERS
623</para>
624<informaltable><tgroup cols="2"><tbody><row><entry
625 align="char">
626<para>int fd</para>
627</entry><entry
628 align="char">
629<para>File descriptor returned by a previous call to open().</para>
630</entry>
631 </row><row><entry
632 align="char">
633<para>int request</para>
634</entry><entry
635 align="char">
636<para>Equals VIDEO_PLAY for this command.</para>
637</entry>
638 </row></tbody></tgroup></informaltable>
639&return-value-dvb;
640
641</section><section id="VIDEO_FREEZE"
642role="subsection"><title>VIDEO_FREEZE</title>
643<para>DESCRIPTION
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>
647<informaltable><tgroup cols="1"><tbody><row><entry
648 align="char">
649<para>This ioctl call suspends the live video stream being played. Decoding
650 and playing are frozen. It is then possible to restart the decoding
651 and playing process of the video stream using the VIDEO_CONTINUE
652 command. If VIDEO_SOURCE_MEMORY is selected in the ioctl call
653 VIDEO_SELECT_SOURCE, the DVB subsystem will not decode any more
654 data until the ioctl call VIDEO_CONTINUE or VIDEO_PLAY is performed.</para>
655</entry>
656 </row></tbody></tgroup></informaltable>
657<para>SYNOPSIS
658</para>
659<informaltable><tgroup cols="1"><tbody><row><entry
660 align="char">
661<para>int ioctl(fd, int request = VIDEO_FREEZE);</para>
662</entry>
663 </row></tbody></tgroup></informaltable>
664<para>PARAMETERS
665</para>
666<informaltable><tgroup cols="2"><tbody><row><entry
667 align="char">
668<para>int fd</para>
669</entry><entry
670 align="char">
671<para>File descriptor returned by a previous call to open().</para>
672</entry>
673 </row><row><entry
674 align="char">
675<para>int request</para>
676</entry><entry
677 align="char">
678<para>Equals VIDEO_FREEZE for this command.</para>
679</entry>
680 </row></tbody></tgroup></informaltable>
681&return-value-dvb;
682
683</section><section id="VIDEO_CONTINUE"
684role="subsection"><title>VIDEO_CONTINUE</title>
685<para>DESCRIPTION
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>
689<informaltable><tgroup cols="1"><tbody><row><entry
690 align="char">
691<para>This ioctl call restarts decoding and playing processes of the video stream
692 which was played before a call to VIDEO_FREEZE was made.</para>
693</entry>
694 </row></tbody></tgroup></informaltable>
695<para>SYNOPSIS
696</para>
697<informaltable><tgroup cols="1"><tbody><row><entry
698 align="char">
699<para>int ioctl(fd, int request = VIDEO_CONTINUE);</para>
700</entry>
701 </row></tbody></tgroup></informaltable>
702<para>PARAMETERS
703</para>
704<informaltable><tgroup cols="2"><tbody><row><entry
705 align="char">
706<para>int fd</para>
707</entry><entry
708 align="char">
709<para>File descriptor returned by a previous call to open().</para>
710</entry>
711 </row><row><entry
712 align="char">
713<para>int request</para>
714</entry><entry
715 align="char">
716<para>Equals VIDEO_CONTINUE for this command.</para>
717</entry>
718 </row></tbody></tgroup></informaltable>
719&return-value-dvb;
720
721</section><section id="VIDEO_SELECT_SOURCE"
722role="subsection"><title>VIDEO_SELECT_SOURCE</title>
723<para>DESCRIPTION
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>
728<informaltable><tgroup cols="1"><tbody><row><entry
729 align="char">
730<para>This ioctl call informs the video device which source shall be used for the input
731 data. The possible sources are demux or memory. If memory is selected, the
732 data is fed to the video device through the write command.</para>
733</entry>
734 </row></tbody></tgroup></informaltable>
735<para>SYNOPSIS
736</para>
737<informaltable><tgroup cols="1"><tbody><row><entry
738 align="char">
739<para>int ioctl(fd, int request = VIDEO_SELECT_SOURCE,
740 video_stream_source_t source);</para>
741</entry>
742 </row></tbody></tgroup></informaltable>
743<para>PARAMETERS
744</para>
745<informaltable><tgroup cols="2"><tbody><row><entry
746 align="char">
747<para>int fd</para>
748</entry><entry
749 align="char">
750<para>File descriptor returned by a previous call to open().</para>
751</entry>
752 </row><row><entry
753 align="char">
754<para>int request</para>
755</entry><entry
756 align="char">
757<para>Equals VIDEO_SELECT_SOURCE for this command.</para>
758</entry>
759 </row><row><entry
760 align="char">
761<para>video_stream_source_t
762 source</para>
763</entry><entry
764 align="char">
765<para>Indicates which source shall be used for the Video stream.</para>
766</entry>
767 </row></tbody></tgroup></informaltable>
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
788</para>
789<informaltable><tgroup cols="2"><tbody><row><entry
790 align="char">
791<para>int fd</para>
792</entry><entry
793 align="char">
794<para>File descriptor returned by a previous call to open().</para>
795</entry>
796 </row><row><entry
797 align="char">
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>
806</entry><entry
807 align="char">
808<para>TRUE: Blank screen when stop.</para>
809</entry>
810 </row><row><entry
811 align="char">
812</entry><entry
813 align="char">
814<para>FALSE: Show last decoded frame.</para>
815</entry>
816 </row></tbody></tgroup></informaltable>
817&return-value-dvb;
818
819</section><section id="VIDEO_GET_STATUS"
820role="subsection"><title>VIDEO_GET_STATUS</title>
821<para>DESCRIPTION
822</para>
823<informaltable><tgroup cols="1"><tbody><row><entry
824 align="char">
825<para>This ioctl call asks the Video Device to return the current status of the device.</para>
826</entry>
827 </row></tbody></tgroup></informaltable>
828<para>SYNOPSIS
829</para>
830<informaltable><tgroup cols="1"><tbody><row><entry
831 align="char">
832<para> int ioctl(fd, int request = VIDEO_GET_STATUS, struct
833 video_status &#x22C6;status);</para>
834</entry>
835 </row></tbody></tgroup></informaltable>
836<para>PARAMETERS
837</para>
838<informaltable><tgroup cols="2"><tbody><row><entry
839 align="char">
840<para>int fd</para>
841</entry><entry
842 align="char">
843<para>File descriptor returned by a previous call to open().</para>
844</entry>
845 </row><row><entry
846 align="char">
847<para>int request</para>
848</entry><entry
849 align="char">
850<para>Equals VIDEO_GET_STATUS for this command.</para>
851</entry>
852 </row><row><entry
853 align="char">
854<para>struct video_status
855 *status</para>
856</entry><entry
857 align="char">
858<para>Returns the current status of the Video Device.</para>
859</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
870 align="char">
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
878 align="char">
879<para>int ioctl(int fd, int request =
880 VIDEO_GET_FRAME_COUNT, __u64 *pts);</para>
881</entry>
882 </row></tbody></tgroup></informaltable>
883<para>PARAMETERS
884</para>
885<informaltable><tgroup cols="2"><tbody><row><entry
886 align="char">
887<para>int fd</para>
888</entry><entry
889 align="char">
890<para>File descriptor returned by a previous call to open().</para>
891</entry>
892 </row><row><entry
893 align="char">
894<para>int request</para>
895</entry><entry
896 align="char">
897<para>Equals VIDEO_GET_FRAME_COUNT for this
898 command.</para>
899</entry>
900 </row><row><entry
901 align="char">
902<para>__u64 *pts
903</para>
904</entry><entry
905 align="char">
906<para>Returns the number of frames displayed since the decoder was started.
907</para>
908</entry>
909 </row></tbody></tgroup></informaltable>
910&return-value-dvb;
911
912</section><section id="VIDEO_GET_PTS"
913role="subsection"><title>VIDEO_GET_PTS</title>
914<para>DESCRIPTION
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>
918<informaltable><tgroup cols="1"><tbody><row><entry
919 align="char">
920<para>This ioctl call asks the Video Device to return the current PTS timestamp.</para>
921</entry>
922 </row></tbody></tgroup></informaltable>
923<para>SYNOPSIS
924</para>
925<informaltable><tgroup cols="1"><tbody><row><entry
926 align="char">
927<para>int ioctl(int fd, int request =
928 VIDEO_GET_PTS, __u64 *pts);</para>
929</entry>
930 </row></tbody></tgroup></informaltable>
931<para>PARAMETERS
932</para>
933<informaltable><tgroup cols="2"><tbody><row><entry
934 align="char">
935<para>int fd</para>
936</entry><entry
937 align="char">
938<para>File descriptor returned by a previous call to open().</para>
939</entry>
940 </row><row><entry
941 align="char">
942<para>int request</para>
943</entry><entry
944 align="char">
945<para>Equals VIDEO_GET_PTS for this
946 command.</para>
947</entry>
948 </row><row><entry
949 align="char">
950<para>__u64 *pts
951</para>
952</entry><entry
953 align="char">
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>
980</entry>
981 </row></tbody></tgroup></informaltable>
982<para>PARAMETERS
983</para>
984<informaltable><tgroup cols="2"><tbody><row><entry
985 align="char">
986<para>int fd</para>
987</entry><entry
988 align="char">
989<para>File descriptor returned by a previous call to open().</para>
990</entry>
991 </row><row><entry
992 align="char">
993<para>int request</para>
994</entry><entry
995 align="char">
996<para>Equals VIDEO_GET_FRAME_RATE for this
997 command.</para>
998</entry>
999 </row><row><entry
1000 align="char">
1001<para>unsigned int *rate
1002</para>
1003</entry><entry
1004 align="char">
1005<para>Returns the framerate in number of frames per 1000 seconds.
1006</para>
1007</entry>
1008 </row></tbody></tgroup></informaltable>
1009&return-value-dvb;
1010
1011</section><section id="VIDEO_GET_EVENT"
1012role="subsection"><title>VIDEO_GET_EVENT</title>
1013<para>DESCRIPTION
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>
1017<informaltable><tgroup cols="1"><tbody><row><entry
1018 align="char">
1019<para>This ioctl call returns an event of type video_event if available. If an event is
1020 not available, the behavior depends on whether the device is in blocking or
1021 non-blocking mode. In the latter case, the call fails immediately with errno
1022 set to EWOULDBLOCK. In the former case, the call blocks until an event
1023 becomes available. The standard Linux poll() and/or select() system calls can
1024 be used with the device file descriptor to watch for new events. For select(),
1025 the file descriptor should be included in the exceptfds argument, and for
1026 poll(), POLLPRI should be specified as the wake-up condition. Read-only
1027 permissions are sufficient for this ioctl call.</para>
1028</entry>
1029 </row></tbody></tgroup></informaltable>
1030<para>SYNOPSIS
1031</para>
1032<informaltable><tgroup cols="1"><tbody><row><entry
1033 align="char">
1034<para> int ioctl(fd, int request = VIDEO_GET_EVENT, struct
1035 video_event &#x22C6;ev);</para>
1036</entry>
1037 </row></tbody></tgroup></informaltable>
1038<para>PARAMETERS
1039</para>
1040<informaltable><tgroup cols="2"><tbody><row><entry
1041 align="char">
1042<para>int fd</para>
1043</entry><entry
1044 align="char">
1045<para>File descriptor returned by a previous call to open().</para>
1046</entry>
1047 </row><row><entry
1048 align="char">
1049<para>int request</para>
1050</entry><entry
1051 align="char">
1052<para>Equals VIDEO_GET_EVENT for this command.</para>
1053</entry>
1054 </row><row><entry
1055 align="char">
1056<para>struct video_event
1057 *ev</para>
1058</entry><entry
1059 align="char">
1060<para>Points to the location where the event, if any, is to be
1061 stored.</para>
1062</entry>
1063 </row></tbody></tgroup></informaltable>
1064&return-value-dvb;
1065<informaltable><tgroup cols="2"><tbody><row><entry
1066 align="char">
1067<para>EWOULDBLOCK</para>
1068</entry><entry
1069 align="char">
1070<para>There is no event pending, and the device is in
1071 non-blocking mode.</para>
1072</entry>
1073 </row><row><entry
1074 align="char">
1075<para>EOVERFLOW</para>
1076</entry><entry
1077 align="char">
1078<para>Overflow in event queue - one or more events were lost.</para>
1079</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
1089 align="char">
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>
1108</entry><entry
1109 align="char">
1110<para>File descriptor returned by a previous call to open().</para>
1111</entry>
1112 </row><row><entry
1113 align="char">
1114<para>int request</para>
1115</entry><entry
1116 align="char">
1117<para>Equals VIDEO_COMMAND for this
1118 command.</para>
1119</entry>
1120 </row><row><entry
1121 align="char">
1122<para>struct video_command *cmd
1123</para>
1124</entry><entry
1125 align="char">
1126<para>Commands the decoder.
1127</para>
1128</entry>
1129 </row></tbody></tgroup></informaltable>
1130&return-value-dvb;
1131
1132</section><section id="VIDEO_TRY_COMMAND"
1133role="subsection"><title>VIDEO_TRY_COMMAND</title>
1134<para>DESCRIPTION
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>
1138<informaltable><tgroup cols="1"><tbody><row><entry
1139 align="char">
1140<para>This ioctl tries a decoder command. The <constant>video_command</constant> struct
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>
1143</entry>
1144 </row></tbody></tgroup></informaltable>
1145<para>SYNOPSIS
1146</para>
1147<informaltable><tgroup cols="1"><tbody><row><entry
1148 align="char">
1149<para>int ioctl(int fd, int request =
1150 VIDEO_TRY_COMMAND, struct video_command *cmd);</para>
1151</entry>
1152 </row></tbody></tgroup></informaltable>
1153<para>PARAMETERS
1154</para>
1155<informaltable><tgroup cols="2"><tbody><row><entry
1156 align="char">
1157<para>int fd</para>
1158</entry><entry
1159 align="char">
1160<para>File descriptor returned by a previous call to open().</para>
1161</entry>
1162 </row><row><entry
1163 align="char">
1164<para>int request</para>
1165</entry><entry
1166 align="char">
1167<para>Equals VIDEO_TRY_COMMAND for this
1168 command.</para>
1169</entry>
1170 </row><row><entry
1171 align="char">
1172<para>struct video_command *cmd
1173</para>
1174</entry><entry
1175 align="char">
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>
1189</entry>
1190 </row></tbody></tgroup></informaltable>
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
1200</para>
1201<informaltable><tgroup cols="2"><tbody><row><entry
1202 align="char">
1203<para>int fd</para>
1204</entry><entry
1205 align="char">
1206<para>File descriptor returned by a previous call to open().</para>
1207</entry>
1208 </row><row><entry
1209 align="char">
1210<para>int request</para>
1211</entry><entry
1212 align="char">
1213<para>Equals VIDEO_GET_SIZE for this
1214 command.</para>
1215</entry>
1216 </row><row><entry
1217 align="char">
1218<para>video_size_t *size
1219</para>
1220</entry><entry
1221 align="char">
1222<para>Returns the size and aspect ratio.
1223</para>
1224</entry>
1225 </row></tbody></tgroup></informaltable>
1226&return-value-dvb;
1227
1228</section><section id="VIDEO_SET_DISPLAY_FORMAT"
1229role="subsection"><title>VIDEO_SET_DISPLAY_FORMAT</title>
1230<para>DESCRIPTION
1231</para>
1232<informaltable><tgroup cols="1"><tbody><row><entry
1233 align="char">
1234<para>This ioctl call asks the Video Device to select the video format to be applied
1235 by the MPEG chip on the video.</para>
1236</entry>
1237 </row></tbody></tgroup></informaltable>
1238<para>SYNOPSIS
1239</para>
1240<informaltable><tgroup cols="1"><tbody><row><entry
1241 align="char">
1242<para> int ioctl(fd, int request =
1243 VIDEO_SET_DISPLAY_FORMAT, video_display_format_t
1244 format);</para>
1245</entry>
1246 </row></tbody></tgroup></informaltable>
1247<para>PARAMETERS
1248</para>
1249<informaltable><tgroup cols="2"><tbody><row><entry
1250 align="char">
1251<para>int fd</para>
1252</entry><entry
1253 align="char">
1254<para>File descriptor returned by a previous call to open().</para>
1255</entry>
1256 </row><row><entry
1257 align="char">
1258<para>int request</para>
1259</entry><entry
1260 align="char">
1261<para>Equals VIDEO_SET_DISPLAY_FORMAT for this
1262 command.</para>
1263</entry>
1264 </row><row><entry
1265 align="char">
1266<para>video_display_format_t
1267 format</para>
1268</entry><entry
1269 align="char">
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>
1284</entry>
1285 </row></tbody></tgroup></informaltable>
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
1295</para>
1296<informaltable><tgroup cols="2"><tbody><row><entry
1297 align="char">
1298<para>int fd</para>
1299</entry><entry
1300 align="char">
1301<para>File descriptor returned by a previous call to open().</para>
1302</entry>
1303 </row><row><entry
1304 align="char">
1305<para>int request</para>
1306</entry><entry
1307 align="char">
1308<para>Equals VIDEO_STILLPICTURE for this command.</para>
1309</entry>
1310 </row><row><entry
1311 align="char">
1312<para>struct
1313 video_still_picture
1314 *sp</para>
1315</entry><entry
1316 align="char">
1317<para>Pointer to a location where an I-frame and size is stored.</para>
1318</entry>
1319 </row></tbody></tgroup></informaltable>
1320&return-value-dvb;
1321
1322</section><section id="VIDEO_FAST_FORWARD"
1323role="subsection"><title>VIDEO_FAST_FORWARD</title>
1324<para>DESCRIPTION
1325</para>
1326<informaltable><tgroup cols="1"><tbody><row><entry
1327 align="char">
1328<para>This ioctl call asks the Video Device to skip decoding of N number of I-frames.
1329 This call can only be used if VIDEO_SOURCE_MEMORY is selected.</para>
1330</entry>
1331 </row></tbody></tgroup></informaltable>
1332<para>SYNOPSIS
1333</para>
1334<informaltable><tgroup cols="1"><tbody><row><entry
1335 align="char">
1336<para>int ioctl(fd, int request = VIDEO_FAST_FORWARD, int
1337 nFrames);</para>
1338</entry>
1339 </row></tbody></tgroup></informaltable>
1340<para>PARAMETERS
1341</para>
1342<informaltable><tgroup cols="2"><tbody><row><entry
1343 align="char">
1344<para>int fd</para>
1345</entry><entry
1346 align="char">
1347<para>File descriptor returned by a previous call to open().</para>
1348</entry>
1349 </row><row><entry
1350 align="char">
1351<para>int request</para>
1352</entry><entry
1353 align="char">
1354<para>Equals VIDEO_FAST_FORWARD for this command.</para>
1355</entry>
1356 </row><row><entry
1357 align="char">
1358<para>int nFrames</para>
1359</entry><entry
1360 align="char">
1361<para>The number of frames to skip.</para>
1362</entry>
1363 </row></tbody></tgroup></informaltable>
1364&return-value-dvb;
1365<informaltable><tgroup cols="2"><tbody><row><entry
1366 align="char">
1367<para>EPERM</para>
1368</entry><entry
1369 align="char">
1370<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
1371</entry>
1372 </row></tbody></tgroup></informaltable>
1373
1374</section><section id="VIDEO_SLOWMOTION"
1375role="subsection"><title>VIDEO_SLOWMOTION</title>
1376<para>DESCRIPTION
1377</para>
1378<informaltable><tgroup cols="1"><tbody><row><entry
1379 align="char">
1380<para>This ioctl call asks the video device to repeat decoding frames N number of
1381 times. This call can only be used if VIDEO_SOURCE_MEMORY is selected.</para>
1382</entry>
1383 </row></tbody></tgroup></informaltable>
1384<para>SYNOPSIS
1385</para>
1386<informaltable><tgroup cols="1"><tbody><row><entry
1387 align="char">
1388<para>int ioctl(fd, int request = VIDEO_SLOWMOTION, int
1389 nFrames);</para>
1390</entry>
1391 </row></tbody></tgroup></informaltable>
1392<para>PARAMETERS
1393</para>
1394<informaltable><tgroup cols="2"><tbody><row><entry
1395 align="char">
1396<para>int fd</para>
1397</entry><entry
1398 align="char">
1399<para>File descriptor returned by a previous call to open().</para>
1400</entry>
1401 </row><row><entry
1402 align="char">
1403<para>int request</para>
1404</entry><entry
1405 align="char">
1406<para>Equals VIDEO_SLOWMOTION for this command.</para>
1407</entry>
1408 </row><row><entry
1409 align="char">
1410<para>int nFrames</para>
1411</entry><entry
1412 align="char">
1413<para>The number of times to repeat each frame.</para>
1414</entry>
1415 </row></tbody></tgroup></informaltable>
1416&return-value-dvb;
1417<informaltable><tgroup cols="2"><tbody><row><entry
1418 align="char">
1419<para>EPERM</para>
1420</entry><entry
1421 align="char">
1422<para>Mode VIDEO_SOURCE_MEMORY not selected.</para>
1423</entry>
1424 </row></tbody></tgroup></informaltable>
1425
1426</section><section id="VIDEO_GET_CAPABILITIES"
1427role="subsection"><title>VIDEO_GET_CAPABILITIES</title>
1428<para>DESCRIPTION
1429</para>
1430<informaltable><tgroup cols="1"><tbody><row><entry
1431 align="char">
1432<para>This ioctl call asks the video device about its decoding capabilities. On success
1433 it returns and integer which has bits set according to the defines in section ??.</para>
1434</entry>
1435 </row></tbody></tgroup></informaltable>
1436<para>SYNOPSIS
1437</para>
1438<informaltable><tgroup cols="1"><tbody><row><entry
1439 align="char">
1440<para>int ioctl(fd, int request = VIDEO_GET_CAPABILITIES,
1441 unsigned int &#x22C6;cap);</para>
1442</entry>
1443 </row></tbody></tgroup></informaltable>
1444<para>PARAMETERS
1445</para>
1446<informaltable><tgroup cols="2"><tbody><row><entry
1447 align="char">
1448<para>int fd</para>
1449</entry><entry
1450 align="char">
1451<para>File descriptor returned by a previous call to open().</para>
1452</entry>
1453 </row><row><entry
1454 align="char">
1455<para>int request</para>
1456</entry><entry
1457 align="char">
1458<para>Equals VIDEO_GET_CAPABILITIES for this
1459 command.</para>
1460</entry>
1461 </row><row><entry
1462 align="char">
1463<para>unsigned int *cap</para>
1464</entry><entry
1465 align="char">
1466<para>Pointer to a location where to store the capability
1467 information.</para>
1468</entry>
1469 </row></tbody></tgroup></informaltable>
1470&return-value-dvb;
1471
1472</section><section id="VIDEO_SET_ID"
1473role="subsection"><title>VIDEO_SET_ID</title>
1474<para>DESCRIPTION
1475</para>
1476<informaltable><tgroup cols="1"><tbody><row><entry
1477 align="char">
1478<para>This ioctl selects which sub-stream is to be decoded if a program or system
1479 stream is sent to the video device.</para>
1480</entry>
1481 </row></tbody></tgroup></informaltable>
1482<para>SYNOPSIS
1483</para>
1484<informaltable><tgroup cols="1"><tbody><row><entry
1485 align="char">
1486<para>int ioctl(int fd, int request = VIDEO_SET_ID, int
1487 id);</para>
1488</entry>
1489 </row></tbody></tgroup></informaltable>
1490<para>PARAMETERS
1491</para>
1492<informaltable><tgroup cols="2"><tbody><row><entry
1493 align="char">
1494<para>int fd</para>
1495</entry><entry
1496 align="char">
1497<para>File descriptor returned by a previous call to open().</para>
1498</entry>
1499 </row><row><entry
1500 align="char">
1501<para>int request</para>
1502</entry><entry
1503 align="char">
1504<para>Equals VIDEO_SET_ID for this command.</para>
1505</entry>
1506 </row><row><entry
1507 align="char">
1508<para>int id</para>
1509</entry><entry
1510 align="char">
1511<para>video sub-stream id</para>
1512</entry>
1513 </row></tbody></tgroup></informaltable>
1514&return-value-dvb;
1515<informaltable><tgroup cols="2"><tbody><row><entry
1516 align="char">
1517<para>EINVAL</para>
1518</entry><entry
1519 align="char">
1520<para>Invalid sub-stream id.</para>
1521</entry>
1522 </row></tbody></tgroup></informaltable>
1523
1524</section><section id="VIDEO_CLEAR_BUFFER"
1525role="subsection"><title>VIDEO_CLEAR_BUFFER</title>
1526<para>DESCRIPTION
1527</para>
1528<informaltable><tgroup cols="1"><tbody><row><entry
1529 align="char">
1530<para>This ioctl call clears all video buffers in the driver and in the decoder hardware.</para>
1531</entry>
1532 </row></tbody></tgroup></informaltable>
1533<para>SYNOPSIS
1534</para>
1535<informaltable><tgroup cols="1"><tbody><row><entry
1536 align="char">
1537<para>int ioctl(fd, int request = VIDEO_CLEAR_BUFFER);</para>
1538</entry>
1539 </row></tbody></tgroup></informaltable>
1540<para>PARAMETERS
1541</para>
1542<informaltable><tgroup cols="2"><tbody><row><entry
1543 align="char">
1544<para>int fd</para>
1545</entry><entry
1546 align="char">
1547<para>File descriptor returned by a previous call to open().</para>
1548</entry>
1549 </row><row><entry
1550 align="char">
1551<para>int request</para>
1552</entry><entry
1553 align="char">
1554<para>Equals VIDEO_CLEAR_BUFFER for this command.</para>
1555</entry>
1556 </row></tbody></tgroup></informaltable>
1557&return-value-dvb;
1558
1559</section><section id="VIDEO_SET_STREAMTYPE"
1560role="subsection"><title>VIDEO_SET_STREAMTYPE</title>
1561<para>DESCRIPTION
1562</para>
1563<informaltable><tgroup cols="1"><tbody><row><entry
1564 align="char">
1565<para>This ioctl tells the driver which kind of stream to expect being written to it. If
1566 this call is not used the default of video PES is used. Some drivers might not
1567 support this call and always expect PES.</para>
1568</entry>
1569 </row></tbody></tgroup></informaltable>
1570<para>SYNOPSIS
1571</para>
1572<informaltable><tgroup cols="1"><tbody><row><entry
1573 align="char">
1574<para>int ioctl(fd, int request = VIDEO_SET_STREAMTYPE,
1575 int type);</para>
1576</entry>
1577 </row></tbody></tgroup></informaltable>
1578<para>PARAMETERS
1579</para>
1580<informaltable><tgroup cols="2"><tbody><row><entry
1581 align="char">
1582<para>int fd</para>
1583</entry><entry
1584 align="char">
1585<para>File descriptor returned by a previous call to open().</para>
1586</entry>
1587 </row><row><entry
1588 align="char">
1589<para>int request</para>
1590</entry><entry
1591 align="char">
1592<para>Equals VIDEO_SET_STREAMTYPE for this command.</para>
1593</entry>
1594 </row><row><entry
1595 align="char">
1596<para>int type</para>
1597</entry><entry
1598 align="char">
1599<para>stream type</para>
1600</entry>
1601 </row></tbody></tgroup></informaltable>
1602&return-value-dvb;
1603
1604</section><section id="VIDEO_SET_FORMAT"
1605role="subsection"><title>VIDEO_SET_FORMAT</title>
1606<para>DESCRIPTION
1607</para>
1608<informaltable><tgroup cols="1"><tbody><row><entry
1609 align="char">
1610<para>This ioctl sets the screen format (aspect ratio) of the connected output device
1611 (TV) so that the output of the decoder can be adjusted accordingly.</para>
1612</entry>
1613 </row></tbody></tgroup></informaltable>
1614<para>SYNOPSIS
1615</para>
1616<informaltable><tgroup cols="1"><tbody><row><entry
1617 align="char">
1618<para> int ioctl(fd, int request = VIDEO_SET_FORMAT,
1619 video_format_t format);</para>
1620</entry>
1621 </row></tbody></tgroup></informaltable>
1622<para>PARAMETERS
1623</para>
1624<informaltable><tgroup cols="2"><tbody><row><entry
1625 align="char">
1626<para>int fd</para>
1627</entry><entry
1628 align="char">
1629<para>File descriptor returned by a previous call to open().</para>
1630</entry>
1631 </row><row><entry
1632 align="char">
1633<para>int request</para>
1634</entry><entry
1635 align="char">
1636<para>Equals VIDEO_SET_FORMAT for this command.</para>
1637</entry>
1638 </row><row><entry
1639 align="char">
1640<para>video_format_t
1641 format</para>
1642</entry><entry
1643 align="char">
1644<para>video format of TV as defined in section ??.</para>
1645</entry>
1646 </row></tbody></tgroup></informaltable>
1647&return-value-dvb;
1648<informaltable><tgroup cols="2"><tbody><row><entry
1649 align="char">
1650<para>EINVAL</para>
1651</entry><entry
1652 align="char">
1653<para>format is not a valid video format.</para>
1654</entry>
1655 </row></tbody></tgroup></informaltable>
1656
1657</section><section id="VIDEO_SET_SYSTEM"
1658role="subsection"><title>VIDEO_SET_SYSTEM</title>
1659<para>DESCRIPTION
1660</para>
1661<informaltable><tgroup cols="1"><tbody><row><entry
1662 align="char">
1663<para>This ioctl sets the television output format. The format (see section ??) may
1664 vary from the color format of the displayed MPEG stream. If the hardware is
1665 not able to display the requested format the call will return an error.</para>
1666</entry>
1667 </row></tbody></tgroup></informaltable>
1668<para>SYNOPSIS
1669</para>
1670<informaltable><tgroup cols="1"><tbody><row><entry
1671 align="char">
1672<para> int ioctl(fd, int request = VIDEO_SET_SYSTEM ,
1673 video_system_t system);</para>
1674</entry>
1675 </row></tbody></tgroup></informaltable>
1676<para>PARAMETERS
1677</para>
1678<informaltable><tgroup cols="2"><tbody><row><entry
1679 align="char">
1680<para>int fd</para>
1681</entry><entry
1682 align="char">
1683<para>File descriptor returned by a previous call to open().</para>
1684</entry>
1685 </row><row><entry
1686 align="char">
1687<para>int request</para>
1688</entry><entry
1689 align="char">
1690<para>Equals VIDEO_SET_FORMAT for this command.</para>
1691</entry>
1692 </row><row><entry
1693 align="char">
1694<para>video_system_t
1695 system</para>
1696</entry><entry
1697 align="char">
1698<para>video system of TV output.</para>
1699</entry>
1700 </row></tbody></tgroup></informaltable>
1701&return-value-dvb;
1702<informaltable><tgroup cols="2"><tbody><row><entry
1703 align="char">
1704<para>EINVAL</para>
1705</entry><entry
1706 align="char">
1707<para>system is not a valid or supported video system.</para>
1708</entry>
1709 </row></tbody></tgroup></informaltable>
1710
1711</section><section id="VIDEO_SET_HIGHLIGHT"
1712role="subsection"><title>VIDEO_SET_HIGHLIGHT</title>
1713<para>DESCRIPTION
1714</para>
1715<informaltable><tgroup cols="1"><tbody><row><entry
1716 align="char">
1717<para>This ioctl sets the SPU highlight information for the menu access of a DVD.</para>
1718</entry>
1719 </row></tbody></tgroup></informaltable>
1720<para>SYNOPSIS
1721</para>
1722<informaltable><tgroup cols="1"><tbody><row><entry
1723 align="char">
1724<para> int ioctl(fd, int request = VIDEO_SET_HIGHLIGHT
1725 ,video_highlight_t &#x22C6;vhilite)</para>
1726</entry>
1727 </row></tbody></tgroup></informaltable>
1728<para>PARAMETERS
1729</para>
1730<informaltable><tgroup cols="2"><tbody><row><entry
1731 align="char">
1732<para>int fd</para>
1733</entry><entry
1734 align="char">
1735<para>File descriptor returned by a previous call to open().</para>
1736</entry>
1737 </row><row><entry
1738 align="char">
1739<para>int request</para>
1740</entry><entry
1741 align="char">
1742<para>Equals VIDEO_SET_HIGHLIGHT for this command.</para>
1743</entry>
1744 </row><row><entry
1745 align="char">
1746<para>video_highlight_t
1747 *vhilite</para>
1748</entry><entry
1749 align="char">
1750<para>SPU Highlight information according to section ??.</para>
1751</entry>
1752 </row></tbody></tgroup></informaltable>
1753&return-value-dvb;
1754
1755</section><section id="VIDEO_SET_SPU"
1756role="subsection"><title>VIDEO_SET_SPU</title>
1757<para>DESCRIPTION
1758</para>
1759<informaltable><tgroup cols="1"><tbody><row><entry
1760 align="char">
1761<para>This ioctl activates or deactivates SPU decoding in a DVD input stream. It can
1762 only be used, if the driver is able to handle a DVD stream.</para>
1763</entry>
1764 </row></tbody></tgroup></informaltable>
1765<para>SYNOPSIS
1766</para>
1767<informaltable><tgroup cols="1"><tbody><row><entry
1768 align="char">
1769<para> int ioctl(fd, int request = VIDEO_SET_SPU ,
1770 video_spu_t &#x22C6;spu)</para>
1771</entry>
1772 </row></tbody></tgroup></informaltable>
1773<para>PARAMETERS
1774</para>
1775<informaltable><tgroup cols="2"><tbody><row><entry
1776 align="char">
1777<para>int fd</para>
1778</entry><entry
1779 align="char">
1780<para>File descriptor returned by a previous call to open().</para>
1781</entry>
1782 </row><row><entry
1783 align="char">
1784<para>int request</para>
1785</entry><entry
1786 align="char">
1787<para>Equals VIDEO_SET_SPU for this command.</para>
1788</entry>
1789 </row><row><entry
1790 align="char">
1791<para>video_spu_t *spu</para>
1792</entry><entry
1793 align="char">
1794<para>SPU decoding (de)activation and subid setting according
1795 to section ??.</para>
1796</entry>
1797 </row></tbody></tgroup></informaltable>
1798&return-value-dvb;
1799<informaltable><tgroup cols="2"><tbody><row><entry
1800 align="char">
1801<para>EINVAL</para>
1802</entry><entry
1803 align="char">
1804<para>input is not a valid spu setting or driver cannot handle
1805 SPU.</para>
1806</entry>
1807 </row></tbody></tgroup></informaltable>
1808
1809</section><section id="VIDEO_SET_SPU_PALETTE"
1810role="subsection"><title>VIDEO_SET_SPU_PALETTE</title>
1811<para>DESCRIPTION
1812</para>
1813<informaltable><tgroup cols="1"><tbody><row><entry
1814 align="char">
1815<para>This ioctl sets the SPU color palette.</para>
1816</entry>
1817 </row></tbody></tgroup></informaltable>
1818<para>SYNOPSIS
1819</para>
1820<informaltable><tgroup cols="1"><tbody><row><entry
1821 align="char">
1822<para> int ioctl(fd, int request = VIDEO_SET_SPU_PALETTE
1823 ,video_spu_palette_t &#x22C6;palette )</para>
1824</entry>
1825 </row></tbody></tgroup></informaltable>
1826<para>PARAMETERS
1827</para>
1828<informaltable><tgroup cols="2"><tbody><row><entry
1829 align="char">
1830<para>int fd</para>
1831</entry><entry
1832 align="char">
1833<para>File descriptor returned by a previous call to open().</para>
1834</entry>
1835 </row><row><entry
1836 align="char">
1837<para>int request</para>
1838</entry><entry
1839 align="char">
1840<para>Equals VIDEO_SET_SPU_PALETTE for this command.</para>
1841</entry>
1842 </row><row><entry
1843 align="char">
1844<para>video_spu_palette_t
1845 *palette</para>
1846</entry><entry
1847 align="char">
1848<para>SPU palette according to section ??.</para>
1849</entry>
1850 </row></tbody></tgroup></informaltable>
1851&return-value-dvb;
1852<informaltable><tgroup cols="2"><tbody><row><entry
1853 align="char">
1854<para>EINVAL</para>
1855</entry><entry
1856 align="char">
1857<para>input is not a valid palette or driver doesn&#8217;t handle SPU.</para>
1858</entry>
1859 </row></tbody></tgroup></informaltable>
1860
1861</section><section id="VIDEO_GET_NAVI"
1862role="subsection"><title>VIDEO_GET_NAVI</title>
1863<para>DESCRIPTION
1864</para>
1865<informaltable><tgroup cols="1"><tbody><row><entry
1866 align="char">
1867<para>This ioctl returns navigational information from the DVD stream. This is
1868 especially needed if an encoded stream has to be decoded by the hardware.</para>
1869</entry>
1870 </row></tbody></tgroup></informaltable>
1871<para>SYNOPSIS
1872</para>
1873<informaltable><tgroup cols="1"><tbody><row><entry
1874 align="char">
1875<para> int ioctl(fd, int request = VIDEO_GET_NAVI ,
1876 video_navi_pack_t &#x22C6;navipack)</para>
1877</entry>
1878 </row></tbody></tgroup></informaltable>
1879<para>PARAMETERS
1880</para>
1881<informaltable><tgroup cols="2"><tbody><row><entry
1882 align="char">
1883<para>int fd</para>
1884</entry><entry
1885 align="char">
1886<para>File descriptor returned by a previous call to open().</para>
1887</entry>
1888 </row><row><entry
1889 align="char">
1890<para>int request</para>
1891</entry><entry
1892 align="char">
1893<para>Equals VIDEO_GET_NAVI for this command.</para>
1894</entry>
1895 </row><row><entry
1896 align="char">
1897<para>video_navi_pack_t
1898 *navipack</para>
1899</entry><entry
1900 align="char">
1901<para>PCI or DSI pack (private stream 2) according to section
1902 ??.</para>
1903</entry>
1904 </row></tbody></tgroup></informaltable>
1905&return-value-dvb;
1906<informaltable><tgroup cols="2"><tbody><row><entry
1907 align="char">
1908<para>EFAULT</para>
1909</entry><entry
1910 align="char">
1911<para>driver is not able to return navigational information</para>
1912</entry>
1913 </row></tbody></tgroup></informaltable>
1914
1915</section><section id="VIDEO_SET_ATTRIBUTES"
1916role="subsection"><title>VIDEO_SET_ATTRIBUTES</title>
1917<para>DESCRIPTION
1918</para>
1919<informaltable><tgroup cols="1"><tbody><row><entry
1920 align="char">
1921<para>This ioctl is intended for DVD playback and allows you to set certain
1922 information about the stream. Some hardware may not need this information,
1923 but the call also tells the hardware to prepare for DVD playback.</para>
1924</entry>
1925 </row></tbody></tgroup></informaltable>
1926<para>SYNOPSIS
1927</para>
1928<informaltable><tgroup cols="1"><tbody><row><entry
1929 align="char">
1930<para> int ioctl(fd, int request = VIDEO_SET_ATTRIBUTE
1931 ,video_attributes_t vattr)</para>
1932</entry>
1933 </row></tbody></tgroup></informaltable>
1934<para>PARAMETERS
1935</para>
1936<informaltable><tgroup cols="2"><tbody><row><entry
1937 align="char">
1938<para>int fd</para>
1939</entry><entry
1940 align="char">
1941<para>File descriptor returned by a previous call to open().</para>
1942</entry>
1943 </row><row><entry
1944 align="char">
1945<para>int request</para>
1946</entry><entry
1947 align="char">
1948<para>Equals VIDEO_SET_ATTRIBUTE for this command.</para>
1949</entry>
1950 </row><row><entry
1951 align="char">
1952<para>video_attributes_t
1953 vattr</para>
1954</entry><entry
1955 align="char">
1956<para>video attributes according to section ??.</para>
1957</entry>
1958 </row></tbody></tgroup></informaltable>
1959&return-value-dvb;
1960<informaltable><tgroup cols="2"><tbody><row><entry
1961 align="char">
1962<para>EINVAL</para>
1963</entry><entry
1964 align="char">
1965<para>input is not a valid attribute setting.</para>
1966</entry>
1967 </row></tbody></tgroup></informaltable>
1968 </section></section>
diff --git a/Documentation/DocBook/media/dvbstb.png.b64 b/Documentation/DocBook/media/dvbstb.png.b64
deleted file mode 100644
index e8b52fde3d11..000000000000
--- a/Documentation/DocBook/media/dvbstb.png.b64
+++ /dev/null
@@ -1,398 +0,0 @@
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
deleted file mode 100644
index b5b557b88158..000000000000
--- a/Documentation/DocBook/media/fieldseq_bt.gif.b64
+++ /dev/null
@@ -1,447 +0,0 @@
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
447l3O5NwEBADs=
diff --git a/Documentation/DocBook/media/fieldseq_tb.gif.b64 b/Documentation/DocBook/media/fieldseq_tb.gif.b64
deleted file mode 100644
index 7b4c1766b407..000000000000
--- a/Documentation/DocBook/media/fieldseq_tb.gif.b64
+++ /dev/null
@@ -1,445 +0,0 @@
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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
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
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
deleted file mode 100644
index 083a7c85d107..000000000000
--- a/Documentation/DocBook/media/nv12mt.gif.b64
+++ /dev/null
@@ -1,37 +0,0 @@
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
deleted file mode 100644
index a512078c7f24..000000000000
--- a/Documentation/DocBook/media/nv12mt_example.gif.b64
+++ /dev/null
@@ -1,121 +0,0 @@
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
deleted file mode 100644
index 97d9ac007473..000000000000
--- a/Documentation/DocBook/media/pipeline.png.b64
+++ /dev/null
@@ -1,213 +0,0 @@
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/media/selection.png.b64 b/Documentation/DocBook/media/selection.png.b64
deleted file mode 100644
index 416186558cb2..000000000000
--- a/Documentation/DocBook/media/selection.png.b64
+++ /dev/null
@@ -1,206 +0,0 @@
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
177wiIAAAAAHn5oAgAAgLG1OKcKkI/KIgAAAAAehEUAAAAAPAiLAAAAAHgQFgEAAADwYIJrAAAAivq4
178frz9+7mJtre8/vm1SxN3z71ubl1bl5n6PUe2K3adW4/DWvsfPb5737PlmJrc/T2VRQAAABSzNHB/
179929bX3/W9u/ZzjO2/+gxOrrcrcve856alt8qlUUAAAAUsVb18zpoX3r9/d8+rh+L1Sdbq19itu91
180uXu28/73qapz9tiyjyWWneo9Z+xvb1QWAQAAkF3M7WGxAczSa3Pac9vbnu08M7RYu+3r8/b5eM3W
181dj/aFjmO8xnnUQuERQAAABSzNQhZen3Mv81VK6UOZPZu52i3Qe1p99zhmYqi79yGBgAAABFShjqf
182t88vy4sNsfZMon10H9fmYzozbMndHqMSFgEAANCleyBzDzS2VBWVmDfoXfVTrsqnFPv4/HevYRd9
183ERYBAABApBwhzlxodHRC59T7WGM4pIIoD2ERAAAAxWy9bWntaWdrnquL7v8dY2sIcXQ7n9d55oTd
184e7Z9yzHds2+520OF1HcmuAYAACC7mKdOzT1ZbG0enVqeHrZlO1sLKO5PQXv9s8WeY5b7ONdyHtVG
185ZREAAABFPM9zs6UqaOn1MQP8Ek/T2rOde+ZFamVC55T7lqo9SsxD1QuVRQAAABSz9RHzex9Jb7+O
186i7l1b8utc3uqkfa8p6blt+oyTdO0+U2XSwghhNvtpgUBgOyu12sIIYQd3RZKdix/9xGnRwdcXxEA
187zvbxux91+f3fMf0plUUAAAAAPJizCACA09yrxl7NVbBvef3za5cq4udeN7eurctM/Z4j2xW7ztT7
188eH/t2nGda//YZS7tz1q77DlmAL1SWQQAwCmWBvbv/m3r68/a/j3becb2x+5jDccixTLn9qXm9oc9
189Pq4fi38gRrHKopikvvQvG3vWs+fLxS8yfpEBAOb7DDH9taXX3//ter0u9pP29AvXtu91uXu2c6mP
190d6RftsWWdR89FiXsOWZ7zw+ojcmaSaFIZVGqXx5S/nqzd3v37r9fZAAA1sOGd3+/9votPz6msue2
191tz3bWWvgcsaxOLq81tof4EzZK4u2/mq05XVry1/7ZWPLLw4pvlBTbXcNHQS/yAAAOfoae19/u90W
192K5zvP3jN9V9S9lf2budaFXlpe6uacrRnquW11P4AZ8paWbT1V6PUy6/h1wO/yPjCBQD6kzNcWqrk
193fve61z9792duOTX05e7bkONHyL3tD9CzIreh5f6CWftlo9aORMntzn1Puy9XAKBmr2HDliqSEkHK
1947XYTWpx8fmh/gD9+1LhRZ06SfOQLodQEhEe+BN+VYKdc9mtbqCoCAHqVo5/zroJmy5QKqfclV9+x
195tr7snvYH6NmPkXe+9nCn1Q6T0AgAiO2LbekjrD3tLKav8lwtErvuPU/KPbKdc/2qVo5diW0+crtd
196D+0PkNtfNW7UvQz0tRz0zKdb7Nnu5+2v5YumxPbMlfECALz2tbY+DGTtCbO1PBxky3a21E86eiy2
197PiE4VT+9l/YHKKVIZdHR0s21JyDs/WWjhvmM/CIDAIzouX+3pSpo6fUxfbsSc2nu2c49fdaUUzds
198DWy27mOq45dif1K1P0DPslYWbf3VKPXya3uKQ6rt9osMANCDrQ/7qPmhJr3u17uK8b3bnGo/j94F
1990Op5BVDSZZqmafObLpdNH55rQcJrBcrWx83HLv/19ak+/Pc+Qn7rdqfc19flbA1+UuwLAGz9rt3R
200baFkx/J3H/F+lD59/wPA6T5+96Muv/87pj9VZM6iFGn93mXU8uQGv8gAAAAALShSWQQAcITKokY6
201liqLAKA6eyqLfmg2AADoj2kCANhLWAQAAB0SBgGwl7BohV9kAAAAgJEIi1YIgwAAAICRCIsAAMji
202Y6VCGwCo01+aAAAAAIA7lUUAACR10QQA0PZ3+TRN0+Y3XXQBAIDydnRbKNmx1EcEgC76UyqLAAAo
2031vkEAOq3KyzSEQAAAADokwmuAQAAAHgQFgEAAADwICwCAAAA4EFYBAAAAMCDsAgAAACAB2ERAAAA
204AA/CIgAAAAAehEUAAAAAPAiLAAAAAHgQFgEAAADwICwCAAAA4EFYBAAAAMCDsAgAAACAB2ERAAAA
205AA/CIgAAAAAehEUAAAAAPAiLAAAAAHgQFgEAAADwICwCAAAA4EFYBAAAAMCDsAgAAACAB2ERAAAA
206AA/CIgAAAAAe/g/10lQlA3JSSwAAAABJRU5ErkJggg==
diff --git a/Documentation/DocBook/media/typical_media_device.svg b/Documentation/DocBook/media/typical_media_device.svg
deleted file mode 100644
index f0c82f72c4b6..000000000000
--- a/Documentation/DocBook/media/typical_media_device.svg
+++ /dev/null
@@ -1,28 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg stroke-linejoin="round" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" clip-path="url(#a)" xml:space="preserve" fill-rule="evenodd" height="178.78mm" viewBox="0 0 24285.662 17877.829" width="251.99mm" version="1.2" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" preserveAspectRatio="xMidYMid" stroke-width="28.222"><defs><clipPath id="a" clipPathUnits="userSpaceOnUse"><rect y="0" x="0" width="28000" height="21000"/></clipPath></defs><g transform="matrix(1.004 0 0 1 -2185.6 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#fcf" d="m12231 4800c-516 0-1031 515-1031 1031v4124c0 516 515 1032 1031 1032h8538c516 0 1032-516 1032-1032v-4124c0-516-516-1031-1032-1031h-8538z"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#ffc" d="m3595 15607c-293 0-585 292-585 585v2340c0 293 292 586 585 586h3275c293 0 586-293 586-586v-2340c0-293-293-585-586-585h-3275z"/></g><g transform="translate(-2197.3 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#e6e6e6" d="m2663 2186c-461 0-922 461-922 922v11169c0 461 461 923 922 923h3692c461 0 922-462 922-923v-11169c0-461-461-922-922-922h-3692z"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4461 8602h-2260v-1086h4520v1086h-2260z"/><path fill="none" d="m4461 8602h-2260v-1086h4520v1086h-2260z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="8275" x="2579" class="TextPosition"><tspan fill="#000000">Audio decoder</tspan></tspan></tspan></text>
3</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4461 11772h-2260v-1270h4520v1270h-2260z"/><path fill="none" d="m4461 11772h-2260v-1270h4520v1270h-2260z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="11353" x="2617" class="TextPosition"><tspan fill="#000000">Video decoder</tspan></tspan></tspan></text>
4</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4453 10217h-2269v-1224h4537v1224h-2268z"/><path fill="none" d="m4453 10217h-2269v-1224h4537v1224h-2268z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="9821" x="2571" class="TextPosition"><tspan fill="#000000">Audio encoder</tspan></tspan></tspan></text>
5</g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.RectangleShape"><path fill="#cfc" d="m15711 12832h-3810v-1281h7620v1281h-3810z"/><path fill="none" d="m15711 12832h-3810v-1281h7620v1281h-3810z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="12407" x="12377" class="TextPosition"><tspan fill="#000000">Button Key/IR input logic</tspan></tspan></tspan></text>
6</g><g transform="translate(-2140.9 -2411.8)" class="com.sun.star.drawing.RectangleShape"><path fill="#cfe7f5" d="m14169 14572h-2268v-1412h4536v1412h-2268z"/><path fill="none" d="m14169 14572h-2268v-1412h4536v1412h-2268z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="14082" x="12882" class="TextPosition"><tspan fill="#000000">EEPROM</tspan></tspan></tspan></text>
7</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#fc9" d="m5140 17662h-1563v-1715h3126v1715h-1563z"/><path fill="none" d="m5140 17662h-1563v-1715h3126v1715h-1563z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="17020" x="4276" class="TextPosition"><tspan fill="#000000">Sensor</tspan></tspan></tspan></text>
8</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6719 8030 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z"/><path fill="none" d="m6719 8030 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6719 9612 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z"/><path fill="none" d="m6719 9612 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6721 11100 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m6721 11100 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2411.8)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 13854 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m9962 13854 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 12163 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m9962 12163 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 17158 670-353v176h2028v-176l671 353-671 354v-177h-2028v177l-670-354z"/><path fill="none" d="m9962 17158 670-353v176h2028v-176l671 353-671 354v-177h-2028v177l-670-354z" stroke="#3465af"/></g><g transform="matrix(0 .83339 -1.0005 0 30268 -5276.3)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m23229 12779 1009-978 1009 978h-505v2959h505l-1009 979-1009-979h504v-2959h-504z"/><path fill="none" d="m23229 12779 1009-978 1009 978h-505v2959h505l-1009 979-1009-979h504v-2959h-504z" stroke="#3465af"/></g><g transform="translate(-9973.6 -666.6)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="706px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="15832" x="24341" class="TextPosition" transform="matrix(0,-1,1,0,8509,40173)"><tspan fill="#000000">System Bus</tspan></tspan></tspan></text>
9</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#cff" d="m13151 9262h-1250v-875h2499v875h-1249z"/><path fill="none" d="m13151 9262h-1250v-875h2499v875h-1249z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="9040" x="12215" class="TextPosition"><tspan fill="#000000">Demux</tspan></tspan></tspan></text>
10</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9996 8765 373-357v178h1130v-178l374 357-374 358v-179h-1130v179l-373-358z"/><path fill="none" d="m9996 8765 373-357v178h1130v-178l374 357-374 358v-179h-1130v179l-373-358z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9996 7378 373-358v179h1130v-179l374 358-374 358v-179h-1130v179l-373-358z"/><path fill="none" d="m9996 7378 373-358v179h1130v-179l374 358-374 358v-179h-1130v179l-373-358z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#cff" d="m16322 7992h-4421v-1270h8841v1270h-4420z"/><path fill="none" d="m16322 7992h-4421v-1270h8841v1270h-4420z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="7573" x="12786" class="TextPosition"><tspan fill="#000000">Conditional Access Module</tspan></tspan></tspan></text>
11</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m4445 13287h-2269v-1224h4537v1224h-2268z"/><path fill="none" d="m4445 13287h-2269v-1224h4537v1224h-2268z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="12891" x="2601" class="TextPosition"><tspan fill="#000000">Video encoder</tspan></tspan></tspan></text>
12</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6721 12634 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m6721 12634 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m20791 7545 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m20791 7545 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2028 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="14478" x="1990" class="TextPosition"><tspan fill="#000000">Radio / Analog TV</tspan></tspan></tspan></text>
13</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="700" class="TextParagraph"><tspan y="10724" x="14956" class="TextPosition"><tspan fill="#000000">Digital TV</tspan></tspan></tspan></text>
14</g><g transform="translate(-8970.5 -1395.8)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="494px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="19167" x="14724" class="TextPosition"><tspan fill="#000000">PS.: picture is not complete: other blocks may be present</tspan></tspan></tspan></text>
15</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="18561" x="4199" class="TextPosition"><tspan fill="#000000">Webcam</tspan></tspan></tspan></text>
16</g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.RectangleShape"><path fill="#f90" d="m14552 16372h-2650v-1412h5299v1412h-2649z"/><path fill="none" d="m14552 16372h-2650v-1412h5299v1412h-2649z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="15882" x="12265" class="TextPosition"><tspan fill="#000000">Processing blocks</tspan></tspan></tspan></text>
17</g><g transform="translate(-2140.9 -2468.2)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9962 15654 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z"/><path fill="none" d="m9962 15654 385-353v176h1166v-176l386 353-386 354v-177h-1166v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6702 16954 397-353v176h1201v-176l398 353-398 354v-177h-1201v177l-397-354z"/><path fill="none" d="m6702 16954 397-353v176h1201v-176l398 353-398 354v-177h-1201v177l-397-354z" stroke="#3465af"/></g><g transform="translate(-2479.5 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="8792" x="22850" class="TextPosition"><tspan fill="#000000">Smartcard</tspan></tspan></tspan></text>
18</g><g transform="matrix(1.0048 0 0 1 -2207.4 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#fcf" d="m2766 2600c-333 0-666 333-666 666v2668c0 333 333 666 666 666h18368c333 0 667-333 667-666v-2668c0-333-334-666-667-666h-18368z"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#ff8080" d="m5121 5155h-1614v-1816h3227v1816h-1613z"/><path fill="none" d="m5121 5155h-1614v-1816h3227v1816h-1613z" stroke="#3465af"/><text font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextShape"><tspan class="TextParagraph"><tspan y="4111" x="4374" class="TextPosition"><tspan fill="#000000">Tuner</tspan></tspan></tspan><tspan class="TextParagraph"><tspan y="4814" x="4151" class="TextPosition"><tspan fill="#000000">FM/TV</tspan></tspan></tspan></text>
19</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#ff8080" d="m2902 3702c0 111 40 202 88 202h530c48 0 89-91 89-202 0-110-41-202-89-202h-530c-48 0-88 92-88 202z"/><path fill="none" d="m2902 3702c0 111 40 202 88 202h530c48 0 89-91 89-202 0-110-41-202-89-202h-530c-48 0-88 92-88 202z" stroke="#3465af"/><path fill="#ffb3b3" d="m2902 3702c0 111 40 202 88 202s88-91 88-202c0-110-40-202-88-202s-88 92-88 202z"/><path fill="none" d="m2902 3702c0 111 40 202 88 202s88-91 88-202c0-110-40-202-88-202s-88 92-88 202z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#ff8080" d="m2903 4267c0 110 40 202 88 202h530c48 0 89-92 89-202s-41-203-89-203h-530c-48 0-88 93-88 203z"/><path fill="none" d="m2903 4267c0 110 40 202 88 202h530c48 0 89-92 89-202s-41-203-89-203h-530c-48 0-88 93-88 203z" stroke="#3465af"/><path fill="#ffb3b3" d="m2903 4267c0 110 40 202 88 202s88-92 88-202-40-203-88-203-88 93-88 203z"/><path fill="none" d="m2903 4267c0 110 40 202 88 202s88-92 88-202-40-203-88-203-88 93-88 203z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m6719 4196 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z"/><path fill="none" d="m6719 4196 385-353v176h1167v-176l386 353-386 354v-177h-1167v177l-385-354z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9979 4150 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z"/><path fill="none" d="m9979 4150 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" stroke="#3465af"/></g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.RectangleShape"><path fill="#cff" d="m16500 6189h-4500v-1389h9e3v1389h-4500z"/><path fill="none" d="m16500 6189h-4500v-1389h9e3v1389h-4500z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="5710" x="12051" class="TextPosition"><tspan fill="#000000">Satellite Equipment Control (SEC)</tspan></tspan></tspan></text>
20</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#cff" d="m13400 4600h-1400v-1e3h2800v1e3h-1400z"/><path fill="none" d="m13400 4600h-1400v-1e3h2800v1e3h-1400z" stroke="#3465af"/><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="4316" x="12465" class="TextPosition"><tspan fill="#000000">Demod</tspan></tspan></tspan></text>
21</g><g transform="translate(-2140.9 -2186)" class="com.sun.star.drawing.CustomShape"><path fill="#729fcf" d="m9979 5451 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z"/><path fill="none" d="m9979 5451 402-368v184h1217v-184l403 368-403 369v-185h-1217v185l-402-369z" stroke="#3465af"/></g><path fill="#ff9" d="m7855.1 9099v7302h-1270v-14605h1270v7303z"/><path fill="none" d="m7855.1 9099v7302h-1270v-14605h1270v7303z" stroke="#3465af"/><text y="-6640.4663" x="-20770.572" transform="rotate(-90)" class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="7409.5396" x="-11193.634" class="TextPosition" transform="matrix(0,-1,1,0,-4473,23627)"><tspan fill="#000000">I2C Bus (control bus)</tspan></tspan></tspan></text>
22<g transform="translate(-2197.3 -2186)" class="com.sun.star.drawing.TextShape"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="3278" x="9391" class="TextPosition"><tspan fill="#000000">Digital TV Frontend</tspan></tspan></tspan></text>
23</g><g transform="matrix(1.015 0 0 .99994 -2233.3 -2185.7)" class="com.sun.star.drawing.CustomShape"><g stroke="#3465af" fill="none"><path d="m3e3 2800c-18 0-35 1-53 3"/><path d="m2915 2808c-17 3-35 7-52 12"/><path d="m2832 2830c-16 6-33 12-49 20"/><path d="m2754 2864c-15 8-31 17-46 27"/><path d="m2681 2909c-14 10-28 21-42 32"/><path d="m2614 2962c-13 12-26 24-38 37"/><path d="m2554 3023c-11 13-22 27-33 41"/><path d="m2502 3091c-10 14-19 29-28 45"/><path d="m2459 3164c-8 16-15 32-22 49"/><path d="m2426 3243c-5 17-10 34-14 51"/><path d="m2406 3326c-3 18-5 35-6 53"/><path d="m2400 3411v53"/><path d="m2400 3497v53"/><path d="m2400 3582v53"/><path d="m2400 3668v53"/><path d="m2400 3753v53"/><path d="m2400 3839v53"/><path d="m2400 3924v53"/><path d="m2400 4009v54"/><path d="m2400 4095v53"/><path d="m2400 4180v53"/><path d="m2400 4266v53"/><path d="m2400 4351v53"/><path d="m2400 4437v53"/><path d="m2400 4522v53"/><path d="m2400 4607v54"/><path d="m2400 4693v53"/><path d="m2400 4778v53"/><path d="m2400 4864v53"/><path d="m2400 4949v53"/><path d="m2400 5035v53"/><path d="m2400 5120v53"/><path d="m2400 5205v54"/><path d="m2400 5291v53"/><path d="m2400 5376v53"/><path d="m2400 5462v53"/><path d="m2400 5547v53"/><path d="m2400 5633v53"/><path d="m2400 5718v53"/><path d="m2400 5803c0 18 1 36 3 53"/><path d="m2408 5888c4 18 8 35 13 52"/><path d="m2431 5971c6 16 13 33 20 49"/><path d="m2466 6049c8 15 17 31 27 46"/><path d="m2511 6122c10 14 21 28 32 42"/><path d="m2564 6188c12 13 25 26 38 38"/><path d="m2626 6248c13 11 27 23 41 33"/><path d="m2694 6300c14 10 29 19 45 27"/><path d="m2768 6343c15 7 32 15 48 21"/><path d="m2847 6375c17 5 34 10 51 14"/><path d="m2930 6395c17 2 35 4 53 5"/><path d="m3015 6400h53"/><path d="m3100 6400h53"/><path d="m3186 6400h53"/><path d="m3271 6400h53"/><path d="m3357 6400h53"/><path d="m3442 6400h53"/><path d="m3527 6400h54"/><path d="m3613 6400h53"/><path d="m3698 6400h53"/><path d="m3784 6400h53"/><path d="m3869 6400h53"/><path d="m3955 6400h53"/><path d="m4040 6400h53"/><path d="m4125 6400h54"/><path d="m4211 6400h53"/><path d="m4296 6400h53"/><path d="m4382 6400h53"/><path d="m4467 6400h53"/><path d="m4553 6400h53"/><path d="m4638 6400h53"/><path d="m4723 6400h54"/><path d="m4809 6400h53"/><path d="m4894 6400h53"/><path d="m4980 6400h53"/><path d="m5065 6400h53"/><path d="m5151 6400h53"/><path d="m5236 6400h53"/><path d="m5322 6400h53"/><path d="m5407 6400h53"/><path d="m5492 6400h53"/><path d="m5578 6400h53"/><path d="m5663 6400h53"/><path d="m5749 6400h53"/><path d="m5834 6400h53"/><path d="m5920 6400h53"/><path d="m6005 6400h53"/><path d="m6090 6400h53"/><path d="m6176 6400h53"/><path d="m6261 6400h53"/><path d="m6347 6400h53"/><path d="m6432 6400h53"/><path d="m6518 6400h53"/><path d="m6603 6400h53"/><path d="m6688 6400h54"/><path d="m6774 6400h53"/><path d="m6859 6400h53"/><path d="m6945 6400h53"/><path d="m7030 6400h53"/><path d="m7116 6400h53"/><path d="m7201 6400h53"/><path d="m7286 6400h54"/><path d="m7372 6400h53"/><path d="m7457 6400h53"/><path d="m7543 6400h53"/><path d="m7628 6400h53"/><path d="m7714 6400h53"/><path d="m7799 6400h53"/><path d="m7884 6400h54"/><path d="m7970 6400h53"/><path d="m8055 6400h53"/><path d="m8141 6400h53"/><path d="m8226 6400h53"/><path d="m8312 6400h53"/><path d="m8397 6400h53"/><path d="m8482 6400h54"/><path d="m8568 6400h53"/><path d="m8653 6400h53"/><path d="m8739 6400h53"/><path d="m8824 6400h53"/><path d="m8910 6400h53"/><path d="m8995 6400h53"/><path d="m9081 6400h53"/><path d="m9166 6400h53"/><path d="m9251 6400h53"/><path d="m9337 6400h53"/><path d="m9422 6400h53"/><path d="m9508 6400h53"/><path d="m9593 6400h53"/><path d="m9679 6400h53"/><path d="m9764 6400h53"/><path d="m9849 6400h53"/><path d="m9935 6400h53"/><path d="m10020 6400h53"/><path d="m10106 6400h53"/><path d="m10191 6400h53"/><path d="m10277 6400h53"/><path d="m10362 6400h53"/><path d="m10447 6400h53"/><path d="m10533 6400h53"/><path d="m10618 6400h53"/><path d="m10704 6400h53"/><path d="m10789 6400h53"/><path d="m10875 6400h53"/><path d="m10960 6400h53"/><path d="m11045 6400h54"/><path d="m11131 6400h53"/><path d="m11216 6400h53"/><path d="m11302 6400h53"/><path d="m11387 6400h53"/><path d="m11473 6400h53"/><path d="m11558 6400h53"/><path d="m11643 6400h54"/><path d="m11729 6400h53"/><path d="m11814 6400h53"/><path d="m11900 6400h53"/><path d="m11985 6400h53"/><path d="m12071 6400h53"/><path d="m12156 6400h53"/><path d="m12241 6400h54"/><path d="m12327 6400h53"/><path d="m12412 6400h53"/><path d="m12498 6400h53"/><path d="m12583 6400h53"/><path d="m12669 6400h53"/><path d="m12754 6400h53"/><path d="m12839 6400h54"/><path d="m12925 6400h53"/><path d="m13010 6400h53"/><path d="m13096 6400h53"/><path d="m13181 6400h53"/><path d="m13267 6400h53"/><path d="m13352 6400h53"/><path d="m13438 6400h53"/><path d="m13523 6400h53"/><path d="m13608 6400h53"/><path d="m13694 6400h53"/><path d="m13779 6400h53"/><path d="m13865 6400h53"/><path d="m13950 6400h53"/><path d="m14036 6400h53"/><path d="m14121 6400h53"/><path d="m14206 6400h53"/><path d="m14292 6400h53"/><path d="m14377 6400h53"/><path d="m14463 6400h53"/><path d="m14548 6400h53"/><path d="m14634 6400h53"/><path d="m14719 6400h53"/><path d="m14804 6400h54"/><path d="m14890 6400h53"/><path d="m14975 6400h53"/><path d="m15061 6400h53"/><path d="m15146 6400h53"/><path d="m15232 6400h53"/><path d="m15317 6400h53"/><path d="m15402 6400h54"/><path d="m15488 6400h53"/><path d="m15573 6400h53"/><path d="m15659 6400h53"/><path d="m15744 6400h53"/><path d="m15830 6400h53"/><path d="m15915 6400h53"/><path d="m16000 6400h54"/><path d="m16086 6400h53"/><path d="m16171 6400h53"/><path d="m16257 6400h53"/><path d="m16342 6400h53"/><path d="m16428 6400h53"/><path d="m16513 6400h53"/><path d="m16598 6400h54"/><path d="m16684 6400h53"/><path d="m16769 6400h53"/><path d="m16855 6400h53"/><path d="m16940 6400h53"/><path d="m17026 6400h53"/><path d="m17111 6400h53"/><path d="m17196 6400h54"/><path d="m17282 6400h53"/><path d="m17367 6400h53"/><path d="m17453 6400h53"/><path d="m17538 6400h53"/><path d="m17624 6400h53"/><path d="m17709 6400h53"/><path d="m17795 6400h53"/><path d="m17880 6400h53"/><path d="m17965 6400h53"/><path d="m18051 6400h53"/><path d="m18136 6400h53"/><path d="m18222 6400h53"/><path d="m18307 6400h53"/><path d="m18393 6400h53"/><path d="m18478 6400h53"/><path d="m18563 6400h53"/><path d="m18649 6400h53"/><path d="m18734 6400h53"/><path d="m18820 6400h53"/><path d="m18905 6400h53"/><path d="m18991 6400h53"/><path d="m19076 6400h53"/><path d="m19161 6400h54"/><path d="m19247 6400h53"/><path d="m19332 6400h53"/><path d="m19418 6400h53"/><path d="m19503 6400h53"/><path d="m19589 6400h53"/><path d="m19674 6400h53"/><path d="m19759 6400h54"/><path d="m19845 6400h53"/><path d="m19930 6400h53"/><path d="m20016 6400h53"/><path d="m20101 6400h53"/><path d="m20187 6400h53"/><path d="m20272 6400h53"/><path d="m20357 6400h54"/><path d="m20443 6400h53"/><path d="m20528 6400h53"/><path d="m20614 6400c17-1 35-2 53-5"/><path d="m20699 6390c17-4 34-9 51-14"/><path d="m20781 6365c16-6 32-13 48-21"/><path d="m20858 6329c15-8 31-17 45-27"/><path d="m20930 6283c14-10 28-21 42-32"/><path d="m20996 6229c13-12 25-25 37-38"/><path d="m21055 6167c11-14 22-28 33-42"/><path d="m21106 6098c10-15 19-30 27-45"/><path d="m21148 6024c7-16 14-33 20-49"/><path d="m21179 5944c5-17 9-34 13-51"/><path d="m21197 5861c2-18 4-35 4-53"/><path d="m21201 5776v-54"/><path d="m21201 5690v-53"/><path d="m21201 5605v-53"/><path d="m21201 5519v-53"/><path d="m21201 5434v-53"/><path d="m21201 5348v-53"/><path d="m21201 5263v-53"/><path d="m21201 5178v-54"/><path d="m21201 5092v-53"/><path d="m21201 5007v-53"/><path d="m21201 4921v-53"/><path d="m21201 4836v-53"/><path d="m21201 4750v-53"/><path d="m21201 4665v-53"/><path d="m21201 4579v-53"/><path d="m21201 4494v-53"/><path d="m21201 4409v-53"/><path d="m21201 4323v-53"/><path d="m21201 4238v-53"/><path d="m21201 4152v-53"/><path d="m21201 4067v-53"/><path d="m21201 3981v-53"/><path d="m21201 3896v-53"/><path d="m21201 3811v-53"/><path d="m21201 3725v-53"/><path d="m21201 3640v-53"/><path d="m21201 3554v-53"/><path d="m21201 3469v-53"/><path d="m21201 3383c-1-17-3-35-5-52"/><path d="m21190 3299c-4-17-8-35-14-51"/><path d="m21165 3217c-6-16-13-33-21-49"/><path d="m21129 3140c-9-16-18-31-28-46"/><path d="m21082 3068c-10-14-21-28-33-42"/><path d="m21027 3002c-12-13-24-25-37-37"/><path d="m20965 2944c-14-12-28-22-42-33"/><path d="m20896 2893c-15-9-30-18-46-27"/><path d="m20821 2852c-16-8-32-14-49-20"/><path d="m20741 2821c-17-5-34-9-51-12"/><path d="m20658 2804c-18-3-35-4-53-4"/><path d="m20573 2800h-53"/><path d="m20487 2800h-53"/><path d="m20402 2800h-53"/><path d="m20316 2800h-53"/><path d="m20231 2800h-53"/><path d="m20146 2800h-54"/><path d="m20060 2800h-53"/><path d="m19975 2800h-53"/><path d="m19889 2800h-53"/><path d="m19804 2800h-53"/><path d="m19718 2800h-53"/><path d="m19633 2800h-53"/><path d="m19548 2800h-54"/><path d="m19462 2800h-53"/><path d="m19377 2800h-53"/><path d="m19291 2800h-53"/><path d="m19206 2800h-53"/><path d="m19120 2800h-53"/><path d="m19035 2800h-53"/><path d="m18950 2800h-54"/><path d="m18864 2800h-53"/><path d="m18779 2800h-53"/><path d="m18693 2800h-53"/><path d="m18608 2800h-53"/><path d="m18522 2800h-53"/><path d="m18437 2800h-53"/><path d="m18352 2800h-54"/><path d="m18266 2800h-53"/><path d="m18181 2800h-53"/><path d="m18095 2800h-53"/><path d="m18010 2800h-53"/><path d="m17924 2800h-53"/><path d="m17839 2800h-53"/><path d="m17753 2800h-53"/><path d="m17668 2800h-53"/><path d="m17583 2800h-53"/><path d="m17497 2800h-53"/><path d="m17412 2800h-53"/><path d="m17326 2800h-53"/><path d="m17241 2800h-53"/><path d="m17155 2800h-53"/><path d="m17070 2800h-53"/><path d="m16985 2800h-53"/><path d="m16899 2800h-53"/><path d="m16814 2800h-53"/><path d="m16728 2800h-53"/><path d="m16643 2800h-53"/><path d="m16557 2800h-53"/><path d="m16472 2800h-53"/><path d="m16387 2800h-54"/><path d="m16301 2800h-53"/><path d="m16216 2800h-53"/><path d="m16130 2800h-53"/><path d="m16045 2800h-53"/><path d="m15959 2800h-53"/><path d="m15874 2800h-53"/><path d="m15789 2800h-54"/><path d="m15703 2800h-53"/><path d="m15618 2800h-53"/><path d="m15532 2800h-53"/><path d="m15447 2800h-53"/><path d="m15361 2800h-53"/><path d="m15276 2800h-53"/><path d="m15191 2800h-54"/><path d="m15105 2800h-53"/><path d="m15020 2800h-53"/><path d="m14934 2800h-53"/><path d="m14849 2800h-53"/><path d="m14763 2800h-53"/><path d="m14678 2800h-53"/><path d="m14593 2800h-54"/><path d="m14507 2800h-53"/><path d="m14422 2800h-53"/><path d="m14336 2800h-53"/><path d="m14251 2800h-53"/><path d="m14165 2800h-53"/><path d="m14080 2800h-53"/><path d="m13994 2800h-53"/><path d="m13909 2800h-53"/><path d="m13824 2800h-53"/><path d="m13738 2800h-53"/><path d="m13653 2800h-53"/><path d="m13567 2800h-53"/><path d="m13482 2800h-53"/><path d="m13396 2800h-53"/><path d="m13311 2800h-53"/><path d="m13226 2800h-53"/><path d="m13140 2800h-53"/><path d="m13055 2800h-53"/><path d="m12969 2800h-53"/><path d="m12884 2800h-53"/><path d="m12798 2800h-53"/><path d="m12713 2800h-53"/><path d="m12628 2800h-53"/><path d="m12542 2800h-53"/><path d="m12457 2800h-53"/><path d="m12371 2800h-53"/><path d="m12286 2800h-53"/><path d="m12200 2800h-53"/><path d="m12115 2800h-53"/><path d="m12030 2800h-54"/><path d="m11944 2800h-53"/><path d="m11859 2800h-53"/><path d="m11773 2800h-53"/><path d="m11688 2800h-53"/><path d="m11602 2800h-53"/><path d="m11517 2800h-53"/><path d="m11432 2800h-54"/><path d="m11346 2800h-53"/><path d="m11261 2800h-53"/><path d="m11175 2800h-53"/><path d="m11090 2800h-53"/><path d="m11004 2800h-53"/><path d="m10919 2800h-53"/><path d="m10834 2800h-54"/><path d="m10748 2800h-53"/><path d="m10663 2800h-53"/><path d="m10577 2800h-53"/><path d="m10492 2800h-53"/><path d="m10406 2800h-53"/><path d="m10321 2800h-53"/><path d="m10236 2800h-54"/><path d="m10150 2800h-53"/><path d="m10065 2800h-53"/><path d="m9979 2800h-53"/><path d="m9894 2800h-53"/><path d="m9808 2800h-53"/><path d="m9723 2800h-53"/><path d="m9637 2800h-53"/><path d="m9552 2800h-53"/><path d="m9467 2800h-53"/><path d="m9381 2800h-53"/><path d="m9296 2800h-53"/><path d="m9210 2800h-53"/><path d="m9125 2800h-53"/><path d="m9039 2800h-53"/><path d="m8954 2800h-53"/><path d="m8869 2800h-53"/><path d="m8783 2800h-53"/><path d="m8698 2800h-53"/><path d="m8612 2800h-53"/><path d="m8527 2800h-53"/><path d="m8441 2800h-53"/><path d="m8356 2800h-53"/><path d="m8271 2800h-54"/><path d="m8185 2800h-53"/><path d="m8100 2800h-53"/><path d="m8014 2800h-53"/><path d="m7929 2800h-53"/><path d="m7843 2800h-53"/><path d="m7758 2800h-53"/><path d="m7673 2800h-54"/><path d="m7587 2800h-53"/><path d="m7502 2800h-53"/><path d="m7416 2800h-53"/><path d="m7331 2800h-53"/><path d="m7245 2800h-53"/><path d="m7160 2800h-53"/><path d="m7075 2800h-54"/><path d="m6989 2800h-53"/><path d="m6904 2800h-53"/><path d="m6818 2800h-53"/><path d="m6733 2800h-53"/><path d="m6647 2800h-53"/><path d="m6562 2800h-53"/><path d="m6477 2800h-54"/><path d="m6391 2800h-53"/><path d="m6306 2800h-53"/><path d="m6220 2800h-53"/><path d="m6135 2800h-53"/><path d="m6049 2800h-53"/><path d="m5964 2800h-53"/><path d="m5879 2800h-54"/><path d="m5793 2800h-53"/><path d="m5708 2800h-53"/><path d="m5622 2800h-53"/><path d="m5537 2800h-53"/><path d="m5451 2800h-53"/><path d="m5366 2800h-53"/><path d="m5280 2800h-53"/><path d="m5195 2800h-53"/><path d="m5110 2800h-53"/><path d="m5024 2800h-53"/><path d="m4939 2800h-53"/><path d="m4853 2800h-53"/><path d="m4768 2800h-53"/><path d="m4682 2800h-53"/><path d="m4597 2800h-53"/><path d="m4512 2800h-53"/><path d="m4426 2800h-53"/><path d="m4341 2800h-53"/><path d="m4255 2800h-53"/><path d="m4170 2800h-53"/><path d="m4084 2800h-53"/><path d="m3999 2800h-53"/><path d="m3914 2800h-54"/><path d="m3828 2800h-53"/><path d="m3743 2800h-53"/><path d="m3657 2800h-53"/><path d="m3572 2800h-53"/><path d="m3486 2800h-53"/><path d="m3401 2800h-53"/><path d="m3316 2800h-54"/><path d="m3230 2800h-53"/><path d="m3145 2800h-53"/><path d="m3059 2800h-53"/></g></g><g transform="translate(-2197.3 -2186)"><rect height="1100.7" width="1213.6" y="6917.1" x="23255" fill="#f3e777"/><path fill="#ca4677" d="m22802 7700.4v-405.46l150.7-169.16c82.886-93.039 170.53-186.62 194.77-207.96l44.069-38.798 783.23-0.086 783.23-0.086v613.5 613.5h-978-978v-405.46zm1027.7 136.98v-78.372l-169.91 4.925-169.91 4.9249-5.09 45.854c-8.249 74.303 46.711 101.04 207.69 101.04h137.21v-78.372zm235.86-262.94 4.495-341.31 207.2-8.6408 207.2-8.6408 5.144-46.443c9.596-86.615-41.863-102.05-322.02-96.607l-246.71 4.7956-4.438 419.08-4.439 419.08h74.537 74.538l4.494-341.31zm391.3 313.72c26.41-19.286 36.255-41.399 32.697-73.447l-5.09-45.854h-174.05-174.05l-5.38 48.984c-9.97 90.771 0.993 97.91 150.36 97.91 99.305 0 148.27-7.6982 175.52-27.594zm-627.16-274.84v-77.768h-174.05-174.05v66.246c0 36.436 4.973 71.431 11.051 77.768 6.078 6.3366 84.401 11.521 174.05 11.521h163v-77.768zm659.89-4.9154 5.125-74.042-179.18 4.9155-179.18 4.9155-5.38 48.984c-10.473 95.348-2.259 99.57 183.28 94.197l170.2-4.9284 5.125-74.042zm-659.89-237.63v-78.372l-169.91 4.925-169.91 4.925-5.097 73.447-5.097 73.447h175 175v-78.372zm659.86 4.925-5.097-73.447h-174.05-174.05l-5.38 48.984c-10.289 93.673-2.146 97.91 188.15 97.91h175.52l-5.097-73.447zm-659.86-228.98v-77.768h-137.21c-97.358 0-147.91 7.8138-174.05 26.902-34.952 25.523-49.645 92.242-25.79 117.11 6.078 6.3366 84.401 11.521 174.05 11.521h163v-77.768z"/></g><g transform="matrix(.84874 0 0 .76147 2408.1 3615.3)"><rect height="3076.2" width="2734.3" y="13264" x="19249" fill="#6076b3"/><g stroke-linejoin="round" fill-rule="evenodd" stroke-width="28.222" fill="#e0ee2c"><rect y="13369" width="356.65" x="18937" height="180.95"/><rect y="13708" width="356.65" x="18937" height="180.95"/><rect y="14048" width="356.65" x="18937" height="180.95"/><rect y="14387" width="356.65" x="18937" height="180.95"/><rect y="14726" width="356.65" x="18937" height="180.95"/><rect y="15066" width="356.65" x="18937" height="180.95"/><rect y="15405" width="356.65" x="18937" height="180.95"/><rect y="15744" width="356.65" x="18937" height="180.95"/><rect y="16083" width="356.65" x="18937" height="180.95"/><rect y="13324" width="356.65" x="21939" height="180.95"/><rect y="13663" width="356.65" x="21939" height="180.95"/><rect y="14002" width="356.65" x="21939" height="180.95"/><rect y="14342" width="356.65" x="21939" height="180.95"/><rect y="14681" width="356.65" x="21939" height="180.95"/><rect y="15020" width="356.65" x="21939" height="180.95"/><rect y="15360" width="356.65" x="21939" height="180.95"/><rect y="15699" width="356.65" x="21939" height="180.95"/><rect y="16038" width="356.65" x="21939" height="180.95"/></g><g stroke-linejoin="round" fill-rule="evenodd" transform="matrix(.98702 0 0 .90336 -2675 7020.8)" class="com.sun.star.drawing.TextShape" stroke-width="28.222"><text class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"/></text>
24<text style="word-spacing:0px;letter-spacing:0px" xml:space="preserve" font-size="1128.9px" y="9042.0264" x="22439.668" font-family="Sans" line-height="125%" fill="#000000"><tspan y="9042.0264" x="22439.668">CPU</tspan></text>
25</g></g><g stroke-linejoin="round" fill-rule="evenodd" transform="translate(-11752 543.6)" class="com.sun.star.drawing.TextShape" stroke-width="28.222"><text class="TextShape"><tspan font-size="706px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="15832" x="24341" class="TextPosition" transform="matrix(0,-1,1,0,8509,40173)"><tspan fill="#000000">PCI, USB, SPI, I2C, ...</tspan></tspan></tspan></text>
26</g><g stroke-linejoin="round" fill-rule="evenodd" transform="translate(-655.31 963.83)" class="com.sun.star.drawing.RectangleShape" stroke-width="28.222"><g transform="matrix(.49166 0 0 1.0059 6045.6 -82.24)"><path fill="#cfe7f5" d="m14169 14572h-2268v-1412h4536v1412h-2268z"/><path fill="none" d="m14169 14572h-2268v-1412h4536v1412h-2268z" stroke="#3465af"/></g><text y="-395.11282" x="-790.22229" class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="13686.9" x="12091.779" class="TextPosition"><tspan fill="#000000">Bridge</tspan></tspan></tspan></text>
27<text y="338.66486" x="-846.66675" class="TextShape"><tspan font-size="635px" font-family="&apos;Times New Roman&apos;, serif" font-weight="400" class="TextParagraph"><tspan y="14420.677" x="12035.335" class="TextPosition"><tspan fill="#000000"> DMA</tspan></tspan></tspan></text>
28</g></svg>
diff --git a/Documentation/DocBook/media/v4l/.gitignore b/Documentation/DocBook/media/v4l/.gitignore
deleted file mode 100644
index d7ec32eafac9..000000000000
--- a/Documentation/DocBook/media/v4l/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
1!*.xml
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
deleted file mode 100644
index 87f1d24958aa..000000000000
--- a/Documentation/DocBook/media/v4l/biblio.xml
+++ /dev/null
@@ -1,381 +0,0 @@
1 <bibliography>
2 <title>References</title>
3
4 <biblioentry id="cea608">
5 <abbrev>CEA&nbsp;608-E</abbrev>
6 <authorgroup>
7 <corpauthor>Consumer Electronics Association (<ulink
8url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
9 </authorgroup>
10 <title>CEA-608-E R-2014 "Line 21 Data Services"</title>
11 </biblioentry>
12
13 <biblioentry id="en300294">
14 <abbrev>EN&nbsp;300&nbsp;294</abbrev>
15 <authorgroup>
16 <corpauthor>European Telecommunication Standards Institute
17(<ulink url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor>
18 </authorgroup>
19 <title>EN 300 294 "625-line television Wide Screen Signalling
20(WSS)"</title>
21 </biblioentry>
22
23 <biblioentry id="ets300231">
24 <abbrev>ETS&nbsp;300&nbsp;231</abbrev>
25 <authorgroup>
26 <corpauthor>European Telecommunication Standards Institute
27(<ulink
28url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor>
29 </authorgroup>
30 <title>ETS 300 231 "Specification of the domestic video
31Programme Delivery Control system (PDC)"</title>
32 </biblioentry>
33
34 <biblioentry id="ets300706">
35 <abbrev>ETS&nbsp;300&nbsp;706</abbrev>
36 <authorgroup>
37 <corpauthor>European Telecommunication Standards Institute
38(<ulink url="http://www.etsi.org">http://www.etsi.org</ulink>)</corpauthor>
39 </authorgroup>
40 <title>ETS 300 706 "Enhanced Teletext specification"</title>
41 </biblioentry>
42
43 <biblioentry id="mpeg2part1">
44 <abbrev>ISO&nbsp;13818-1</abbrev>
45 <authorgroup>
46 <corpauthor>International Telecommunication Union (<ulink
47url="http://www.itu.ch">http://www.itu.ch</ulink>), International
48Organisation for Standardisation (<ulink
49url="http://www.iso.ch">http://www.iso.ch</ulink>)</corpauthor>
50 </authorgroup>
51 <title>ITU-T Rec. H.222.0 | ISO/IEC 13818-1 "Information
52technology &mdash; Generic coding of moving pictures and associated
53audio information: Systems"</title>
54 </biblioentry>
55
56 <biblioentry id="mpeg2part2">
57 <abbrev>ISO&nbsp;13818-2</abbrev>
58 <authorgroup>
59 <corpauthor>International Telecommunication Union (<ulink
60url="http://www.itu.ch">http://www.itu.ch</ulink>), International
61Organisation for Standardisation (<ulink
62url="http://www.iso.ch">http://www.iso.ch</ulink>)</corpauthor>
63 </authorgroup>
64 <title>ITU-T Rec. H.262 | ISO/IEC 13818-2 "Information
65technology &mdash; Generic coding of moving pictures and associated
66audio information: Video"</title>
67 </biblioentry>
68
69 <biblioentry id="itu470">
70 <abbrev>ITU&nbsp;BT.470</abbrev>
71 <authorgroup>
72 <corpauthor>International Telecommunication Union (<ulink
73url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
74 </authorgroup>
75 <title>ITU-R Recommendation BT.470-6 "Conventional Television
76Systems"</title>
77 </biblioentry>
78
79 <biblioentry id="itu601">
80 <abbrev>ITU&nbsp;BT.601</abbrev>
81 <authorgroup>
82 <corpauthor>International Telecommunication Union (<ulink
83url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
84 </authorgroup>
85 <title>ITU-R Recommendation BT.601-5 "Studio Encoding Parameters
86of Digital Television for Standard 4:3 and Wide-Screen 16:9 Aspect
87Ratios"</title>
88 </biblioentry>
89
90 <biblioentry id="itu653">
91 <abbrev>ITU&nbsp;BT.653</abbrev>
92 <authorgroup>
93 <corpauthor>International Telecommunication Union (<ulink
94url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
95 </authorgroup>
96 <title>ITU-R Recommendation BT.653-3 "Teletext systems"</title>
97 </biblioentry>
98
99 <biblioentry id="itu709">
100 <abbrev>ITU&nbsp;BT.709</abbrev>
101 <authorgroup>
102 <corpauthor>International Telecommunication Union (<ulink
103url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
104 </authorgroup>
105 <title>ITU-R Recommendation BT.709-5 "Parameter values for the
106HDTV standards for production and international programme
107exchange"</title>
108 </biblioentry>
109
110 <biblioentry id="itu1119">
111 <abbrev>ITU&nbsp;BT.1119</abbrev>
112 <authorgroup>
113 <corpauthor>International Telecommunication Union (<ulink
114url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
115 </authorgroup>
116 <title>ITU-R Recommendation BT.1119 "625-line
117television Wide Screen Signalling (WSS)"</title>
118 </biblioentry>
119
120 <biblioentry id="jfif">
121 <abbrev>JFIF</abbrev>
122 <authorgroup>
123 <corpauthor>Independent JPEG Group (<ulink
124url="http://www.ijg.org">http://www.ijg.org</ulink>)</corpauthor>
125 </authorgroup>
126 <title>JPEG File Interchange Format</title>
127 <subtitle>Version 1.02</subtitle>
128 </biblioentry>
129
130 <biblioentry id="itu-t81">
131 <abbrev>ITU-T.81</abbrev>
132 <authorgroup>
133 <corpauthor>International Telecommunication Union
134(<ulink url="http://www.itu.int">http://www.itu.int</ulink>)</corpauthor>
135 </authorgroup>
136 <title>ITU-T Recommendation T.81
137"Information Technology &mdash; Digital Compression and Coding of Continous-Tone
138Still Images &mdash; Requirements and Guidelines"</title>
139 </biblioentry>
140
141 <biblioentry id="w3c-jpeg-jfif">
142 <abbrev>W3C JPEG JFIF</abbrev>
143 <authorgroup>
144 <corpauthor>The World Wide Web Consortium (<ulink
145url="http://www.w3.org/Graphics/JPEG">http://www.w3.org</ulink>)</corpauthor>
146 </authorgroup>
147 <title>JPEG JFIF</title>
148 </biblioentry>
149
150 <biblioentry id="smpte12m">
151 <abbrev>SMPTE&nbsp;12M</abbrev>
152 <authorgroup>
153 <corpauthor>Society of Motion Picture and Television Engineers
154(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
155 </authorgroup>
156 <title>SMPTE 12M-1999 "Television, Audio and Film - Time and
157Control Code"</title>
158 </biblioentry>
159
160 <biblioentry id="smpte170m">
161 <abbrev>SMPTE&nbsp;170M</abbrev>
162 <authorgroup>
163 <corpauthor>Society of Motion Picture and Television Engineers
164(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
165 </authorgroup>
166 <title>SMPTE 170M-1999 "Television - Composite Analog Video
167Signal - NTSC for Studio Applications"</title>
168 </biblioentry>
169
170 <biblioentry id="smpte240m">
171 <abbrev>SMPTE&nbsp;240M</abbrev>
172 <authorgroup>
173 <corpauthor>Society of Motion Picture and Television Engineers
174(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
175 </authorgroup>
176 <title>SMPTE 240M-1999 "Television - Signal Parameters -
1771125-Line High-Definition Production"</title>
178 </biblioentry>
179
180 <biblioentry id="smpte431">
181 <abbrev>SMPTE&nbsp;RP&nbsp;431-2</abbrev>
182 <authorgroup>
183 <corpauthor>Society of Motion Picture and Television Engineers
184(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
185 </authorgroup>
186 <title>SMPTE RP 431-2:2011 "D-Cinema Quality - Reference Projector and Environment"</title>
187 </biblioentry>
188
189 <biblioentry id="smpte2084">
190 <abbrev>SMPTE&nbsp;ST&nbsp;2084</abbrev>
191 <authorgroup>
192 <corpauthor>Society of Motion Picture and Television Engineers
193(<ulink url="http://www.smpte.org">http://www.smpte.org</ulink>)</corpauthor>
194 </authorgroup>
195 <title>SMPTE ST 2084:2014 "High Dynamic Range Electro-Optical Transfer Function of Master Reference Displays"</title>
196 </biblioentry>
197
198 <biblioentry id="srgb">
199 <abbrev>sRGB</abbrev>
200 <authorgroup>
201 <corpauthor>International Electrotechnical Commission
202(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
203 </authorgroup>
204 <title>IEC 61966-2-1 ed1.0 "Multimedia systems and equipment - Colour measurement
205and management - Part 2-1: Colour management - Default RGB colour space - sRGB"</title>
206 </biblioentry>
207
208 <biblioentry id="sycc">
209 <abbrev>sYCC</abbrev>
210 <authorgroup>
211 <corpauthor>International Electrotechnical Commission
212(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
213 </authorgroup>
214 <title>IEC 61966-2-1-am1 ed1.0 "Amendment 1 - Multimedia systems and equipment - Colour measurement
215and management - Part 2-1: Colour management - Default RGB colour space - sRGB"</title>
216 </biblioentry>
217
218 <biblioentry id="xvycc">
219 <abbrev>xvYCC</abbrev>
220 <authorgroup>
221 <corpauthor>International Electrotechnical Commission
222(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
223 </authorgroup>
224 <title>IEC 61966-2-4 ed1.0 "Multimedia systems and equipment - Colour measurement
225and management - Part 2-4: Colour management - Extended-gamut YCC colour space for video
226applications - xvYCC"</title>
227 </biblioentry>
228
229 <biblioentry id="adobergb">
230 <abbrev>AdobeRGB</abbrev>
231 <authorgroup>
232 <corpauthor>Adobe Systems Incorporated (<ulink url="http://www.adobe.com">http://www.adobe.com</ulink>)</corpauthor>
233 </authorgroup>
234 <title>Adobe&copy; RGB (1998) Color Image Encoding Version 2005-05</title>
235 </biblioentry>
236
237 <biblioentry id="oprgb">
238 <abbrev>opRGB</abbrev>
239 <authorgroup>
240 <corpauthor>International Electrotechnical Commission
241(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
242 </authorgroup>
243 <title>IEC 61966-2-5 "Multimedia systems and equipment - Colour measurement
244and management - Part 2-5: Colour management - Optional RGB colour space - opRGB"</title>
245 </biblioentry>
246
247 <biblioentry id="itu2020">
248 <abbrev>ITU&nbsp;BT.2020</abbrev>
249 <authorgroup>
250 <corpauthor>International Telecommunication Union (<ulink
251url="http://www.itu.ch">http://www.itu.ch</ulink>)</corpauthor>
252 </authorgroup>
253 <title>ITU-R Recommendation BT.2020 (08/2012) "Parameter values for ultra-high
254definition television systems for production and international programme exchange"
255</title>
256 </biblioentry>
257
258 <biblioentry id="tech3213">
259 <abbrev>EBU&nbsp;Tech&nbsp;3213</abbrev>
260 <authorgroup>
261 <corpauthor>European Broadcast Union (<ulink
262url="http://www.ebu.ch">http://www.ebu.ch</ulink>)</corpauthor>
263 </authorgroup>
264 <title>E.B.U. Standard for Chromaticity Tolerances for Studio Monitors"</title>
265 </biblioentry>
266
267 <biblioentry id="iec62106">
268 <abbrev>IEC&nbsp;62106</abbrev>
269 <authorgroup>
270 <corpauthor>International Electrotechnical Commission
271(<ulink url="http://www.iec.ch">http://www.iec.ch</ulink>)</corpauthor>
272 </authorgroup>
273 <title>Specification of the radio data system (RDS) for VHF/FM sound broadcasting
274in the frequency range from 87,5 to 108,0 MHz</title>
275 </biblioentry>
276
277 <biblioentry id="nrsc4">
278 <abbrev>NRSC-4-B</abbrev>
279 <authorgroup>
280 <corpauthor>National Radio Systems Committee
281(<ulink url="http://www.nrscstandards.org">http://www.nrscstandards.org</ulink>)</corpauthor>
282 </authorgroup>
283 <title>NRSC-4-B: United States RBDS Standard</title>
284 </biblioentry>
285
286 <biblioentry id="iso12232">
287 <abbrev>ISO&nbsp;12232:2006</abbrev>
288 <authorgroup>
289 <corpauthor>International Organization for Standardization
290(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
291 </authorgroup>
292 <title>Photography &mdash; Digital still cameras &mdash; Determination
293 of exposure index, ISO speed ratings, standard output sensitivity, and
294 recommended exposure index</title>
295 </biblioentry>
296
297 <biblioentry id="cea861">
298 <abbrev>CEA-861-E</abbrev>
299 <authorgroup>
300 <corpauthor>Consumer Electronics Association
301(<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
302 </authorgroup>
303 <title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title>
304 </biblioentry>
305
306 <biblioentry id="vesadmt">
307 <abbrev>VESA&nbsp;DMT</abbrev>
308 <authorgroup>
309 <corpauthor>Video Electronics Standards Association
310(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
311 </authorgroup>
312 <title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title>
313 </biblioentry>
314
315 <biblioentry id="vesaedid">
316 <abbrev>EDID</abbrev>
317 <authorgroup>
318 <corpauthor>Video Electronics Standards Association
319(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
320 </authorgroup>
321 <title>VESA Enhanced Extended Display Identification Data Standard</title>
322 <subtitle>Release A, Revision 2</subtitle>
323 </biblioentry>
324
325 <biblioentry id="hdcp">
326 <abbrev>HDCP</abbrev>
327 <authorgroup>
328 <corpauthor>Digital Content Protection LLC
329(<ulink url="http://www.digital-cp.com">http://www.digital-cp.com</ulink>)</corpauthor>
330 </authorgroup>
331 <title>High-bandwidth Digital Content Protection System</title>
332 <subtitle>Revision 1.3</subtitle>
333 </biblioentry>
334
335 <biblioentry id="hdmi">
336 <abbrev>HDMI</abbrev>
337 <authorgroup>
338 <corpauthor>HDMI Licensing LLC
339(<ulink url="http://www.hdmi.org">http://www.hdmi.org</ulink>)</corpauthor>
340 </authorgroup>
341 <title>High-Definition Multimedia Interface</title>
342 <subtitle>Specification Version 1.4a</subtitle>
343 </biblioentry>
344
345 <biblioentry id="hdmi2">
346 <abbrev>HDMI2</abbrev>
347 <authorgroup>
348 <corpauthor>HDMI Licensing LLC
349(<ulink url="http://www.hdmi.org">http://www.hdmi.org</ulink>)</corpauthor>
350 </authorgroup>
351 <title>High-Definition Multimedia Interface</title>
352 <subtitle>Specification Version 2.0</subtitle>
353 </biblioentry>
354
355 <biblioentry id="dp">
356 <abbrev>DP</abbrev>
357 <authorgroup>
358 <corpauthor>Video Electronics Standards Association
359(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
360 </authorgroup>
361 <title>VESA DisplayPort Standard</title>
362 <subtitle>Version 1, Revision 2</subtitle>
363 </biblioentry>
364
365 <biblioentry id="poynton">
366 <abbrev>poynton</abbrev>
367 <authorgroup>
368 <corpauthor>Charles Poynton</corpauthor>
369 </authorgroup>
370 <title>Digital Video and HDTV, Algorithms and Interfaces</title>
371 </biblioentry>
372
373 <biblioentry id="colimg">
374 <abbrev>colimg</abbrev>
375 <authorgroup>
376 <corpauthor>Erik Reinhard et al.</corpauthor>
377 </authorgroup>
378 <title>Color Imaging: Fundamentals and Applications</title>
379 </biblioentry>
380
381 </bibliography>
diff --git a/Documentation/DocBook/media/v4l/capture.c.xml b/Documentation/DocBook/media/v4l/capture.c.xml
deleted file mode 100644
index 22126a991b34..000000000000
--- a/Documentation/DocBook/media/v4l/capture.c.xml
+++ /dev/null
@@ -1,659 +0,0 @@
1<programlisting>
2/*
3 * V4L2 video capture example
4 *
5 * This program can be used and distributed without restrictions.
6 *
7 * This program is provided with the V4L2 API
8 * see https://linuxtv.org/docs.php for more information
9 */
10
11#include &lt;stdio.h&gt;
12#include &lt;stdlib.h&gt;
13#include &lt;string.h&gt;
14#include &lt;assert.h&gt;
15
16#include &lt;getopt.h&gt; /* getopt_long() */
17
18#include &lt;fcntl.h&gt; /* low-level i/o */
19#include &lt;unistd.h&gt;
20#include &lt;errno.h&gt;
21#include &lt;sys/stat.h&gt;
22#include &lt;sys/types.h&gt;
23#include &lt;sys/time.h&gt;
24#include &lt;sys/mman.h&gt;
25#include &lt;sys/ioctl.h&gt;
26
27#include &lt;linux/videodev2.h&gt;
28
29#define CLEAR(x) memset(&amp;(x), 0, sizeof(x))
30
31enum io_method {
32 IO_METHOD_READ,
33 IO_METHOD_MMAP,
34 IO_METHOD_USERPTR,
35};
36
37struct buffer {
38 void *start;
39 size_t length;
40};
41
42static char *dev_name;
43static enum io_method io = IO_METHOD_MMAP;
44static int fd = -1;
45struct buffer *buffers;
46static unsigned int n_buffers;
47static int out_buf;
48static int force_format;
49static int frame_count = 70;
50
51static void errno_exit(const char *s)
52{
53 fprintf(stderr, "%s error %d, %s\n", s, errno, strerror(errno));
54 exit(EXIT_FAILURE);
55}
56
57static int xioctl(int fh, int request, void *arg)
58{
59 int r;
60
61 do {
62 r = ioctl(fh, request, arg);
63 } while (-1 == r &amp;&amp; EINTR == errno);
64
65 return r;
66}
67
68static void process_image(const void *p, int size)
69{
70 if (out_buf)
71 fwrite(p, size, 1, stdout);
72
73 fflush(stderr);
74 fprintf(stderr, ".");
75 fflush(stdout);
76}
77
78static int read_frame(void)
79{
80 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
81 unsigned int i;
82
83 switch (io) {
84 case IO_METHOD_READ:
85 if (-1 == read(fd, buffers[0].start, buffers[0].length)) {
86 switch (errno) {
87 case EAGAIN:
88 return 0;
89
90 case EIO:
91 /* Could ignore EIO, see spec. */
92
93 /* fall through */
94
95 default:
96 errno_exit("read");
97 }
98 }
99
100 process_image(buffers[0].start, buffers[0].length);
101 break;
102
103 case IO_METHOD_MMAP:
104 CLEAR(buf);
105
106 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
107 buf.memory = V4L2_MEMORY_MMAP;
108
109 if (-1 == xioctl(fd, VIDIOC_DQBUF, &amp;buf)) {
110 switch (errno) {
111 case EAGAIN:
112 return 0;
113
114 case EIO:
115 /* Could ignore EIO, see spec. */
116
117 /* fall through */
118
119 default:
120 errno_exit("VIDIOC_DQBUF");
121 }
122 }
123
124 assert(buf.index &lt; n_buffers);
125
126 process_image(buffers[buf.index].start, buf.bytesused);
127
128 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
129 errno_exit("VIDIOC_QBUF");
130 break;
131
132 case IO_METHOD_USERPTR:
133 CLEAR(buf);
134
135 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
136 buf.memory = V4L2_MEMORY_USERPTR;
137
138 if (-1 == xioctl(fd, VIDIOC_DQBUF, &amp;buf)) {
139 switch (errno) {
140 case EAGAIN:
141 return 0;
142
143 case EIO:
144 /* Could ignore EIO, see spec. */
145
146 /* fall through */
147
148 default:
149 errno_exit("VIDIOC_DQBUF");
150 }
151 }
152
153 for (i = 0; i &lt; n_buffers; ++i)
154 if (buf.m.userptr == (unsigned long)buffers[i].start
155 &amp;&amp; buf.length == buffers[i].length)
156 break;
157
158 assert(i &lt; n_buffers);
159
160 process_image((void *)buf.m.userptr, buf.bytesused);
161
162 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
163 errno_exit("VIDIOC_QBUF");
164 break;
165 }
166
167 return 1;
168}
169
170static void mainloop(void)
171{
172 unsigned int count;
173
174 count = frame_count;
175
176 while (count-- &gt; 0) {
177 for (;;) {
178 fd_set fds;
179 struct timeval tv;
180 int r;
181
182 FD_ZERO(&amp;fds);
183 FD_SET(fd, &amp;fds);
184
185 /* Timeout. */
186 tv.tv_sec = 2;
187 tv.tv_usec = 0;
188
189 r = select(fd + 1, &amp;fds, NULL, NULL, &amp;tv);
190
191 if (-1 == r) {
192 if (EINTR == errno)
193 continue;
194 errno_exit("select");
195 }
196
197 if (0 == r) {
198 fprintf(stderr, "select timeout\n");
199 exit(EXIT_FAILURE);
200 }
201
202 if (read_frame())
203 break;
204 /* EAGAIN - continue select loop. */
205 }
206 }
207}
208
209static void stop_capturing(void)
210{
211 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
212
213 switch (io) {
214 case IO_METHOD_READ:
215 /* Nothing to do. */
216 break;
217
218 case IO_METHOD_MMAP:
219 case IO_METHOD_USERPTR:
220 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
221 if (-1 == xioctl(fd, VIDIOC_STREAMOFF, &amp;type))
222 errno_exit("VIDIOC_STREAMOFF");
223 break;
224 }
225}
226
227static void start_capturing(void)
228{
229 unsigned int i;
230 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
231
232 switch (io) {
233 case IO_METHOD_READ:
234 /* Nothing to do. */
235 break;
236
237 case IO_METHOD_MMAP:
238 for (i = 0; i &lt; n_buffers; ++i) {
239 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
240
241 CLEAR(buf);
242 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
243 buf.memory = V4L2_MEMORY_MMAP;
244 buf.index = i;
245
246 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
247 errno_exit("VIDIOC_QBUF");
248 }
249 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
250 if (-1 == xioctl(fd, VIDIOC_STREAMON, &amp;type))
251 errno_exit("VIDIOC_STREAMON");
252 break;
253
254 case IO_METHOD_USERPTR:
255 for (i = 0; i &lt; n_buffers; ++i) {
256 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
257
258 CLEAR(buf);
259 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
260 buf.memory = V4L2_MEMORY_USERPTR;
261 buf.index = i;
262 buf.m.userptr = (unsigned long)buffers[i].start;
263 buf.length = buffers[i].length;
264
265 if (-1 == xioctl(fd, VIDIOC_QBUF, &amp;buf))
266 errno_exit("VIDIOC_QBUF");
267 }
268 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
269 if (-1 == xioctl(fd, VIDIOC_STREAMON, &amp;type))
270 errno_exit("VIDIOC_STREAMON");
271 break;
272 }
273}
274
275static void uninit_device(void)
276{
277 unsigned int i;
278
279 switch (io) {
280 case IO_METHOD_READ:
281 free(buffers[0].start);
282 break;
283
284 case IO_METHOD_MMAP:
285 for (i = 0; i &lt; n_buffers; ++i)
286 if (-1 == munmap(buffers[i].start, buffers[i].length))
287 errno_exit("munmap");
288 break;
289
290 case IO_METHOD_USERPTR:
291 for (i = 0; i &lt; n_buffers; ++i)
292 free(buffers[i].start);
293 break;
294 }
295
296 free(buffers);
297}
298
299static void init_read(unsigned int buffer_size)
300{
301 buffers = calloc(1, sizeof(*buffers));
302
303 if (!buffers) {
304 fprintf(stderr, "Out of memory\n");
305 exit(EXIT_FAILURE);
306 }
307
308 buffers[0].length = buffer_size;
309 buffers[0].start = malloc(buffer_size);
310
311 if (!buffers[0].start) {
312 fprintf(stderr, "Out of memory\n");
313 exit(EXIT_FAILURE);
314 }
315}
316
317static void init_mmap(void)
318{
319 struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req;
320
321 CLEAR(req);
322
323 req.count = 4;
324 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
325 req.memory = V4L2_MEMORY_MMAP;
326
327 if (-1 == xioctl(fd, VIDIOC_REQBUFS, &amp;req)) {
328 if (EINVAL == errno) {
329 fprintf(stderr, "%s does not support "
330 "memory mapping\n", dev_name);
331 exit(EXIT_FAILURE);
332 } else {
333 errno_exit("VIDIOC_REQBUFS");
334 }
335 }
336
337 if (req.count &lt; 2) {
338 fprintf(stderr, "Insufficient buffer memory on %s\n",
339 dev_name);
340 exit(EXIT_FAILURE);
341 }
342
343 buffers = calloc(req.count, sizeof(*buffers));
344
345 if (!buffers) {
346 fprintf(stderr, "Out of memory\n");
347 exit(EXIT_FAILURE);
348 }
349
350 for (n_buffers = 0; n_buffers &lt; req.count; ++n_buffers) {
351 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
352
353 CLEAR(buf);
354
355 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
356 buf.memory = V4L2_MEMORY_MMAP;
357 buf.index = n_buffers;
358
359 if (-1 == xioctl(fd, VIDIOC_QUERYBUF, &amp;buf))
360 errno_exit("VIDIOC_QUERYBUF");
361
362 buffers[n_buffers].length = buf.length;
363 buffers[n_buffers].start =
364 mmap(NULL /* start anywhere */,
365 buf.length,
366 PROT_READ | PROT_WRITE /* required */,
367 MAP_SHARED /* recommended */,
368 fd, buf.m.offset);
369
370 if (MAP_FAILED == buffers[n_buffers].start)
371 errno_exit("mmap");
372 }
373}
374
375static void init_userp(unsigned int buffer_size)
376{
377 struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req;
378
379 CLEAR(req);
380
381 req.count = 4;
382 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
383 req.memory = V4L2_MEMORY_USERPTR;
384
385 if (-1 == xioctl(fd, VIDIOC_REQBUFS, &amp;req)) {
386 if (EINVAL == errno) {
387 fprintf(stderr, "%s does not support "
388 "user pointer i/o\n", dev_name);
389 exit(EXIT_FAILURE);
390 } else {
391 errno_exit("VIDIOC_REQBUFS");
392 }
393 }
394
395 buffers = calloc(4, sizeof(*buffers));
396
397 if (!buffers) {
398 fprintf(stderr, "Out of memory\n");
399 exit(EXIT_FAILURE);
400 }
401
402 for (n_buffers = 0; n_buffers &lt; 4; ++n_buffers) {
403 buffers[n_buffers].length = buffer_size;
404 buffers[n_buffers].start = malloc(buffer_size);
405
406 if (!buffers[n_buffers].start) {
407 fprintf(stderr, "Out of memory\n");
408 exit(EXIT_FAILURE);
409 }
410 }
411}
412
413static void init_device(void)
414{
415 struct <link linkend="v4l2-capability">v4l2_capability</link> cap;
416 struct <link linkend="v4l2-cropcap">v4l2_cropcap</link> cropcap;
417 struct <link linkend="v4l2-crop">v4l2_crop</link> crop;
418 struct <link linkend="v4l2-format">v4l2_format</link> fmt;
419 unsigned int min;
420
421 if (-1 == xioctl(fd, VIDIOC_QUERYCAP, &amp;cap)) {
422 if (EINVAL == errno) {
423 fprintf(stderr, "%s is no V4L2 device\n",
424 dev_name);
425 exit(EXIT_FAILURE);
426 } else {
427 errno_exit("VIDIOC_QUERYCAP");
428 }
429 }
430
431 if (!(cap.capabilities &amp; V4L2_CAP_VIDEO_CAPTURE)) {
432 fprintf(stderr, "%s is no video capture device\n",
433 dev_name);
434 exit(EXIT_FAILURE);
435 }
436
437 switch (io) {
438 case IO_METHOD_READ:
439 if (!(cap.capabilities &amp; V4L2_CAP_READWRITE)) {
440 fprintf(stderr, "%s does not support read i/o\n",
441 dev_name);
442 exit(EXIT_FAILURE);
443 }
444 break;
445
446 case IO_METHOD_MMAP:
447 case IO_METHOD_USERPTR:
448 if (!(cap.capabilities &amp; V4L2_CAP_STREAMING)) {
449 fprintf(stderr, "%s does not support streaming i/o\n",
450 dev_name);
451 exit(EXIT_FAILURE);
452 }
453 break;
454 }
455
456
457 /* Select video input, video standard and tune here. */
458
459
460 CLEAR(cropcap);
461
462 cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
463
464 if (0 == xioctl(fd, VIDIOC_CROPCAP, &amp;cropcap)) {
465 crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
466 crop.c = cropcap.defrect; /* reset to default */
467
468 if (-1 == xioctl(fd, VIDIOC_S_CROP, &amp;crop)) {
469 switch (errno) {
470 case EINVAL:
471 /* Cropping not supported. */
472 break;
473 default:
474 /* Errors ignored. */
475 break;
476 }
477 }
478 } else {
479 /* Errors ignored. */
480 }
481
482
483 CLEAR(fmt);
484
485 fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
486 if (force_format) {
487 fmt.fmt.pix.width = 640;
488 fmt.fmt.pix.height = 480;
489 fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
490 fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
491
492 if (-1 == xioctl(fd, VIDIOC_S_FMT, &amp;fmt))
493 errno_exit("VIDIOC_S_FMT");
494
495 /* Note VIDIOC_S_FMT may change width and height. */
496 } else {
497 /* Preserve original settings as set by v4l2-ctl for example */
498 if (-1 == xioctl(fd, VIDIOC_G_FMT, &amp;fmt))
499 errno_exit("VIDIOC_G_FMT");
500 }
501
502 /* Buggy driver paranoia. */
503 min = fmt.fmt.pix.width * 2;
504 if (fmt.fmt.pix.bytesperline &lt; min)
505 fmt.fmt.pix.bytesperline = min;
506 min = fmt.fmt.pix.bytesperline * fmt.fmt.pix.height;
507 if (fmt.fmt.pix.sizeimage &lt; min)
508 fmt.fmt.pix.sizeimage = min;
509
510 switch (io) {
511 case IO_METHOD_READ:
512 init_read(fmt.fmt.pix.sizeimage);
513 break;
514
515 case IO_METHOD_MMAP:
516 init_mmap();
517 break;
518
519 case IO_METHOD_USERPTR:
520 init_userp(fmt.fmt.pix.sizeimage);
521 break;
522 }
523}
524
525static void close_device(void)
526{
527 if (-1 == close(fd))
528 errno_exit("close");
529
530 fd = -1;
531}
532
533static void open_device(void)
534{
535 struct stat st;
536
537 if (-1 == stat(dev_name, &amp;st)) {
538 fprintf(stderr, "Cannot identify '%s': %d, %s\n",
539 dev_name, errno, strerror(errno));
540 exit(EXIT_FAILURE);
541 }
542
543 if (!S_ISCHR(st.st_mode)) {
544 fprintf(stderr, "%s is no device\n", dev_name);
545 exit(EXIT_FAILURE);
546 }
547
548 fd = open(dev_name, O_RDWR /* required */ | O_NONBLOCK, 0);
549
550 if (-1 == fd) {
551 fprintf(stderr, "Cannot open '%s': %d, %s\n",
552 dev_name, errno, strerror(errno));
553 exit(EXIT_FAILURE);
554 }
555}
556
557static void usage(FILE *fp, int argc, char **argv)
558{
559 fprintf(fp,
560 "Usage: %s [options]\n\n"
561 "Version 1.3\n"
562 "Options:\n"
563 "-d | --device name Video device name [%s]\n"
564 "-h | --help Print this message\n"
565 "-m | --mmap Use memory mapped buffers [default]\n"
566 "-r | --read Use read() calls\n"
567 "-u | --userp Use application allocated buffers\n"
568 "-o | --output Outputs stream to stdout\n"
569 "-f | --format Force format to 640x480 YUYV\n"
570 "-c | --count Number of frames to grab [%i]\n"
571 "",
572 argv[0], dev_name, frame_count);
573}
574
575static const char short_options[] = "d:hmruofc:";
576
577static const struct option
578long_options[] = {
579 { "device", required_argument, NULL, 'd' },
580 { "help", no_argument, NULL, 'h' },
581 { "mmap", no_argument, NULL, 'm' },
582 { "read", no_argument, NULL, 'r' },
583 { "userp", no_argument, NULL, 'u' },
584 { "output", no_argument, NULL, 'o' },
585 { "format", no_argument, NULL, 'f' },
586 { "count", required_argument, NULL, 'c' },
587 { 0, 0, 0, 0 }
588};
589
590int main(int argc, char **argv)
591{
592 dev_name = "/dev/video0";
593
594 for (;;) {
595 int idx;
596 int c;
597
598 c = getopt_long(argc, argv,
599 short_options, long_options, &amp;idx);
600
601 if (-1 == c)
602 break;
603
604 switch (c) {
605 case 0: /* getopt_long() flag */
606 break;
607
608 case 'd':
609 dev_name = optarg;
610 break;
611
612 case 'h':
613 usage(stdout, argc, argv);
614 exit(EXIT_SUCCESS);
615
616 case 'm':
617 io = IO_METHOD_MMAP;
618 break;
619
620 case 'r':
621 io = IO_METHOD_READ;
622 break;
623
624 case 'u':
625 io = IO_METHOD_USERPTR;
626 break;
627
628 case 'o':
629 out_buf++;
630 break;
631
632 case 'f':
633 force_format++;
634 break;
635
636 case 'c':
637 errno = 0;
638 frame_count = strtol(optarg, NULL, 0);
639 if (errno)
640 errno_exit(optarg);
641 break;
642
643 default:
644 usage(stderr, argc, argv);
645 exit(EXIT_FAILURE);
646 }
647 }
648
649 open_device();
650 init_device();
651 start_capturing();
652 mainloop();
653 stop_capturing();
654 uninit_device();
655 close_device();
656 fprintf(stderr, "\n");
657 return 0;
658}
659</programlisting>
diff --git a/Documentation/DocBook/media/v4l/cec-api.xml b/Documentation/DocBook/media/v4l/cec-api.xml
deleted file mode 100644
index 7062c1fa4904..000000000000
--- a/Documentation/DocBook/media/v4l/cec-api.xml
+++ /dev/null
@@ -1,75 +0,0 @@
1<partinfo>
2 <authorgroup>
3 <author>
4 <firstname>Hans</firstname>
5 <surname>Verkuil</surname>
6 <affiliation><address><email>hans.verkuil@cisco.com</email></address></affiliation>
7 <contrib>Initial version.</contrib>
8 </author>
9 </authorgroup>
10 <copyright>
11 <year>2016</year>
12 <holder>Hans Verkuil</holder>
13 </copyright>
14
15 <revhistory>
16 <!-- Put document revisions here, newest first. -->
17 <revision>
18 <revnumber>1.0.0</revnumber>
19 <date>2016-03-17</date>
20 <authorinitials>hv</authorinitials>
21 <revremark>Initial revision</revremark>
22 </revision>
23 </revhistory>
24</partinfo>
25
26<title>CEC API</title>
27
28<chapter id="cec-api">
29 <title>CEC: Consumer Electronics Control</title>
30
31 <section id="cec-intro">
32 <title>Introduction</title>
33 <para>
34 Note: this documents the proposed CEC API. This API is not yet finalized and
35 is currently only available as a staging kernel module.
36 </para>
37 <para>HDMI connectors provide a single pin for use by the Consumer Electronics
38 Control protocol. This protocol allows different devices connected by an HDMI cable
39 to communicate. The protocol for CEC version 1.4 is defined in supplements 1 (CEC)
40 and 2 (HEAC or HDMI Ethernet and Audio Return Channel) of the HDMI 1.4a
41 (<xref linkend="hdmi" />) specification and the extensions added to CEC version 2.0
42 are defined in chapter 11 of the HDMI 2.0 (<xref linkend="hdmi2" />) specification.
43 </para>
44
45 <para>The bitrate is very slow (effectively no more than 36 bytes per second) and
46 is based on the ancient AV.link protocol used in old SCART connectors. The protocol
47 closely resembles a crazy Rube Goldberg contraption and is an unholy mix of low and
48 high level messages. Some messages, especially those part of the HEAC protocol layered
49 on top of CEC, need to be handled by the kernel, others can be handled either by the
50 kernel or by userspace.</para>
51
52 <para>In addition, CEC can be implemented in HDMI receivers, transmitters and in USB
53 devices that have an HDMI input and an HDMI output and that control just the CEC pin.</para>
54
55 <para>Drivers that support CEC will create a CEC device node (/dev/cecX)
56 to give userspace access to the CEC adapter. The &CEC-ADAP-G-CAPS; ioctl will tell userspace
57 what it is allowed to do.</para>
58 </section>
59</chapter>
60
61<appendix id="cec-user-func">
62 <title>Function Reference</title>
63 <!-- Keep this alphabetically sorted. -->
64 &sub-cec-func-open;
65 &sub-cec-func-close;
66 &sub-cec-func-ioctl;
67 &sub-cec-func-poll;
68 <!-- All ioctls go here. -->
69 &sub-cec-ioc-adap-g-caps;
70 &sub-cec-ioc-adap-g-log-addrs;
71 &sub-cec-ioc-adap-g-phys-addr;
72 &sub-cec-ioc-dqevent;
73 &sub-cec-ioc-g-mode;
74 &sub-cec-ioc-receive;
75</appendix>
diff --git a/Documentation/DocBook/media/v4l/cec-func-close.xml b/Documentation/DocBook/media/v4l/cec-func-close.xml
deleted file mode 100644
index 0812c8cd9634..000000000000
--- a/Documentation/DocBook/media/v4l/cec-func-close.xml
+++ /dev/null
@@ -1,64 +0,0 @@
1<refentry id="cec-func-close">
2 <refmeta>
3 <refentrytitle>cec close()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-close</refname>
9 <refpurpose>Close a cec device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>close</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 </funcprototype>
19 </funcsynopsis>
20 </refsynopsisdiv>
21
22 <refsect1>
23 <title>Arguments</title>
24
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fd;</para>
30 </listitem>
31 </varlistentry>
32 </variablelist>
33 </refsect1>
34
35 <refsect1>
36 <title>Description</title>
37
38 <para>
39 Note: this documents the proposed CEC API. This API is not yet finalized and
40 is currently only available as a staging kernel module.
41 </para>
42
43 <para>Closes the cec device. Resources associated with the file descriptor
44 are freed. The device configuration remain unchanged.</para>
45 </refsect1>
46
47 <refsect1>
48 <title>Return Value</title>
49
50 <para><function>close</function> returns 0 on success. On error, -1 is
51 returned, and <varname>errno</varname> is set appropriately. Possible error
52 codes are:</para>
53
54 <variablelist>
55 <varlistentry>
56 <term><errorcode>EBADF</errorcode></term>
57 <listitem>
58 <para><parameter>fd</parameter> is not a valid open file descriptor.
59 </para>
60 </listitem>
61 </varlistentry>
62 </variablelist>
63 </refsect1>
64</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-func-ioctl.xml b/Documentation/DocBook/media/v4l/cec-func-ioctl.xml
deleted file mode 100644
index f92817a2dc80..000000000000
--- a/Documentation/DocBook/media/v4l/cec-func-ioctl.xml
+++ /dev/null
@@ -1,78 +0,0 @@
1<refentry id="cec-func-ioctl">
2 <refmeta>
3 <refentrytitle>cec ioctl()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-ioctl</refname>
9 <refpurpose>Control a cec 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>CEC ioctl request code as defined in the cec.h header file,
38 for example CEC_ADAP_G_CAPS.</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para>Pointer to a request-specific structure.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52 <para>
53 Note: this documents the proposed CEC API. This API is not yet finalized and
54 is currently only available as a staging kernel module.
55 </para>
56
57 <para>The <function>ioctl()</function> function manipulates cec device
58 parameters. The argument <parameter>fd</parameter> must be an open file
59 descriptor.</para>
60 <para>The ioctl <parameter>request</parameter> code specifies the cec
61 function to be called. It has encoded in it whether the argument is an
62 input, output or read/write parameter, and the size of the argument
63 <parameter>argp</parameter> in bytes.</para>
64 <para>Macros and structures definitions specifying cec ioctl requests and
65 their parameters are located in the cec.h header file. All cec ioctl
66 requests, their respective function and parameters are specified in
67 <xref linkend="cec-user-func" />.</para>
68 </refsect1>
69
70 <refsect1>
71 &return-value;
72
73 <para>Request-specific error codes are listed in the
74 individual requests descriptions.</para>
75 <para>When an ioctl that takes an output or read/write parameter fails,
76 the parameter remains unmodified.</para>
77 </refsect1>
78</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-func-open.xml b/Documentation/DocBook/media/v4l/cec-func-open.xml
deleted file mode 100644
index 2edc5555b81a..000000000000
--- a/Documentation/DocBook/media/v4l/cec-func-open.xml
+++ /dev/null
@@ -1,104 +0,0 @@
1<refentry id="cec-func-open">
2 <refmeta>
3 <refentrytitle>cec open()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-open</refname>
9 <refpurpose>Open a cec device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;fcntl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>open</function></funcdef>
17 <paramdef>const char *<parameter>device_name</parameter></paramdef>
18 <paramdef>int <parameter>flags</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>device_name</parameter></term>
29 <listitem>
30 <para>Device to be opened.</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>flags</parameter></term>
35 <listitem>
36 <para>Open flags. Access mode must be <constant>O_RDWR</constant>.
37 </para>
38 <para>When the <constant>O_NONBLOCK</constant> flag is
39given, the &CEC-RECEIVE; ioctl will return &EAGAIN; when no message is
40available, and the &CEC-TRANSMIT;, &CEC-ADAP-S-PHYS-ADDR; and
41&CEC-ADAP-S-LOG-ADDRS; ioctls all act in non-blocking mode.</para>
42 <para>Other flags have no effect.</para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47 <refsect1>
48 <title>Description</title>
49 <para>
50 Note: this documents the proposed CEC API. This API is not yet finalized and
51 is currently only available as a staging kernel module.
52 </para>
53
54 <para>To open a cec device applications call <function>open()</function>
55 with the desired device name. The function has no side effects; the device
56 configuration remain unchanged.</para>
57 <para>When the device is opened in read-only mode, attempts to modify its
58 configuration will result in an error, and <varname>errno</varname> will be
59 set to <errorcode>EBADF</errorcode>.</para>
60 </refsect1>
61 <refsect1>
62 <title>Return Value</title>
63
64 <para><function>open</function> returns the new file descriptor on success.
65 On error, -1 is returned, and <varname>errno</varname> is set appropriately.
66 Possible error codes include:</para>
67
68 <variablelist>
69 <varlistentry>
70 <term><errorcode>EACCES</errorcode></term>
71 <listitem>
72 <para>The requested access to the file is not allowed.</para>
73 </listitem>
74 </varlistentry>
75 <varlistentry>
76 <term><errorcode>EMFILE</errorcode></term>
77 <listitem>
78 <para>The process already has the maximum number of files open.
79 </para>
80 </listitem>
81 </varlistentry>
82 <varlistentry>
83 <term><errorcode>ENFILE</errorcode></term>
84 <listitem>
85 <para>The system limit on the total number of open files has been
86 reached.</para>
87 </listitem>
88 </varlistentry>
89 <varlistentry>
90 <term><errorcode>ENOMEM</errorcode></term>
91 <listitem>
92 <para>Insufficient kernel memory was available.</para>
93 </listitem>
94 </varlistentry>
95 <varlistentry>
96 <term><errorcode>ENXIO</errorcode></term>
97 <listitem>
98 <para>No device corresponding to this device special file exists.
99 </para>
100 </listitem>
101 </varlistentry>
102 </variablelist>
103 </refsect1>
104</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-func-poll.xml b/Documentation/DocBook/media/v4l/cec-func-poll.xml
deleted file mode 100644
index 1bddbde0142d..000000000000
--- a/Documentation/DocBook/media/v4l/cec-func-poll.xml
+++ /dev/null
@@ -1,94 +0,0 @@
1<refentry id="cec-func-poll">
2 <refmeta>
3 <refentrytitle>cec poll()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>cec-poll</refname>
9 <refpurpose>Wait for some event on a file descriptor</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;sys/poll.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>poll</function></funcdef>
17 <paramdef>struct pollfd *<parameter>ufds</parameter></paramdef>
18 <paramdef>unsigned int <parameter>nfds</parameter></paramdef>
19 <paramdef>int <parameter>timeout</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Description</title>
26
27 <para>
28 Note: this documents the proposed CEC API. This API is not yet finalized and
29 is currently only available as a staging kernel module.
30 </para>
31
32 <para>With the <function>poll()</function> function applications
33can wait for CEC events.</para>
34
35 <para>On success <function>poll()</function> returns the number of
36file descriptors that have been selected (that is, file descriptors
37for which the <structfield>revents</structfield> field of the
38respective <structname>pollfd</structname> structure is non-zero).
39CEC devices set the <constant>POLLIN</constant> and
40<constant>POLLRDNORM</constant> flags in the
41<structfield>revents</structfield> field if there are messages in the
42receive queue. If the transmit queue has room for new messages, the
43<constant>POLLOUT</constant> and <constant>POLLWRNORM</constant>
44flags are set. If there are events in the event queue, then the
45<constant>POLLPRI</constant> flag is set.
46When the function timed out it returns a value of zero, on
47failure it returns <returnvalue>-1</returnvalue> and the
48<varname>errno</varname> variable is set appropriately.
49</para>
50
51 <para>For more details see the
52<function>poll()</function> manual page.</para>
53 </refsect1>
54
55 <refsect1>
56 <title>Return Value</title>
57
58 <para>On success, <function>poll()</function> returns the number
59structures which have non-zero <structfield>revents</structfield>
60fields, or zero if the call timed out. On error
61<returnvalue>-1</returnvalue> is returned, and the
62<varname>errno</varname> variable is set appropriately:</para>
63
64 <variablelist>
65 <varlistentry>
66 <term><errorcode>EBADF</errorcode></term>
67 <listitem>
68 <para>One or more of the <parameter>ufds</parameter> members
69specify an invalid file descriptor.</para>
70 </listitem>
71 </varlistentry>
72 <varlistentry>
73 <term><errorcode>EFAULT</errorcode></term>
74 <listitem>
75 <para><parameter>ufds</parameter> references an inaccessible
76memory area.</para>
77 </listitem>
78 </varlistentry>
79 <varlistentry>
80 <term><errorcode>EINTR</errorcode></term>
81 <listitem>
82 <para>The call was interrupted by a signal.</para>
83 </listitem>
84 </varlistentry>
85 <varlistentry>
86 <term><errorcode>EINVAL</errorcode></term>
87 <listitem>
88 <para>The <parameter>nfds</parameter> argument is greater
89than <constant>OPEN_MAX</constant>.</para>
90 </listitem>
91 </varlistentry>
92 </variablelist>
93 </refsect1>
94</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml b/Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml
deleted file mode 100644
index 3523ef2259b1..000000000000
--- a/Documentation/DocBook/media/v4l/cec-ioc-adap-g-caps.xml
+++ /dev/null
@@ -1,151 +0,0 @@
1<refentry id="cec-ioc-adap-g-caps">
2 <refmeta>
3 <refentrytitle>ioctl CEC_ADAP_G_CAPS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_ADAP_G_CAPS</refname>
9 <refpurpose>Query device capabilities</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 cec_caps *<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>File descriptor returned by
31 <link linkend='cec-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>CEC_ADAP_G_CAPS</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>
53 Note: this documents the proposed CEC API. This API is not yet finalized and
54 is currently only available as a staging kernel module.
55 </para>
56
57 <para>All cec devices must support the <constant>CEC_ADAP_G_CAPS</constant>
58 ioctl. To query device information, applications call the ioctl with a
59 pointer to a &cec-caps;. The driver fills the structure and returns
60 the information to the application.
61 The ioctl never fails.</para>
62
63 <table pgwide="1" frame="none" id="cec-caps">
64 <title>struct <structname>cec_caps</structname></title>
65 <tgroup cols="3">
66 &cs-str;
67 <tbody valign="top">
68 <row>
69 <entry>char</entry>
70 <entry><structfield>driver[32]</structfield></entry>
71 <entry>The name of the cec adapter driver.</entry>
72 </row>
73 <row>
74 <entry>char</entry>
75 <entry><structfield>name[32]</structfield></entry>
76 <entry>The name of this CEC adapter. The combination <structfield>driver</structfield>
77 and <structfield>name</structfield> must be unique.</entry>
78 </row>
79 <row>
80 <entry>__u32</entry>
81 <entry><structfield>capabilities</structfield></entry>
82 <entry>The capabilities of the CEC adapter, see <xref
83 linkend="cec-capabilities" />.</entry>
84 </row>
85 <row>
86 <entry>__u32</entry>
87 <entry><structfield>version</structfield></entry>
88 <entry>CEC Framework API version, formatted with the
89 <constant>KERNEL_VERSION()</constant> macro.</entry>
90 </row>
91 </tbody>
92 </tgroup>
93 </table>
94
95 <table pgwide="1" frame="none" id="cec-capabilities">
96 <title>CEC Capabilities Flags</title>
97 <tgroup cols="3">
98 &cs-def;
99 <tbody valign="top">
100 <row>
101 <entry><constant>CEC_CAP_PHYS_ADDR</constant></entry>
102 <entry>0x00000001</entry>
103 <entry>Userspace has to configure the physical address by
104 calling &CEC-ADAP-S-PHYS-ADDR;. If this capability isn't set,
105 then setting the physical address is handled by the kernel
106 whenever the EDID is set (for an HDMI receiver) or read (for
107 an HDMI transmitter).</entry>
108 </row>
109 <row>
110 <entry><constant>CEC_CAP_LOG_ADDRS</constant></entry>
111 <entry>0x00000002</entry>
112 <entry>Userspace has to configure the logical addresses by
113 calling &CEC-ADAP-S-LOG-ADDRS;. If this capability isn't set,
114 then the kernel will have configured this.</entry>
115 </row>
116 <row>
117 <entry><constant>CEC_CAP_TRANSMIT</constant></entry>
118 <entry>0x00000004</entry>
119 <entry>Userspace can transmit CEC messages by calling &CEC-TRANSMIT;. This
120 implies that userspace can be a follower as well, since being able to
121 transmit messages is a prerequisite of becoming a follower. If this
122 capability isn't set, then the kernel will handle all CEC transmits
123 and process all CEC messages it receives.
124 </entry>
125 </row>
126 <row>
127 <entry><constant>CEC_CAP_PASSTHROUGH</constant></entry>
128 <entry>0x00000008</entry>
129 <entry>Userspace can use the passthrough mode by
130 calling &CEC-S-MODE;.</entry>
131 </row>
132 <row>
133 <entry><constant>CEC_CAP_RC</constant></entry>
134 <entry>0x00000010</entry>
135 <entry>This adapter supports the remote control protocol.</entry>
136 </row>
137 <row>
138 <entry><constant>CEC_CAP_MONITOR_ALL</constant></entry>
139 <entry>0x00000020</entry>
140 <entry>The CEC hardware can monitor all messages, not just directed and
141 broadcast messages.</entry>
142 </row>
143 </tbody>
144 </tgroup>
145 </table>
146 </refsect1>
147
148 <refsect1>
149 &return-value;
150 </refsect1>
151</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml b/Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml
deleted file mode 100644
index 302b8294f7fc..000000000000
--- a/Documentation/DocBook/media/v4l/cec-ioc-adap-g-log-addrs.xml
+++ /dev/null
@@ -1,329 +0,0 @@
1<refentry id="cec-ioc-adap-g-log-addrs">
2 <refmeta>
3 <refentrytitle>ioctl CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_ADAP_G_LOG_ADDRS</refname>
9 <refname>CEC_ADAP_S_LOG_ADDRS</refname>
10 <refpurpose>Get or set the logical addresses</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 cec_log_addrs *<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>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_ADAP_G_LOG_ADDRS, CEC_ADAP_S_LOG_ADDRS</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 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>To query the current CEC logical addresses, applications call the
59<constant>CEC_ADAP_G_LOG_ADDRS</constant> ioctl with a pointer to a
60<structname>cec_log_addrs</structname> structure where the drivers stores the
61logical addresses.</para>
62
63 <para>To set new logical addresses, applications fill in struct <structname>cec_log_addrs</structname>
64and call the <constant>CEC_ADAP_S_LOG_ADDRS</constant> ioctl with a pointer to this struct.
65The <constant>CEC_ADAP_S_LOG_ADDRS</constant> ioctl is only available if
66<constant>CEC_CAP_LOG_ADDRS</constant> is set (&ENOTTY; is returned otherwise). This ioctl will block until all
67requested logical addresses have been claimed. <constant>CEC_ADAP_S_LOG_ADDRS</constant>
68can only be called by a file handle in initiator mode (see &CEC-S-MODE;).</para>
69
70 <table pgwide="1" frame="none" id="cec-log-addrs">
71 <title>struct <structname>cec_log_addrs</structname></title>
72 <tgroup cols="3">
73 &cs-str;
74 <tbody valign="top">
75 <row>
76 <entry>__u8</entry>
77 <entry><structfield>log_addr</structfield>[CEC_MAX_LOG_ADDRS]</entry>
78 <entry>The actual logical addresses that were claimed. This is set by the
79 driver. If no logical address could be claimed, then it is set to
80 <constant>CEC_LOG_ADDR_INVALID</constant>. If this adapter is Unregistered,
81 then <structfield>log_addr[0]</structfield> is set to 0xf and all others to
82 <constant>CEC_LOG_ADDR_INVALID</constant>.</entry>
83 </row>
84 <row>
85 <entry>__u16</entry>
86 <entry><structfield>log_addr_mask</structfield></entry>
87 <entry>The bitmask of all logical addresses this adapter has claimed.
88 If this adapter is Unregistered then <structfield>log_addr_mask</structfield>
89 sets bit 15 and clears all other bits. If this adapter is not configured at all, then
90 <structfield>log_addr_mask</structfield> is set to 0. Set by the driver.</entry>
91 </row>
92 <row>
93 <entry>__u8</entry>
94 <entry><structfield>cec_version</structfield></entry>
95 <entry>The CEC version that this adapter shall use. See
96 <xref linkend="cec-versions" />.
97 Used to implement the <constant>CEC_MSG_CEC_VERSION</constant> and
98 <constant>CEC_MSG_REPORT_FEATURES</constant> messages. Note that
99 <constant>CEC_OP_CEC_VERSION_1_3A</constant> is not allowed
100 by the CEC framework.
101 </entry>
102 </row>
103 <row>
104 <entry>__u8</entry>
105 <entry><structfield>num_log_addrs</structfield></entry>
106 <entry>Number of logical addresses to set up. Must be &le;
107 <structfield>available_log_addrs</structfield> as returned by
108 &CEC-ADAP-G-CAPS;. All arrays in this structure are only filled up to
109 index <structfield>available_log_addrs</structfield>-1. The remaining
110 array elements will be ignored. Note that the CEC 2.0 standard allows
111 for a maximum of 2 logical addresses, although some hardware has support
112 for more. <constant>CEC_MAX_LOG_ADDRS</constant> is 4. The driver will
113 return the actual number of logical addresses it could claim, which may
114 be less than what was requested. If this field is set to 0, then the
115 CEC adapter shall clear all claimed logical addresses and all other
116 fields will be ignored.</entry>
117 </row>
118 <row>
119 <entry>__u32</entry>
120 <entry><structfield>vendor_id</structfield></entry>
121 <entry>The vendor ID is a 24-bit number that identifies the specific
122 vendor or entity. Based on this ID vendor specific commands may be
123 defined. If you do not want a vendor ID then set it to
124 <constant>CEC_VENDOR_ID_NONE</constant>.</entry>
125 </row>
126 <row>
127 <entry>__u32</entry>
128 <entry><structfield>flags</structfield></entry>
129 <entry>Flags. No flags are defined yet, so set this to 0.</entry>
130 </row>
131 <row>
132 <entry>char</entry>
133 <entry><structfield>osd_name</structfield>[15]</entry>
134 <entry>The On-Screen Display name as is returned by the
135 <constant>CEC_MSG_SET_OSD_NAME</constant> message.</entry>
136 </row>
137 <row>
138 <entry>__u8</entry>
139 <entry><structfield>primary_device_type</structfield>[CEC_MAX_LOG_ADDRS]</entry>
140 <entry>Primary device type for each logical address. See
141 <xref linkend="cec-prim-dev-types" /> for possible types.</entry>
142 </row>
143 <row>
144 <entry>__u8</entry>
145 <entry><structfield>log_addr_type</structfield>[CEC_MAX_LOG_ADDRS]</entry>
146 <entry>Logical address types. See <xref linkend="cec-log-addr-types" /> for
147 possible types. The driver will update this with the actual logical address
148 type that it claimed (e.g. it may have to fallback to
149 <constant>CEC_LOG_ADDR_TYPE_UNREGISTERED</constant>).</entry>
150 </row>
151 <row>
152 <entry>__u8</entry>
153 <entry><structfield>all_device_types</structfield>[CEC_MAX_LOG_ADDRS]</entry>
154 <entry>CEC 2.0 specific: all device types. See <xref linkend="cec-all-dev-types-flags" />.
155 Used to implement the <constant>CEC_MSG_REPORT_FEATURES</constant> message.
156 This field is ignored if <structfield>cec_version</structfield> &lt;
157 <constant>CEC_OP_CEC_VERSION_2_0</constant>.</entry>
158 </row>
159 <row>
160 <entry>__u8</entry>
161 <entry><structfield>features</structfield>[CEC_MAX_LOG_ADDRS][12]</entry>
162 <entry>Features for each logical address. Used to implement the
163 <constant>CEC_MSG_REPORT_FEATURES</constant> message. The 12 bytes include
164 both the RC Profile and the Device Features.
165 This field is ignored if <structfield>cec_version</structfield> &lt;
166 <constant>CEC_OP_CEC_VERSION_2_0</constant>.</entry>
167 </row>
168 </tbody>
169 </tgroup>
170 </table>
171
172 <table pgwide="1" frame="none" id="cec-versions">
173 <title>CEC Versions</title>
174 <tgroup cols="3">
175 &cs-def;
176 <tbody valign="top">
177 <row>
178 <entry><constant>CEC_OP_CEC_VERSION_1_3A</constant></entry>
179 <entry>4</entry>
180 <entry>CEC version according to the HDMI 1.3a standard.</entry>
181 </row>
182 <row>
183 <entry><constant>CEC_OP_CEC_VERSION_1_4B</constant></entry>
184 <entry>5</entry>
185 <entry>CEC version according to the HDMI 1.4b standard.</entry>
186 </row>
187 <row>
188 <entry><constant>CEC_OP_CEC_VERSION_2_0</constant></entry>
189 <entry>6</entry>
190 <entry>CEC version according to the HDMI 2.0 standard.</entry>
191 </row>
192 </tbody>
193 </tgroup>
194 </table>
195
196 <table pgwide="1" frame="none" id="cec-prim-dev-types">
197 <title>CEC Primary Device Types</title>
198 <tgroup cols="3">
199 &cs-def;
200 <tbody valign="top">
201 <row>
202 <entry><constant>CEC_OP_PRIM_DEVTYPE_TV</constant></entry>
203 <entry>0</entry>
204 <entry>Use for a TV.</entry>
205 </row>
206 <row>
207 <entry><constant>CEC_OP_PRIM_DEVTYPE_RECORD</constant></entry>
208 <entry>1</entry>
209 <entry>Use for a recording device.</entry>
210 </row>
211 <row>
212 <entry><constant>CEC_OP_PRIM_DEVTYPE_TUNER</constant></entry>
213 <entry>3</entry>
214 <entry>Use for a device with a tuner.</entry>
215 </row>
216 <row>
217 <entry><constant>CEC_OP_PRIM_DEVTYPE_PLAYBACK</constant></entry>
218 <entry>4</entry>
219 <entry>Use for a playback device.</entry>
220 </row>
221 <row>
222 <entry><constant>CEC_OP_PRIM_DEVTYPE_AUDIOSYSTEM</constant></entry>
223 <entry>5</entry>
224 <entry>Use for an audio system (e.g. an audio/video receiver).</entry>
225 </row>
226 <row>
227 <entry><constant>CEC_OP_PRIM_DEVTYPE_SWITCH</constant></entry>
228 <entry>6</entry>
229 <entry>Use for a CEC switch.</entry>
230 </row>
231 <row>
232 <entry><constant>CEC_OP_PRIM_DEVTYPE_VIDEOPROC</constant></entry>
233 <entry>7</entry>
234 <entry>Use for a video processor device.</entry>
235 </row>
236 </tbody>
237 </tgroup>
238 </table>
239
240 <table pgwide="1" frame="none" id="cec-log-addr-types">
241 <title>CEC Logical Address Types</title>
242 <tgroup cols="3">
243 &cs-def;
244 <tbody valign="top">
245 <row>
246 <entry><constant>CEC_LOG_ADDR_TYPE_TV</constant></entry>
247 <entry>0</entry>
248 <entry>Use for a TV.</entry>
249 </row>
250 <row>
251 <entry><constant>CEC_LOG_ADDR_TYPE_RECORD</constant></entry>
252 <entry>1</entry>
253 <entry>Use for a recording device.</entry>
254 </row>
255 <row>
256 <entry><constant>CEC_LOG_ADDR_TYPE_TUNER</constant></entry>
257 <entry>2</entry>
258 <entry>Use for a tuner device.</entry>
259 </row>
260 <row>
261 <entry><constant>CEC_LOG_ADDR_TYPE_PLAYBACK</constant></entry>
262 <entry>3</entry>
263 <entry>Use for a playback device.</entry>
264 </row>
265 <row>
266 <entry><constant>CEC_LOG_ADDR_TYPE_AUDIOSYSTEM</constant></entry>
267 <entry>4</entry>
268 <entry>Use for an audio system device.</entry>
269 </row>
270 <row>
271 <entry><constant>CEC_LOG_ADDR_TYPE_SPECIFIC</constant></entry>
272 <entry>5</entry>
273 <entry>Use for a second TV or for a video processor device.</entry>
274 </row>
275 <row>
276 <entry><constant>CEC_LOG_ADDR_TYPE_UNREGISTERED</constant></entry>
277 <entry>6</entry>
278 <entry>Use this if you just want to remain unregistered.
279 Used for pure CEC switches or CDC-only devices (CDC:
280 Capability Discovery and Control).</entry>
281 </row>
282 </tbody>
283 </tgroup>
284 </table>
285
286 <table pgwide="1" frame="none" id="cec-all-dev-types-flags">
287 <title>CEC All Device Types Flags</title>
288 <tgroup cols="3">
289 &cs-def;
290 <tbody valign="top">
291 <row>
292 <entry><constant>CEC_OP_ALL_DEVTYPE_TV</constant></entry>
293 <entry>0x80</entry>
294 <entry>This supports the TV type.</entry>
295 </row>
296 <row>
297 <entry><constant>CEC_OP_ALL_DEVTYPE_RECORD</constant></entry>
298 <entry>0x40</entry>
299 <entry>This supports the Recording type.</entry>
300 </row>
301 <row>
302 <entry><constant>CEC_OP_ALL_DEVTYPE_TUNER</constant></entry>
303 <entry>0x20</entry>
304 <entry>This supports the Tuner type.</entry>
305 </row>
306 <row>
307 <entry><constant>CEC_OP_ALL_DEVTYPE_PLAYBACK</constant></entry>
308 <entry>0x10</entry>
309 <entry>This supports the Playback type.</entry>
310 </row>
311 <row>
312 <entry><constant>CEC_OP_ALL_DEVTYPE_AUDIOSYSTEM</constant></entry>
313 <entry>0x08</entry>
314 <entry>This supports the Audio System type.</entry>
315 </row>
316 <row>
317 <entry><constant>CEC_OP_ALL_DEVTYPE_SWITCH</constant></entry>
318 <entry>0x04</entry>
319 <entry>This supports the CEC Switch or Video Processing type.</entry>
320 </row>
321 </tbody>
322 </tgroup>
323 </table>
324 </refsect1>
325
326 <refsect1>
327 &return-value;
328 </refsect1>
329</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml b/Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml
deleted file mode 100644
index d95f1785080c..000000000000
--- a/Documentation/DocBook/media/v4l/cec-ioc-adap-g-phys-addr.xml
+++ /dev/null
@@ -1,86 +0,0 @@
1<refentry id="cec-ioc-adap-g-phys-addr">
2 <refmeta>
3 <refentrytitle>ioctl CEC_ADAP_G_PHYS_ADDR, CEC_ADAP_S_PHYS_ADDR</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_ADAP_G_PHYS_ADDR</refname>
9 <refname>CEC_ADAP_S_PHYS_ADDR</refname>
10 <refpurpose>Get or set the physical address</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>__u16 *<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>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_ADAP_G_PHYS_ADDR, CEC_ADAP_S_PHYS_ADDR</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 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>To query the current physical address applications call the
59<constant>CEC_ADAP_G_PHYS_ADDR</constant> ioctl with a pointer to an __u16
60where the driver stores the physical address.</para>
61
62 <para>To set a new physical address applications store the physical address in
63an __u16 and call the <constant>CEC_ADAP_S_PHYS_ADDR</constant> ioctl with a
64pointer to this integer. <constant>CEC_ADAP_S_PHYS_ADDR</constant> is only
65available if <constant>CEC_CAP_PHYS_ADDR</constant> is set (&ENOTTY; will be returned
66otherwise). <constant>CEC_ADAP_S_PHYS_ADDR</constant>
67can only be called by a file handle in initiator mode (see &CEC-S-MODE;), if not
68&EBUSY; will be returned.</para>
69
70 <para>The physical address is a 16-bit number where each group of 4 bits
71represent a digit of the physical address a.b.c.d where the most significant
724 bits represent 'a'. The CEC root device (usually the TV) has address 0.0.0.0.
73Every device that is hooked up to an input of the TV has address a.0.0.0 (where
74'a' is &ge; 1), devices hooked up to those in turn have addresses a.b.0.0, etc.
75So a topology of up to 5 devices deep is supported. The physical address a
76device shall use is stored in the EDID of the sink.</para>
77
78<para>For example, the EDID for each HDMI input of the TV will have a different
79physical address of the form a.0.0.0 that the sources will read out and use as
80their physical address.</para>
81 </refsect1>
82
83 <refsect1>
84 &return-value;
85 </refsect1>
86</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml b/Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml
deleted file mode 100644
index 697dde575cd4..000000000000
--- a/Documentation/DocBook/media/v4l/cec-ioc-dqevent.xml
+++ /dev/null
@@ -1,202 +0,0 @@
1<refentry id="cec-ioc-g-event">
2 <refmeta>
3 <refentrytitle>ioctl CEC_DQEVENT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_DQEVENT</refname>
9 <refpurpose>Dequeue a CEC 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 cec_event *<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>File descriptor returned by
31 <link linkend='cec-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>CEC_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>
53 Note: this documents the proposed CEC API. This API is not yet finalized and
54 is currently only available as a staging kernel module.
55 </para>
56
57 <para>CEC devices can send asynchronous events. These can be retrieved by calling
58 the <constant>CEC_DQEVENT</constant> ioctl. If the file descriptor is in non-blocking
59 mode and no event is pending, then it will return -1 and set errno to the &EAGAIN;.</para>
60
61 <para>The internal event queues are per-filehandle and per-event type. If there is
62 no more room in a queue then the last event is overwritten with the new one. This
63 means that intermediate results can be thrown away but that the latest event is always
64 available. This also means that is it possible to read two successive events that have
65 the same value (e.g. two CEC_EVENT_STATE_CHANGE events with the same state). In that
66 case the intermediate state changes were lost but it is guaranteed that the state
67 did change in between the two events.</para>
68
69 <table pgwide="1" frame="none" id="cec-event-state-change">
70 <title>struct <structname>cec_event_state_change</structname></title>
71 <tgroup cols="3">
72 &cs-str;
73 <tbody valign="top">
74 <row>
75 <entry>__u16</entry>
76 <entry><structfield>phys_addr</structfield></entry>
77 <entry>The current physical address.</entry>
78 </row>
79 <row>
80 <entry>__u16</entry>
81 <entry><structfield>log_addr_mask</structfield></entry>
82 <entry>The current set of claimed logical addresses.</entry>
83 </row>
84 </tbody>
85 </tgroup>
86 </table>
87
88 <table pgwide="1" frame="none" id="cec-event-lost-msgs">
89 <title>struct <structname>cec_event_lost_msgs</structname></title>
90 <tgroup cols="3">
91 &cs-str;
92 <tbody valign="top">
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>lost_msgs</structfield></entry>
96 <entry>Set to the number of lost messages since the filehandle
97 was opened or since the last time this event was dequeued for
98 this filehandle. The messages lost are the oldest messages. So
99 when a new message arrives and there is no more room, then the
100 oldest message is discarded to make room for the new one. The
101 internal size of the message queue guarantees that all messages
102 received in the last two seconds will be stored. Since messages
103 should be replied to within a second according to the CEC
104 specification, this is more than enough.
105 </entry>
106 </row>
107 </tbody>
108 </tgroup>
109 </table>
110
111 <table pgwide="1" frame="none" id="cec-event">
112 <title>struct <structname>cec_event</structname></title>
113 <tgroup cols="4">
114 &cs-str;
115 <tbody valign="top">
116 <row>
117 <entry>__u64</entry>
118 <entry><structfield>ts</structfield></entry>
119 <entry>Timestamp of the event in ns.</entry>
120 <entry></entry>
121 </row>
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>event</structfield></entry>
125 <entry>The CEC event type, see <xref linkend="cec-events" />.</entry>
126 <entry></entry>
127 </row>
128 <row>
129 <entry>__u32</entry>
130 <entry><structfield>flags</structfield></entry>
131 <entry>Event flags, see <xref linkend="cec-event-flags" />.</entry>
132 <entry></entry>
133 </row>
134 <row>
135 <entry>union</entry>
136 <entry>(anonymous)</entry>
137 <entry></entry>
138 <entry></entry>
139 </row>
140 <row>
141 <entry></entry>
142 <entry>struct cec_event_state_change</entry>
143 <entry><structfield>state_change</structfield></entry>
144 <entry>The new adapter state as sent by the <constant>CEC_EVENT_STATE_CHANGE</constant>
145 event.</entry>
146 </row>
147 <row>
148 <entry></entry>
149 <entry>struct cec_event_lost_msgs</entry>
150 <entry><structfield>lost_msgs</structfield></entry>
151 <entry>The number of lost messages as sent by the <constant>CEC_EVENT_LOST_MSGS</constant>
152 event.</entry>
153 </row>
154 </tbody>
155 </tgroup>
156 </table>
157
158 <table pgwide="1" frame="none" id="cec-events">
159 <title>CEC Events Types</title>
160 <tgroup cols="3">
161 &cs-def;
162 <tbody valign="top">
163 <row>
164 <entry><constant>CEC_EVENT_STATE_CHANGE</constant></entry>
165 <entry>1</entry>
166 <entry>Generated when the CEC Adapter's state changes. When open() is
167 called an initial event will be generated for that filehandle with the
168 CEC Adapter's state at that time.
169 </entry>
170 </row>
171 <row>
172 <entry><constant>CEC_EVENT_LOST_MSGS</constant></entry>
173 <entry>2</entry>
174 <entry>Generated if one or more CEC messages were lost because the
175 application didn't dequeue CEC messages fast enough.</entry>
176 </row>
177 </tbody>
178 </tgroup>
179 </table>
180
181 <table pgwide="1" frame="none" id="cec-event-flags">
182 <title>CEC Event Flags</title>
183 <tgroup cols="3">
184 &cs-def;
185 <tbody valign="top">
186 <row>
187 <entry><constant>CEC_EVENT_FL_INITIAL_VALUE</constant></entry>
188 <entry>1</entry>
189 <entry>Set for the initial events that are generated when the device is
190 opened. See the table above for which events do this. This allows
191 applications to learn the initial state of the CEC adapter at open()
192 time.</entry>
193 </row>
194 </tbody>
195 </tgroup>
196 </table>
197 </refsect1>
198
199 <refsect1>
200 &return-value;
201 </refsect1>
202</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-ioc-g-mode.xml b/Documentation/DocBook/media/v4l/cec-ioc-g-mode.xml
deleted file mode 100644
index 26b4282ad134..000000000000
--- a/Documentation/DocBook/media/v4l/cec-ioc-g-mode.xml
+++ /dev/null
@@ -1,255 +0,0 @@
1<refentry id="cec-ioc-g-mode">
2 <refmeta>
3 <refentrytitle>ioctl CEC_G_MODE, CEC_S_MODE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_G_MODE</refname>
9 <refname>CEC_S_MODE</refname>
10 <refpurpose>Get or set exclusive use of the CEC adapter</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>__u32 *<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>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_G_MODE, CEC_S_MODE</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 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>By default any filehandle can use &CEC-TRANSMIT; and &CEC-RECEIVE;, but
59in order to prevent applications from stepping on each others toes it must be possible
60to obtain exclusive access to the CEC adapter. This ioctl sets the filehandle
61to initiator and/or follower mode which can be exclusive depending on the chosen
62mode. The initiator is the filehandle that is used
63to initiate messages, i.e. it commands other CEC devices. The follower is the filehandle
64that receives messages sent to the CEC adapter and processes them. The same filehandle
65can be both initiator and follower, or this role can be taken by two different
66filehandles.</para>
67
68 <para>When a CEC message is received, then the CEC framework will decide how
69it will be processed. If the message is a reply to an earlier transmitted message,
70then the reply is sent back to the filehandle that is waiting for it. In addition
71the CEC framework will process it.</para>
72
73 <para>If the message is not a reply, then the CEC framework will process it
74first. If there is no follower, then the message is just discarded and a feature
75abort is sent back to the initiator if the framework couldn't process it. If there
76is a follower, then the message is passed on to the follower who will use
77&CEC-RECEIVE; to dequeue the new message. The framework expects the follower to
78make the right decisions.</para>
79
80 <para>The CEC framework will process core messages unless requested otherwise
81by the follower. The follower can enable the passthrough mode. In that case, the
82CEC framework will pass on most core messages without processing them and
83the follower will have to implement those messages. There are some messages
84that the core will always process, regardless of the passthrough mode. See
85<xref linkend="cec-core-processing" /> for details.</para>
86
87 <para>If there is no initiator, then any CEC filehandle can use &CEC-TRANSMIT;.
88If there is an exclusive initiator then only that initiator can call &CEC-TRANSMIT;.
89The follower can of course always call &CEC-TRANSMIT;.</para>
90
91 <para>Available initiator modes are:</para>
92
93 <table pgwide="1" frame="none" id="cec-mode-initiator">
94 <title>Initiator Modes</title>
95 <tgroup cols="3">
96 &cs-def;
97 <tbody valign="top">
98 <row>
99 <entry><constant>CEC_MODE_NO_INITIATOR</constant></entry>
100 <entry>0x0</entry>
101 <entry>This is not an initiator, i.e. it cannot transmit CEC messages
102 or make any other changes to the CEC adapter.</entry>
103 </row>
104 <row>
105 <entry><constant>CEC_MODE_INITIATOR</constant></entry>
106 <entry>0x1</entry>
107 <entry>This is an initiator (the default when the device is opened) and it
108 can transmit CEC messages and make changes to the CEC adapter, unless there
109 is an exclusive initiator.</entry>
110 </row>
111 <row>
112 <entry><constant>CEC_MODE_EXCL_INITIATOR</constant></entry>
113 <entry>0x2</entry>
114 <entry>This is an exclusive initiator and this file descriptor is the only one
115 that can transmit CEC messages and make changes to the CEC adapter. If someone
116 else is already the exclusive initiator then an attempt to become one will return
117 the &EBUSY; error.</entry>
118 </row>
119 </tbody>
120 </tgroup>
121 </table>
122
123 <para>Available follower modes are:</para>
124
125 <table pgwide="1" frame="none" id="cec-mode-follower">
126 <title>Follower Modes</title>
127 <tgroup cols="3">
128 &cs-def;
129 <tbody valign="top">
130 <row>
131 <entry><constant>CEC_MODE_NO_FOLLOWER</constant></entry>
132 <entry>0x00</entry>
133 <entry>This is not a follower (the default when the device is opened).</entry>
134 </row>
135 <row>
136 <entry><constant>CEC_MODE_FOLLOWER</constant></entry>
137 <entry>0x10</entry>
138 <entry>This is a follower and it will receive CEC messages unless there is
139 an exclusive follower. You cannot become a follower if <constant>CEC_CAP_TRANSMIT</constant>
140 is not set or if <constant>CEC_MODE_NO_INITIATOR</constant> was specified,
141 &EINVAL; is returned in that case.</entry>
142 </row>
143 <row>
144 <entry><constant>CEC_MODE_EXCL_FOLLOWER</constant></entry>
145 <entry>0x20</entry>
146 <entry>This is an exclusive follower and only this file descriptor will receive
147 CEC messages for processing. If someone else is already the exclusive follower
148 then an attempt to become one will return the &EBUSY; error. You cannot become
149 a follower if <constant>CEC_CAP_TRANSMIT</constant> is not set or if
150 <constant>CEC_MODE_NO_INITIATOR</constant> was specified, &EINVAL; is returned
151 in that case.</entry>
152 </row>
153 <row>
154 <entry><constant>CEC_MODE_EXCL_FOLLOWER_PASSTHRU</constant></entry>
155 <entry>0x30</entry>
156 <entry>This is an exclusive follower and only this file descriptor will receive
157 CEC messages for processing. In addition it will put the CEC device into
158 passthrough mode, allowing the exclusive follower to handle most core messages
159 instead of relying on the CEC framework for that. If someone else is already the
160 exclusive follower then an attempt to become one will return the &EBUSY; error.
161 You cannot become a follower if <constant>CEC_CAP_TRANSMIT</constant>
162 is not set or if <constant>CEC_MODE_NO_INITIATOR</constant> was specified,
163 &EINVAL; is returned in that case.</entry>
164 </row>
165 <row>
166 <entry><constant>CEC_MODE_MONITOR</constant></entry>
167 <entry>0xe0</entry>
168 <entry>Put the file descriptor into monitor mode. Can only be used in combination
169 with <constant>CEC_MODE_NO_INITIATOR</constant>, otherwise &EINVAL; will be
170 returned. In monitor mode all messages this CEC device transmits and all messages
171 it receives (both broadcast messages and directed messages for one its logical
172 addresses) will be reported. This is very useful for debugging. This is only
173 allowed if the process has the <constant>CAP_NET_ADMIN</constant>
174 capability. If that is not set, then &EPERM; is returned.</entry>
175 </row>
176 <row>
177 <entry><constant>CEC_MODE_MONITOR_ALL</constant></entry>
178 <entry>0xf0</entry>
179 <entry>Put the file descriptor into 'monitor all' mode. Can only be used in combination
180 with <constant>CEC_MODE_NO_INITIATOR</constant>, otherwise &EINVAL; will be
181 returned. In 'monitor all' mode all messages this CEC device transmits and all messages
182 it receives, including directed messages for other CEC devices will be reported. This
183 is very useful for debugging, but not all devices support this. This mode requires that
184 the <constant>CEC_CAP_MONITOR_ALL</constant> capability is set, otherwise &EINVAL; is
185 returned. This is only allowed if the process has the <constant>CAP_NET_ADMIN</constant>
186 capability. If that is not set, then &EPERM; is returned.</entry>
187 </row>
188 </tbody>
189 </tgroup>
190 </table>
191
192 <para>Core message processing details:</para>
193
194 <table pgwide="1" frame="none" id="cec-core-processing">
195 <title>Core Message Processing</title>
196 <tgroup cols="2">
197 &cs-def;
198 <tbody valign="top">
199 <row>
200 <entry><constant>CEC_MSG_GET_CEC_VERSION</constant></entry>
201 <entry>When in passthrough mode this message has to be handled by userspace,
202 otherwise the core will return the CEC version that was set with &CEC-ADAP-S-LOG-ADDRS;.</entry>
203 </row>
204 <row>
205 <entry><constant>CEC_MSG_GIVE_DEVICE_VENDOR_ID</constant></entry>
206 <entry>When in passthrough mode this message has to be handled by userspace,
207 otherwise the core will return the vendor ID that was set with &CEC-ADAP-S-LOG-ADDRS;.</entry>
208 </row>
209 <row>
210 <entry><constant>CEC_MSG_ABORT</constant></entry>
211 <entry>When in passthrough mode this message has to be handled by userspace,
212 otherwise the core will return a feature refused message as per the specification.</entry>
213 </row>
214 <row>
215 <entry><constant>CEC_MSG_GIVE_PHYSICAL_ADDR</constant></entry>
216 <entry>When in passthrough mode this message has to be handled by userspace,
217 otherwise the core will report the current physical address.</entry>
218 </row>
219 <row>
220 <entry><constant>CEC_MSG_GIVE_OSD_NAME</constant></entry>
221 <entry>When in passthrough mode this message has to be handled by userspace,
222 otherwise the core will report the current OSD name as was set with
223 &CEC-ADAP-S-LOG-ADDRS;.</entry>
224 </row>
225 <row>
226 <entry><constant>CEC_MSG_GIVE_FEATURES</constant></entry>
227 <entry>When in passthrough mode this message has to be handled by userspace,
228 otherwise the core will report the current features as was set with
229 &CEC-ADAP-S-LOG-ADDRS; or the message is ignore if the CEC version was
230 older than 2.0.</entry>
231 </row>
232 <row>
233 <entry><constant>CEC_MSG_USER_CONTROL_PRESSED</constant></entry>
234 <entry>If <constant>CEC_CAP_RC</constant> is set, then generate a remote control
235 key press. This message is always passed on to userspace.</entry>
236 </row>
237 <row>
238 <entry><constant>CEC_MSG_USER_CONTROL_RELEASED</constant></entry>
239 <entry>If <constant>CEC_CAP_RC</constant> is set, then generate a remote control
240 key release. This message is always passed on to userspace.</entry>
241 </row>
242 <row>
243 <entry><constant>CEC_MSG_REPORT_PHYSICAL_ADDR</constant></entry>
244 <entry>The CEC framework will make note of the reported physical address
245 and then just pass the message on to userspace.</entry>
246 </row>
247 </tbody>
248 </tgroup>
249 </table>
250 </refsect1>
251
252 <refsect1>
253 &return-value;
254 </refsect1>
255</refentry>
diff --git a/Documentation/DocBook/media/v4l/cec-ioc-receive.xml b/Documentation/DocBook/media/v4l/cec-ioc-receive.xml
deleted file mode 100644
index fde9f8678e67..000000000000
--- a/Documentation/DocBook/media/v4l/cec-ioc-receive.xml
+++ /dev/null
@@ -1,274 +0,0 @@
1<refentry id="cec-ioc-receive">
2 <refmeta>
3 <refentrytitle>ioctl CEC_RECEIVE, CEC_TRANSMIT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>CEC_RECEIVE</refname>
9 <refname>CEC_TRANSMIT</refname>
10 <refpurpose>Receive or transmit a CEC message</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 cec_msg *<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>File descriptor returned by
32 <link linkend='cec-func-open'><function>open()</function></link>.</para>
33 </listitem>
34 </varlistentry>
35 <varlistentry>
36 <term><parameter>request</parameter></term>
37 <listitem>
38 <para>CEC_RECEIVE, CEC_TRANSMIT</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 <para>
54 Note: this documents the proposed CEC API. This API is not yet finalized and
55 is currently only available as a staging kernel module.
56 </para>
57
58 <para>To receive a CEC message the application has to fill in the
59 <structname>cec_msg</structname> structure and pass it to the
60 <constant>CEC_RECEIVE</constant> ioctl. <constant>CEC_RECEIVE</constant> is
61 only available if <constant>CEC_CAP_RECEIVE</constant> is set. If the
62 file descriptor is in non-blocking mode and there are no received
63 messages pending, then it will return -1 and set errno to the &EAGAIN;.
64 If the file descriptor is in blocking mode and <structfield>timeout</structfield>
65 is non-zero and no message arrived within <structfield>timeout</structfield>
66 milliseconds, then it will return -1 and set errno to the &ETIMEDOUT;.</para>
67
68 <para>To send a CEC message the application has to fill in the
69 <structname>cec_msg</structname> structure and pass it to the
70 <constant>CEC_TRANSMIT</constant> ioctl. <constant>CEC_TRANSMIT</constant> is
71 only available if <constant>CEC_CAP_TRANSMIT</constant> is set.
72 If there is no more room in the transmit queue, then it will return
73 -1 and set errno to the &EBUSY;.</para>
74
75 <table pgwide="1" frame="none" id="cec-msg">
76 <title>struct <structname>cec_msg</structname></title>
77 <tgroup cols="3">
78 &cs-str;
79 <tbody valign="top">
80 <row>
81 <entry>__u64</entry>
82 <entry><structfield>ts</structfield></entry>
83 <entry>Timestamp of when the message was transmitted in ns in the case
84 of <constant>CEC_TRANSMIT</constant> with <structfield>reply</structfield>
85 set to 0, or the timestamp of the received message in all other cases.</entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>len</structfield></entry>
90 <entry>The length of the message. For <constant>CEC_TRANSMIT</constant> this
91 is filled in by the application. The driver will fill this in for
92 <constant>CEC_RECEIVE</constant> and for <constant>CEC_TRANSMIT</constant>
93 it will be filled in with the length of the reply message if
94 <structfield>reply</structfield> was set.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>timeout</structfield></entry>
99 <entry>The timeout in milliseconds. This is the time the device will wait for a message to
100 be received before timing out. If it is set to 0, then it will wait indefinitely when it
101 is called by <constant>CEC_RECEIVE</constant>. If it is 0 and it is called by
102 <constant>CEC_TRANSMIT</constant>, then it will be replaced by 1000 if the
103 <structfield>reply</structfield> is non-zero or ignored if <structfield>reply</structfield>
104 is 0.</entry>
105 </row>
106 <row>
107 <entry>__u32</entry>
108 <entry><structfield>sequence</structfield></entry>
109 <entry>The sequence number is automatically assigned by the CEC
110 framework for all transmitted messages. It can be later used by the
111 framework to generate an event if a reply for a message was
112 requested and the message was transmitted in a non-blocking mode.
113 </entry>
114 </row>
115 <row>
116 <entry>__u32</entry>
117 <entry><structfield>flags</structfield></entry>
118 <entry>Flags. No flags are defined yet, so set this to 0.</entry>
119 </row>
120 <row>
121 <entry>__u8</entry>
122 <entry><structfield>rx_status</structfield></entry>
123 <entry>The status bits of the received message. See <xref linkend="cec-rx-status" />
124 for the possible status values. It is 0 if this message was transmitted, not
125 received, unless this is the reply to a transmitted message. In that case both
126 <structfield>rx_status</structfield> and <structfield>tx_status</structfield>
127 are set.</entry>
128 </row>
129 <row>
130 <entry>__u8</entry>
131 <entry><structfield>tx_status</structfield></entry>
132 <entry>The status bits of the transmitted message. See <xref linkend="cec-tx-status" />
133 for the possible status values. It is 0 if this messages was received, not
134 transmitted.</entry>
135 </row>
136 <row>
137 <entry>__u8</entry>
138 <entry><structfield>msg</structfield>[16]</entry>
139 <entry>The message payload. For <constant>CEC_TRANSMIT</constant> this
140 is filled in by the application. The driver will fill this in for
141 <constant>CEC_RECEIVE</constant> and for <constant>CEC_TRANSMIT</constant>
142 it will be filled in with the payload of the reply message if
143 <structfield>reply</structfield> was set.</entry>
144 </row>
145 <row>
146 <entry>__u8</entry>
147 <entry><structfield>reply</structfield></entry>
148 <entry>Wait until this message is replied. If <structfield>reply</structfield>
149 is 0 and the <structfield>timeout</structfield> is 0, then don't wait for a reply but
150 return after transmitting the message. If there was an error as indicated by a non-zero
151 <structfield>tx_status</structfield> field, then <structfield>reply</structfield> and
152 <structfield>timeout</structfield> are both set to 0 by the driver. Ignored by
153 <constant>CEC_RECEIVE</constant>. The case where <structfield>reply</structfield> is 0
154 (this is the opcode for the Feature Abort message) and <structfield>timeout</structfield>
155 is non-zero is specifically allowed to send a message and wait up to <structfield>timeout</structfield>
156 milliseconds for a Feature Abort reply. In this case <structfield>rx_status</structfield>
157 will either be set to <constant>CEC_RX_STATUS_TIMEOUT</constant> or
158 <constant>CEC_RX_STATUS_FEATURE_ABORT</constant>.</entry>
159 </row>
160 <row>
161 <entry>__u8</entry>
162 <entry><structfield>tx_arb_lost_cnt</structfield></entry>
163 <entry>A counter of the number of transmit attempts that resulted in the
164 Arbitration Lost error. This is only set if the hardware supports this, otherwise
165 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_ARB_LOST</constant>
166 status bit is set.</entry>
167 </row>
168 <row>
169 <entry>__u8</entry>
170 <entry><structfield>tx_nack_cnt</structfield></entry>
171 <entry>A counter of the number of transmit attempts that resulted in the
172 Not Acknowledged error. This is only set if the hardware supports this, otherwise
173 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_NACK</constant>
174 status bit is set.</entry>
175 </row>
176 <row>
177 <entry>__u8</entry>
178 <entry><structfield>tx_low_drive_cnt</structfield></entry>
179 <entry>A counter of the number of transmit attempts that resulted in the
180 Arbitration Lost error. This is only set if the hardware supports this, otherwise
181 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_LOW_DRIVE</constant>
182 status bit is set.</entry>
183 </row>
184 <row>
185 <entry>__u8</entry>
186 <entry><structfield>tx_error_cnt</structfield></entry>
187 <entry>A counter of the number of transmit errors other than Arbitration Lost
188 or Not Acknowledged. This is only set if the hardware supports this, otherwise
189 it is always 0. This counter is only valid if the <constant>CEC_TX_STATUS_ERROR</constant>
190 status bit is set.</entry>
191 </row>
192 </tbody>
193 </tgroup>
194 </table>
195
196 <table pgwide="1" frame="none" id="cec-tx-status">
197 <title>CEC Transmit Status</title>
198 <tgroup cols="3">
199 &cs-def;
200 <tbody valign="top">
201 <row>
202 <entry><constant>CEC_TX_STATUS_OK</constant></entry>
203 <entry>0x01</entry>
204 <entry>The message was transmitted successfully. This is mutually exclusive with
205 <constant>CEC_TX_STATUS_MAX_RETRIES</constant>. Other bits can still be set if
206 earlier attempts met with failure before the transmit was eventually successful.</entry>
207 </row>
208 <row>
209 <entry><constant>CEC_TX_STATUS_ARB_LOST</constant></entry>
210 <entry>0x02</entry>
211 <entry>CEC line arbitration was lost.</entry>
212 </row>
213 <row>
214 <entry><constant>CEC_TX_STATUS_NACK</constant></entry>
215 <entry>0x04</entry>
216 <entry>Message was not acknowledged.</entry>
217 </row>
218 <row>
219 <entry><constant>CEC_TX_STATUS_LOW_DRIVE</constant></entry>
220 <entry>0x08</entry>
221 <entry>Low drive was detected on the CEC bus. This indicates that a follower
222 detected an error on the bus and requests a retransmission.</entry>
223 </row>
224 <row>
225 <entry><constant>CEC_TX_STATUS_ERROR</constant></entry>
226 <entry>0x10</entry>
227 <entry>Some error occurred. This is used for any errors that do not
228 fit the previous two, either because the hardware could not tell
229 which error occurred, or because the hardware tested for other conditions
230 besides those two.</entry>
231 </row>
232 <row>
233 <entry><constant>CEC_TX_STATUS_MAX_RETRIES</constant></entry>
234 <entry>0x20</entry>
235 <entry>The transmit failed after one or more retries. This status bit is mutually
236 exclusive with <constant>CEC_TX_STATUS_OK</constant>. Other bits can still be set
237 to explain which failures were seen.</entry>
238 </row>
239 </tbody>
240 </tgroup>
241 </table>
242
243 <table pgwide="1" frame="none" id="cec-rx-status">
244 <title>CEC Receive Status</title>
245 <tgroup cols="3">
246 &cs-def;
247 <tbody valign="top">
248 <row>
249 <entry><constant>CEC_RX_STATUS_OK</constant></entry>
250 <entry>0x01</entry>
251 <entry>The message was received successfully.</entry>
252 </row>
253 <row>
254 <entry><constant>CEC_RX_STATUS_TIMEOUT</constant></entry>
255 <entry>0x02</entry>
256 <entry>The reply to an earlier transmitted message timed out.</entry>
257 </row>
258 <row>
259 <entry><constant>CEC_RX_STATUS_FEATURE_ABORT</constant></entry>
260 <entry>0x04</entry>
261 <entry>The message was received successfully but the reply was
262 <constant>CEC_MSG_FEATURE_ABORT</constant>. This status is only
263 set if this message was the reply to an earlier transmitted
264 message.</entry>
265 </row>
266 </tbody>
267 </tgroup>
268 </table>
269 </refsect1>
270
271 <refsect1>
272 &return-value;
273 </refsect1>
274</refentry>
diff --git a/Documentation/DocBook/media/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml
deleted file mode 100644
index 8b5e014224d6..000000000000
--- a/Documentation/DocBook/media/v4l/common.xml
+++ /dev/null
@@ -1,1102 +0,0 @@
1 <title>Common API Elements</title>
2
3 <para>Programming a V4L2 device consists of these
4steps:</para>
5
6 <itemizedlist>
7 <listitem>
8 <para>Opening the device</para>
9 </listitem>
10 <listitem>
11 <para>Changing device properties, selecting a video and audio
12input, video standard, picture brightness a.&nbsp;o.</para>
13 </listitem>
14 <listitem>
15 <para>Negotiating a data format</para>
16 </listitem>
17 <listitem>
18 <para>Negotiating an input/output method</para>
19 </listitem>
20 <listitem>
21 <para>The actual input/output loop</para>
22 </listitem>
23 <listitem>
24 <para>Closing the device</para>
25 </listitem>
26 </itemizedlist>
27
28 <para>In practice most steps are optional and can be executed out of
29order. It depends on the V4L2 device type, you can read about the
30details in <xref linkend="devices" />. In this chapter we will discuss
31the basic concepts applicable to all devices.</para>
32
33 <section id="open">
34 <title>Opening and Closing Devices</title>
35
36 <section>
37 <title>Device Naming</title>
38
39 <para>V4L2 drivers are implemented as kernel modules, loaded
40manually by the system administrator or automatically when a device is
41first discovered. The driver modules plug into the "videodev" kernel
42module. It provides helper functions and a common application
43interface specified in this document.</para>
44
45 <para>Each driver thus loaded registers one or more device nodes
46with major number 81 and a minor number between 0 and 255. Minor numbers
47are allocated dynamically unless the kernel is compiled with the kernel
48option CONFIG_VIDEO_FIXED_MINOR_RANGES. In that case minor numbers are
49allocated in ranges depending on the device node type (video, radio, etc.).</para>
50
51 <para>Many drivers support "video_nr", "radio_nr" or "vbi_nr"
52module options to select specific video/radio/vbi node numbers. This allows
53the user to request that the device node is named e.g. /dev/video5 instead
54of leaving it to chance. When the driver supports multiple devices of the same
55type more than one device node number can be assigned, separated by commas:
56 <informalexample>
57 <screen>
58&gt; modprobe mydriver video_nr=0,1 radio_nr=0,1</screen>
59 </informalexample></para>
60
61 <para>In <filename>/etc/modules.conf</filename> this may be
62written as: <informalexample>
63 <screen>
64options mydriver video_nr=0,1 radio_nr=0,1
65 </screen>
66 </informalexample> When no device node number is given as module
67option the driver supplies a default.</para>
68
69 <para>Normally udev will create the device nodes in /dev automatically
70for you. If udev is not installed, then you need to enable the
71CONFIG_VIDEO_FIXED_MINOR_RANGES kernel option in order to be able to correctly
72relate a minor number to a device node number. I.e., you need to be certain
73that minor number 5 maps to device node name video5. With this kernel option
74different device types have different minor number ranges. These ranges are
75listed in <xref linkend="devices" />.
76</para>
77
78 <para>The creation of character special files (with
79<application>mknod</application>) is a privileged operation and
80devices cannot be opened by major and minor number. That means
81applications cannot <emphasis>reliable</emphasis> scan for loaded or
82installed drivers. The user must enter a device name, or the
83application can try the conventional device names.</para>
84 </section>
85
86 <section id="related">
87 <title>Related Devices</title>
88
89 <para>Devices can support several functions. For example
90video capturing, VBI capturing and radio support.</para>
91
92 <para>The V4L2 API creates different nodes for each of these functions.</para>
93
94 <para>The V4L2 API was designed with the idea that one device node could support
95all functions. However, in practice this never worked: this 'feature'
96was never used by applications and many drivers did not support it and if
97they did it was certainly never tested. In addition, switching a device
98node between different functions only works when using the streaming I/O
99API, not with the read()/write() API.</para>
100
101 <para>Today each device node supports just one function.</para>
102
103 <para>Besides video input or output the hardware may also
104support audio sampling or playback. If so, these functions are
105implemented as ALSA PCM devices with optional ALSA audio mixer
106devices.</para>
107
108 <para>One problem with all these devices is that the V4L2 API
109makes no provisions to find these related devices. Some really
110complex devices use the Media Controller (see <xref linkend="media_controller" />)
111which can be used for this purpose. But most drivers do not use it,
112and while some code exists that uses sysfs to discover related devices
113(see libmedia_dev in the <ulink url="http://git.linuxtv.org/cgit.cgi/v4l-utils.git/">v4l-utils</ulink>
114git repository), there is no library yet that can provide a single API towards
115both Media Controller-based devices and devices that do not use the Media Controller.
116If you want to work on this please write to the linux-media mailing list: &v4l-ml;.</para>
117 </section>
118
119 <section>
120 <title>Multiple Opens</title>
121
122 <para>V4L2 devices can be opened more than once.<footnote><para>
123There are still some old and obscure drivers that have not been updated to
124allow for multiple opens. This implies that for such drivers &func-open; can
125return an &EBUSY; when the device is already in use.</para></footnote>
126When this is supported by the driver, users can for example start a
127"panel" application to change controls like brightness or audio
128volume, while another application captures video and audio. In other words, panel
129applications are comparable to an ALSA audio mixer application.
130Just opening a V4L2 device should not change the state of the device.<footnote>
131<para>Unfortunately, opening a radio device often switches the state of the
132device to radio mode in many drivers. This behavior should be fixed eventually
133as it violates the V4L2 specification.</para></footnote></para>
134
135 <para>Once an application has allocated the memory buffers needed for
136streaming data (by calling the &VIDIOC-REQBUFS; or &VIDIOC-CREATE-BUFS; ioctls,
137or implicitly by calling the &func-read; or &func-write; functions) that
138application (filehandle) becomes the owner of the device. It is no longer
139allowed to make changes that would affect the buffer sizes (e.g. by calling
140the &VIDIOC-S-FMT; ioctl) and other applications are no longer allowed to allocate
141buffers or start or stop streaming. The &EBUSY; will be returned instead.</para>
142
143 <para>Merely opening a V4L2 device does not grant exclusive
144access.<footnote>
145 <para>Drivers could recognize the
146<constant>O_EXCL</constant> open flag. Presently this is not required,
147so applications cannot know if it really works.</para>
148 </footnote> Initiating data exchange however assigns the right
149to read or write the requested type of data, and to change related
150properties, to this file descriptor. Applications can request
151additional access privileges using the priority mechanism described in
152<xref linkend="app-pri" />.</para>
153 </section>
154
155 <section>
156 <title>Shared Data Streams</title>
157
158 <para>V4L2 drivers should not support multiple applications
159reading or writing the same data stream on a device by copying
160buffers, time multiplexing or similar means. This is better handled by
161a proxy application in user space.</para>
162 </section>
163
164 <section>
165 <title>Functions</title>
166
167 <para>To open and close V4L2 devices applications use the
168&func-open; and &func-close; function, respectively. Devices are
169programmed using the &func-ioctl; function as explained in the
170following sections.</para>
171 </section>
172 </section>
173
174 <section id="querycap">
175 <title>Querying Capabilities</title>
176
177 <para>Because V4L2 covers a wide variety of devices not all
178aspects of the API are equally applicable to all types of devices.
179Furthermore devices of the same type have different capabilities and
180this specification permits the omission of a few complicated and less
181important parts of the API.</para>
182
183 <para>The &VIDIOC-QUERYCAP; ioctl is available to check if the kernel
184device is compatible with this specification, and to query the <link
185linkend="devices">functions</link> and <link linkend="io">I/O
186methods</link> supported by the device.</para>
187
188 <para>Starting with kernel version 3.1, VIDIOC-QUERYCAP will return the
189V4L2 API version used by the driver, with generally matches the Kernel version.
190There's no need of using &VIDIOC-QUERYCAP; to check if a specific ioctl is
191supported, the V4L2 core now returns ENOTTY if a driver doesn't provide
192support for an ioctl.</para>
193
194 <para>Other features can be queried
195by calling the respective ioctl, for example &VIDIOC-ENUMINPUT;
196to learn about the number, types and names of video connectors on the
197device. Although abstraction is a major objective of this API, the
198&VIDIOC-QUERYCAP; ioctl also allows driver specific applications to reliably identify
199the driver.</para>
200
201 <para>All V4L2 drivers must support
202<constant>VIDIOC_QUERYCAP</constant>. Applications should always call
203this ioctl after opening the device.</para>
204 </section>
205
206 <section id="app-pri">
207 <title>Application Priority</title>
208
209 <para>When multiple applications share a device it may be
210desirable to assign them different priorities. Contrary to the
211traditional "rm -rf /" school of thought a video recording application
212could for example block other applications from changing video
213controls or switching the current TV channel. Another objective is to
214permit low priority applications working in background, which can be
215preempted by user controlled applications and automatically regain
216control of the device at a later time.</para>
217
218 <para>Since these features cannot be implemented entirely in user
219space V4L2 defines the &VIDIOC-G-PRIORITY; and &VIDIOC-S-PRIORITY;
220ioctls to request and query the access priority associate with a file
221descriptor. Opening a device assigns a medium priority, compatible
222with earlier versions of V4L2 and drivers not supporting these ioctls.
223Applications requiring a different priority will usually call
224<constant>VIDIOC_S_PRIORITY</constant> after verifying the device with
225the &VIDIOC-QUERYCAP; ioctl.</para>
226
227 <para>Ioctls changing driver properties, such as &VIDIOC-S-INPUT;,
228return an &EBUSY; after another application obtained higher priority.</para>
229 </section>
230
231 <section id="video">
232 <title>Video Inputs and Outputs</title>
233
234 <para>Video inputs and outputs are physical connectors of a
235device. These can be for example RF connectors (antenna/cable), CVBS
236a.k.a. Composite Video, S-Video or RGB connectors. Video and VBI
237capture devices have inputs. Video and VBI output devices have outputs,
238at least one each. Radio devices have no video inputs or outputs.</para>
239
240 <para>To learn about the number and attributes of the
241available inputs and outputs applications can enumerate them with the
242&VIDIOC-ENUMINPUT; and &VIDIOC-ENUMOUTPUT; ioctl, respectively. The
243&v4l2-input; returned by the <constant>VIDIOC_ENUMINPUT</constant>
244ioctl also contains signal status information applicable when the
245current video input is queried.</para>
246
247 <para>The &VIDIOC-G-INPUT; and &VIDIOC-G-OUTPUT; ioctls return the
248index of the current video input or output. To select a different
249input or output applications call the &VIDIOC-S-INPUT; and
250&VIDIOC-S-OUTPUT; ioctls. Drivers must implement all the input ioctls
251when the device has one or more inputs, all the output ioctls when the
252device has one or more outputs.</para>
253
254 <example>
255 <title>Information about the current video input</title>
256
257 <programlisting>
258&v4l2-input; input;
259int index;
260
261if (-1 == ioctl(fd, &VIDIOC-G-INPUT;, &amp;index)) {
262 perror("VIDIOC_G_INPUT");
263 exit(EXIT_FAILURE);
264}
265
266memset(&amp;input, 0, sizeof(input));
267input.index = index;
268
269if (-1 == ioctl(fd, &VIDIOC-ENUMINPUT;, &amp;input)) {
270 perror("VIDIOC_ENUMINPUT");
271 exit(EXIT_FAILURE);
272}
273
274printf("Current input: %s\n", input.name);
275 </programlisting>
276 </example>
277
278 <example>
279 <title>Switching to the first video input</title>
280
281 <programlisting>
282int index;
283
284index = 0;
285
286if (-1 == ioctl(fd, &VIDIOC-S-INPUT;, &amp;index)) {
287 perror("VIDIOC_S_INPUT");
288 exit(EXIT_FAILURE);
289}
290 </programlisting>
291 </example>
292 </section>
293
294 <section id="audio">
295 <title>Audio Inputs and Outputs</title>
296
297 <para>Audio inputs and outputs are physical connectors of a
298device. Video capture devices have inputs, output devices have
299outputs, zero or more each. Radio devices have no audio inputs or
300outputs. They have exactly one tuner which in fact
301<emphasis>is</emphasis> an audio source, but this API associates
302tuners with video inputs or outputs only, and radio devices have
303none of these.<footnote>
304 <para>Actually &v4l2-audio; ought to have a
305<structfield>tuner</structfield> field like &v4l2-input;, not only
306making the API more consistent but also permitting radio devices with
307multiple tuners.</para>
308 </footnote> A connector on a TV card to loop back the received
309audio signal to a sound card is not considered an audio output.</para>
310
311 <para>Audio and video inputs and outputs are associated. Selecting
312a video source also selects an audio source. This is most evident when
313the video and audio source is a tuner. Further audio connectors can
314combine with more than one video input or output. Assumed two
315composite video inputs and two audio inputs exist, there may be up to
316four valid combinations. The relation of video and audio connectors
317is defined in the <structfield>audioset</structfield> field of the
318respective &v4l2-input; or &v4l2-output;, where each bit represents
319the index number, starting at zero, of one audio input or output.</para>
320
321 <para>To learn about the number and attributes of the
322available inputs and outputs applications can enumerate them with the
323&VIDIOC-ENUMAUDIO; and &VIDIOC-ENUMAUDOUT; ioctl, respectively. The
324&v4l2-audio; returned by the <constant>VIDIOC_ENUMAUDIO</constant> ioctl
325also contains signal status information applicable when the current
326audio input is queried.</para>
327
328 <para>The &VIDIOC-G-AUDIO; and &VIDIOC-G-AUDOUT; ioctls report
329the current audio input and output, respectively. Note that, unlike
330&VIDIOC-G-INPUT; and &VIDIOC-G-OUTPUT; these ioctls return a structure
331as <constant>VIDIOC_ENUMAUDIO</constant> and
332<constant>VIDIOC_ENUMAUDOUT</constant> do, not just an index.</para>
333
334 <para>To select an audio input and change its properties
335applications call the &VIDIOC-S-AUDIO; ioctl. To select an audio
336output (which presently has no changeable properties) applications
337call the &VIDIOC-S-AUDOUT; ioctl.</para>
338
339 <para>Drivers must implement all audio input ioctls when the device
340has multiple selectable audio inputs, all audio output ioctls when the
341device has multiple selectable audio outputs. When the device has any
342audio inputs or outputs the driver must set the <constant>V4L2_CAP_AUDIO</constant>
343flag in the &v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl.</para>
344
345 <example>
346 <title>Information about the current audio input</title>
347
348 <programlisting>
349&v4l2-audio; audio;
350
351memset(&amp;audio, 0, sizeof(audio));
352
353if (-1 == ioctl(fd, &VIDIOC-G-AUDIO;, &amp;audio)) {
354 perror("VIDIOC_G_AUDIO");
355 exit(EXIT_FAILURE);
356}
357
358printf("Current input: %s\n", audio.name);
359 </programlisting>
360 </example>
361
362 <example>
363 <title>Switching to the first audio input</title>
364
365 <programlisting>
366&v4l2-audio; audio;
367
368memset(&amp;audio, 0, sizeof(audio)); /* clear audio.mode, audio.reserved */
369
370audio.index = 0;
371
372if (-1 == ioctl(fd, &VIDIOC-S-AUDIO;, &amp;audio)) {
373 perror("VIDIOC_S_AUDIO");
374 exit(EXIT_FAILURE);
375}
376 </programlisting>
377 </example>
378 </section>
379
380 <section id="tuner">
381 <title>Tuners and Modulators</title>
382
383 <section>
384 <title>Tuners</title>
385
386 <para>Video input devices can have one or more tuners
387demodulating a RF signal. Each tuner is associated with one or more
388video inputs, depending on the number of RF connectors on the tuner.
389The <structfield>type</structfield> field of the respective
390&v4l2-input; returned by the &VIDIOC-ENUMINPUT; ioctl is set to
391<constant>V4L2_INPUT_TYPE_TUNER</constant> and its
392<structfield>tuner</structfield> field contains the index number of
393the tuner.</para>
394
395 <para>Radio input devices have exactly one tuner with index zero, no
396video inputs.</para>
397
398 <para>To query and change tuner properties applications use the
399&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; ioctls, respectively. The
400&v4l2-tuner; returned by <constant>VIDIOC_G_TUNER</constant> also
401contains signal status information applicable when the tuner of the
402current video or radio input is queried. Note that
403<constant>VIDIOC_S_TUNER</constant> does not switch the current tuner,
404when there is more than one at all. The tuner is solely determined by
405the current video input. Drivers must support both ioctls and set the
406<constant>V4L2_CAP_TUNER</constant> flag in the &v4l2-capability;
407returned by the &VIDIOC-QUERYCAP; ioctl when the device has one or
408more tuners.</para>
409 </section>
410
411 <section>
412 <title>Modulators</title>
413
414 <para>Video output devices can have one or more modulators, uh,
415modulating a video signal for radiation or connection to the antenna
416input of a TV set or video recorder. Each modulator is associated with
417one or more video outputs, depending on the number of RF connectors on
418the modulator. The <structfield>type</structfield> field of the
419respective &v4l2-output; returned by the &VIDIOC-ENUMOUTPUT; ioctl is
420set to <constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> and its
421<structfield>modulator</structfield> field contains the index number
422of the modulator.</para>
423
424 <para>Radio output devices have exactly one modulator with index
425zero, no video outputs.</para>
426
427 <para>A video or radio device cannot support both a tuner and a
428modulator. Two separate device nodes will have to be used for such
429hardware, one that supports the tuner functionality and one that supports
430the modulator functionality. The reason is a limitation with the
431&VIDIOC-S-FREQUENCY; ioctl where you cannot specify whether the frequency
432is for a tuner or a modulator.</para>
433
434 <para>To query and change modulator properties applications use
435the &VIDIOC-G-MODULATOR; and &VIDIOC-S-MODULATOR; ioctl. Note that
436<constant>VIDIOC_S_MODULATOR</constant> does not switch the current
437modulator, when there is more than one at all. The modulator is solely
438determined by the current video output. Drivers must support both
439ioctls and set the <constant>V4L2_CAP_MODULATOR</constant> flag in
440the &v4l2-capability; returned by the &VIDIOC-QUERYCAP; ioctl when the
441device has one or more modulators.</para>
442 </section>
443
444 <section>
445 <title>Radio Frequency</title>
446
447 <para>To get and set the tuner or modulator radio frequency
448applications use the &VIDIOC-G-FREQUENCY; and &VIDIOC-S-FREQUENCY;
449ioctl which both take a pointer to a &v4l2-frequency;. These ioctls
450are used for TV and radio devices alike. Drivers must support both
451ioctls when the tuner or modulator ioctls are supported, or
452when the device is a radio device.</para>
453 </section>
454 </section>
455
456 <section id="standard">
457 <title>Video Standards</title>
458
459 <para>Video devices typically support one or more different video
460standards or variations of standards. Each video input and output may
461support another set of standards. This set is reported by the
462<structfield>std</structfield> field of &v4l2-input; and
463&v4l2-output; returned by the &VIDIOC-ENUMINPUT; and
464&VIDIOC-ENUMOUTPUT; ioctls, respectively.</para>
465
466 <para>V4L2 defines one bit for each analog video standard
467currently in use worldwide, and sets aside bits for driver defined
468standards, &eg; hybrid standards to watch NTSC video tapes on PAL TVs
469and vice versa. Applications can use the predefined bits to select a
470particular standard, although presenting the user a menu of supported
471standards is preferred. To enumerate and query the attributes of the
472supported standards applications use the &VIDIOC-ENUMSTD; ioctl.</para>
473
474 <para>Many of the defined standards are actually just variations
475of a few major standards. The hardware may in fact not distinguish
476between them, or do so internal and switch automatically. Therefore
477enumerated standards also contain sets of one or more standard
478bits.</para>
479
480 <para>Assume a hypothetic tuner capable of demodulating B/PAL,
481G/PAL and I/PAL signals. The first enumerated standard is a set of B
482and G/PAL, switched automatically depending on the selected radio
483frequency in UHF or VHF band. Enumeration gives a "PAL-B/G" or "PAL-I"
484choice. Similar a Composite input may collapse standards, enumerating
485"PAL-B/G/H/I", "NTSC-M" and "SECAM-D/K".<footnote>
486 <para>Some users are already confused by technical terms PAL,
487NTSC and SECAM. There is no point asking them to distinguish between
488B, G, D, or K when the software or hardware can do that
489automatically.</para>
490 </footnote></para>
491
492 <para>To query and select the standard used by the current video
493input or output applications call the &VIDIOC-G-STD; and
494&VIDIOC-S-STD; ioctl, respectively. The <emphasis>received</emphasis>
495standard can be sensed with the &VIDIOC-QUERYSTD; ioctl. Note that the
496parameter of all these ioctls is a pointer to a &v4l2-std-id; type
497(a standard set), <emphasis>not</emphasis> an index into the standard
498enumeration. Drivers must implement all video standard ioctls
499when the device has one or more video inputs or outputs.</para>
500
501 <para>Special rules apply to devices such as USB cameras where the notion of video
502standards makes little sense. More generally for any capture or output device
503which is: <itemizedlist>
504 <listitem>
505 <para>incapable of capturing fields or frames at the nominal
506rate of the video standard, or</para>
507 </listitem>
508 <listitem>
509 <para>that does not support the video standard formats at all.</para>
510 </listitem>
511 </itemizedlist> Here the driver shall set the
512<structfield>std</structfield> field of &v4l2-input; and &v4l2-output;
513to zero and the <constant>VIDIOC_G_STD</constant>,
514<constant>VIDIOC_S_STD</constant>,
515<constant>VIDIOC_QUERYSTD</constant> and
516<constant>VIDIOC_ENUMSTD</constant> ioctls shall return the
517&ENOTTY; or the &EINVAL;.</para>
518 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
519<xref linkend="output-capabilities"/> flags to determine whether the video standard ioctls
520can be used with the given input or output.</para>
521
522 <example>
523 <title>Information about the current video standard</title>
524
525 <programlisting>
526&v4l2-std-id; std_id;
527&v4l2-standard; standard;
528
529if (-1 == ioctl(fd, &VIDIOC-G-STD;, &amp;std_id)) {
530 /* Note when VIDIOC_ENUMSTD always returns ENOTTY this
531 is no video device or it falls under the USB exception,
532 and VIDIOC_G_STD returning ENOTTY is no error. */
533
534 perror("VIDIOC_G_STD");
535 exit(EXIT_FAILURE);
536}
537
538memset(&amp;standard, 0, sizeof(standard));
539standard.index = 0;
540
541while (0 == ioctl(fd, &VIDIOC-ENUMSTD;, &amp;standard)) {
542 if (standard.id &amp; std_id) {
543 printf("Current video standard: %s\n", standard.name);
544 exit(EXIT_SUCCESS);
545 }
546
547 standard.index++;
548}
549
550/* EINVAL indicates the end of the enumeration, which cannot be
551 empty unless this device falls under the USB exception. */
552
553if (errno == EINVAL || standard.index == 0) {
554 perror("VIDIOC_ENUMSTD");
555 exit(EXIT_FAILURE);
556}
557 </programlisting>
558 </example>
559
560 <example>
561 <title>Listing the video standards supported by the current
562input</title>
563
564 <programlisting>
565&v4l2-input; input;
566&v4l2-standard; standard;
567
568memset(&amp;input, 0, sizeof(input));
569
570if (-1 == ioctl(fd, &VIDIOC-G-INPUT;, &amp;input.index)) {
571 perror("VIDIOC_G_INPUT");
572 exit(EXIT_FAILURE);
573}
574
575if (-1 == ioctl(fd, &VIDIOC-ENUMINPUT;, &amp;input)) {
576 perror("VIDIOC_ENUM_INPUT");
577 exit(EXIT_FAILURE);
578}
579
580printf("Current input %s supports:\n", input.name);
581
582memset(&amp;standard, 0, sizeof(standard));
583standard.index = 0;
584
585while (0 == ioctl(fd, &VIDIOC-ENUMSTD;, &amp;standard)) {
586 if (standard.id &amp; input.std)
587 printf("%s\n", standard.name);
588
589 standard.index++;
590}
591
592/* EINVAL indicates the end of the enumeration, which cannot be
593 empty unless this device falls under the USB exception. */
594
595if (errno != EINVAL || standard.index == 0) {
596 perror("VIDIOC_ENUMSTD");
597 exit(EXIT_FAILURE);
598}
599 </programlisting>
600 </example>
601
602 <example>
603 <title>Selecting a new video standard</title>
604
605 <programlisting>
606&v4l2-input; input;
607&v4l2-std-id; std_id;
608
609memset(&amp;input, 0, sizeof(input));
610
611if (-1 == ioctl(fd, &VIDIOC-G-INPUT;, &amp;input.index)) {
612 perror("VIDIOC_G_INPUT");
613 exit(EXIT_FAILURE);
614}
615
616if (-1 == ioctl(fd, &VIDIOC-ENUMINPUT;, &amp;input)) {
617 perror("VIDIOC_ENUM_INPUT");
618 exit(EXIT_FAILURE);
619}
620
621if (0 == (input.std &amp; V4L2_STD_PAL_BG)) {
622 fprintf(stderr, "Oops. B/G PAL is not supported.\n");
623 exit(EXIT_FAILURE);
624}
625
626/* Note this is also supposed to work when only B
627 <emphasis>or</emphasis> G/PAL is supported. */
628
629std_id = V4L2_STD_PAL_BG;
630
631if (-1 == ioctl(fd, &VIDIOC-S-STD;, &amp;std_id)) {
632 perror("VIDIOC_S_STD");
633 exit(EXIT_FAILURE);
634}
635 </programlisting>
636 </example>
637 </section>
638 <section id="dv-timings">
639 <title>Digital Video (DV) Timings</title>
640 <para>
641 The video standards discussed so far have been dealing with Analog TV and the
642corresponding video timings. Today there are many more different hardware interfaces
643such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
644video signals and there is a need to extend the API to select the video timings
645for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
646the limited bits available, a new set of ioctls was added to set/get video timings at
647the input and output.</para>
648
649 <para>These ioctls deal with the detailed digital video timings that define
650each video format. This includes parameters such as the active video width and height,
651signal polarities, frontporches, backporches, sync widths etc. The <filename>linux/v4l2-dv-timings.h</filename>
652header can be used to get the timings of the formats in the <xref linkend="cea861" /> and
653<xref linkend="vesadmt" /> standards.
654 </para>
655
656 <para>To enumerate and query the attributes of the DV timings supported by a device
657 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
658 To set DV timings for the device applications use the
659&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
660&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
661use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
662 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
663<xref linkend="output-capabilities"/> flags to determine whether the digital video ioctls
664can be used with the given input or output.</para>
665 </section>
666
667 &sub-controls;
668
669 <section id="format">
670 <title>Data Formats</title>
671
672 <section>
673 <title>Data Format Negotiation</title>
674
675 <para>Different devices exchange different kinds of data with
676applications, for example video images, raw or sliced VBI data, RDS
677datagrams. Even within one kind many different formats are possible,
678in particular an abundance of image formats. Although drivers must
679provide a default and the selection persists across closing and
680reopening a device, applications should always negotiate a data format
681before engaging in data exchange. Negotiation means the application
682asks for a particular format and the driver selects and reports the
683best the hardware can do to satisfy the request. Of course
684applications can also just query the current selection.</para>
685
686 <para>A single mechanism exists to negotiate all data formats
687using the aggregate &v4l2-format; and the &VIDIOC-G-FMT; and
688&VIDIOC-S-FMT; ioctls. Additionally the &VIDIOC-TRY-FMT; ioctl can be
689used to examine what the hardware <emphasis>could</emphasis> do,
690without actually selecting a new data format. The data formats
691supported by the V4L2 API are covered in the respective device section
692in <xref linkend="devices" />. For a closer look at image formats see
693<xref linkend="pixfmt" />.</para>
694
695 <para>The <constant>VIDIOC_S_FMT</constant> ioctl is a major
696turning-point in the initialization sequence. Prior to this point
697multiple panel applications can access the same device concurrently to
698select the current input, change controls or modify other properties.
699The first <constant>VIDIOC_S_FMT</constant> assigns a logical stream
700(video data, VBI data etc.) exclusively to one file descriptor.</para>
701
702 <para>Exclusive means no other application, more precisely no
703other file descriptor, can grab this stream or change device
704properties inconsistent with the negotiated parameters. A video
705standard change for example, when the new standard uses a different
706number of scan lines, can invalidate the selected image format.
707Therefore only the file descriptor owning the stream can make
708invalidating changes. Accordingly multiple file descriptors which
709grabbed different logical streams prevent each other from interfering
710with their settings. When for example video overlay is about to start
711or already in progress, simultaneous video capturing may be restricted
712to the same cropping and image size.</para>
713
714 <para>When applications omit the
715<constant>VIDIOC_S_FMT</constant> ioctl its locking side effects are
716implied by the next step, the selection of an I/O method with the
717&VIDIOC-REQBUFS; ioctl or implicit with the first &func-read; or
718&func-write; call.</para>
719
720 <para>Generally only one logical stream can be assigned to a
721file descriptor, the exception being drivers permitting simultaneous
722video capturing and overlay using the same file descriptor for
723compatibility with V4L and earlier versions of V4L2. Switching the
724logical stream or returning into "panel mode" is possible by closing
725and reopening the device. Drivers <emphasis>may</emphasis> support a
726switch using <constant>VIDIOC_S_FMT</constant>.</para>
727
728 <para>All drivers exchanging data with
729applications must support the <constant>VIDIOC_G_FMT</constant> and
730<constant>VIDIOC_S_FMT</constant> ioctl. Implementation of the
731<constant>VIDIOC_TRY_FMT</constant> is highly recommended but
732optional.</para>
733 </section>
734
735 <section>
736 <title>Image Format Enumeration</title>
737
738 <para>Apart of the generic format negotiation functions
739a special ioctl to enumerate all image formats supported by video
740capture, overlay or output devices is available.<footnote>
741 <para>Enumerating formats an application has no a-priori
742knowledge of (otherwise it could explicitly ask for them and need not
743enumerate) seems useless, but there are applications serving as proxy
744between drivers and the actual video applications for which this is
745useful.</para>
746 </footnote></para>
747
748 <para>The &VIDIOC-ENUM-FMT; ioctl must be supported
749by all drivers exchanging image data with applications.</para>
750
751 <important>
752 <para>Drivers are not supposed to convert image formats in
753kernel space. They must enumerate only formats directly supported by
754the hardware. If necessary driver writers should publish an example
755conversion routine or library for integration into applications.</para>
756 </important>
757 </section>
758 </section>
759
760 &sub-planar-apis;
761
762 <section id="crop">
763 <title>Image Cropping, Insertion and Scaling</title>
764
765 <para>Some video capture devices can sample a subsection of the
766picture and shrink or enlarge it to an image of arbitrary size. We
767call these abilities cropping and scaling. Some video output devices
768can scale an image up or down and insert it at an arbitrary scan line
769and horizontal offset into a video signal.</para>
770
771 <para>Applications can use the following API to select an area in
772the video signal, query the default area and the hardware limits.
773<emphasis>Despite their name, the &VIDIOC-CROPCAP;, &VIDIOC-G-CROP;
774and &VIDIOC-S-CROP; ioctls apply to input as well as output
775devices.</emphasis></para>
776
777 <para>Scaling requires a source and a target. On a video capture
778or overlay device the source is the video signal, and the cropping
779ioctls determine the area actually sampled. The target are images
780read by the application or overlaid onto the graphics screen. Their
781size (and position for an overlay) is negotiated with the
782&VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctls.</para>
783
784 <para>On a video output device the source are the images passed in
785by the application, and their size is again negotiated with the
786<constant>VIDIOC_G/S_FMT</constant> ioctls, or may be encoded in a
787compressed video stream. The target is the video signal, and the
788cropping ioctls determine the area where the images are
789inserted.</para>
790
791 <para>Source and target rectangles are defined even if the device
792does not support scaling or the <constant>VIDIOC_G/S_CROP</constant>
793ioctls. Their size (and position where applicable) will be fixed in
794this case. <emphasis>All capture and output device must support the
795<constant>VIDIOC_CROPCAP</constant> ioctl such that applications can
796determine if scaling takes place.</emphasis></para>
797
798 <section>
799 <title>Cropping Structures</title>
800
801 <figure id="crop-scale">
802 <title>Image Cropping, Insertion and Scaling</title>
803 <mediaobject>
804 <imageobject>
805 <imagedata fileref="crop.pdf" format="PS" />
806 </imageobject>
807 <imageobject>
808 <imagedata fileref="crop.gif" format="GIF" />
809 </imageobject>
810 <textobject>
811 <phrase>The cropping, insertion and scaling process</phrase>
812 </textobject>
813 </mediaobject>
814 </figure>
815
816 <para>For capture devices the coordinates of the top left
817corner, width and height of the area which can be sampled is given by
818the <structfield>bounds</structfield> substructure of the
819&v4l2-cropcap; returned by the <constant>VIDIOC_CROPCAP</constant>
820ioctl. To support a wide range of hardware this specification does not
821define an origin or units. However by convention drivers should
822horizontally count unscaled samples relative to 0H (the leading edge
823of the horizontal sync pulse, see <xref linkend="vbi-hsync" />).
824Vertically ITU-R line
825numbers of the first field (<xref linkend="vbi-525" />, <xref
826linkend="vbi-625" />), multiplied by two if the driver can capture both
827fields.</para>
828
829 <para>The top left corner, width and height of the source
830rectangle, that is the area actually sampled, is given by &v4l2-crop;
831using the same coordinate system as &v4l2-cropcap;. Applications can
832use the <constant>VIDIOC_G_CROP</constant> and
833<constant>VIDIOC_S_CROP</constant> ioctls to get and set this
834rectangle. It must lie completely within the capture boundaries and
835the driver may further adjust the requested size and/or position
836according to hardware limitations.</para>
837
838 <para>Each capture device has a default source rectangle, given
839by the <structfield>defrect</structfield> substructure of
840&v4l2-cropcap;. The center of this rectangle shall align with the
841center of the active picture area of the video signal, and cover what
842the driver writer considers the complete picture. Drivers shall reset
843the source rectangle to the default when the driver is first loaded,
844but not later.</para>
845
846 <para>For output devices these structures and ioctls are used
847accordingly, defining the <emphasis>target</emphasis> rectangle where
848the images will be inserted into the video signal.</para>
849
850 </section>
851
852 <section>
853 <title>Scaling Adjustments</title>
854
855 <para>Video hardware can have various cropping, insertion and
856scaling limitations. It may only scale up or down, support only
857discrete scaling factors, or have different scaling abilities in
858horizontal and vertical direction. Also it may not support scaling at
859all. At the same time the &v4l2-crop; rectangle may have to be
860aligned, and both the source and target rectangles may have arbitrary
861upper and lower size limits. In particular the maximum
862<structfield>width</structfield> and <structfield>height</structfield>
863in &v4l2-crop; may be smaller than the
864&v4l2-cropcap;.<structfield>bounds</structfield> area. Therefore, as
865usual, drivers are expected to adjust the requested parameters and
866return the actual values selected.</para>
867
868 <para>Applications can change the source or the target rectangle
869first, as they may prefer a particular image size or a certain area in
870the video signal. If the driver has to adjust both to satisfy hardware
871limitations, the last requested rectangle shall take priority, and the
872driver should preferably adjust the opposite one. The &VIDIOC-TRY-FMT;
873ioctl however shall not change the driver state and therefore only
874adjust the requested rectangle.</para>
875
876 <para>Suppose scaling on a video capture device is restricted to
877a factor 1:1 or 2:1 in either direction and the target image size must
878be a multiple of 16&nbsp;&times;&nbsp;16 pixels. The source cropping
879rectangle is set to defaults, which are also the upper limit in this
880example, of 640&nbsp;&times;&nbsp;400 pixels at offset 0,&nbsp;0. An
881application requests an image size of 300&nbsp;&times;&nbsp;225
882pixels, assuming video will be scaled down from the "full picture"
883accordingly. The driver sets the image size to the closest possible
884values 304&nbsp;&times;&nbsp;224, then chooses the cropping rectangle
885closest to the requested size, that is 608&nbsp;&times;&nbsp;224
886(224&nbsp;&times;&nbsp;2:1 would exceed the limit 400). The offset
8870,&nbsp;0 is still valid, thus unmodified. Given the default cropping
888rectangle reported by <constant>VIDIOC_CROPCAP</constant> the
889application can easily propose another offset to center the cropping
890rectangle.</para>
891
892 <para>Now the application may insist on covering an area using a
893picture aspect ratio closer to the original request, so it asks for a
894cropping rectangle of 608&nbsp;&times;&nbsp;456 pixels. The present
895scaling factors limit cropping to 640&nbsp;&times;&nbsp;384, so the
896driver returns the cropping size 608&nbsp;&times;&nbsp;384 and adjusts
897the image size to closest possible 304&nbsp;&times;&nbsp;192.</para>
898
899 </section>
900
901 <section>
902 <title>Examples</title>
903
904 <para>Source and target rectangles shall remain unchanged across
905closing and reopening a device, such that piping data into or out of a
906device will work without special preparations. More advanced
907applications should ensure the parameters are suitable before starting
908I/O.</para>
909
910 <example>
911 <title>Resetting the cropping parameters</title>
912
913 <para>(A video capture device is assumed; change
914<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> for other
915devices.)</para>
916
917 <programlisting>
918&v4l2-cropcap; cropcap;
919&v4l2-crop; crop;
920
921memset (&amp;cropcap, 0, sizeof (cropcap));
922cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
923
924if (-1 == ioctl (fd, &VIDIOC-CROPCAP;, &amp;cropcap)) {
925 perror ("VIDIOC_CROPCAP");
926 exit (EXIT_FAILURE);
927}
928
929memset (&amp;crop, 0, sizeof (crop));
930crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
931crop.c = cropcap.defrect;
932
933/* Ignore if cropping is not supported (EINVAL). */
934
935if (-1 == ioctl (fd, &VIDIOC-S-CROP;, &amp;crop)
936 &amp;&amp; errno != EINVAL) {
937 perror ("VIDIOC_S_CROP");
938 exit (EXIT_FAILURE);
939}
940 </programlisting>
941 </example>
942
943 <example>
944 <title>Simple downscaling</title>
945
946 <para>(A video capture device is assumed.)</para>
947
948 <programlisting>
949&v4l2-cropcap; cropcap;
950&v4l2-format; format;
951
952reset_cropping_parameters ();
953
954/* Scale down to 1/4 size of full picture. */
955
956memset (&amp;format, 0, sizeof (format)); /* defaults */
957
958format.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
959
960format.fmt.pix.width = cropcap.defrect.width &gt;&gt; 1;
961format.fmt.pix.height = cropcap.defrect.height &gt;&gt; 1;
962format.fmt.pix.pixelformat = V4L2_PIX_FMT_YUYV;
963
964if (-1 == ioctl (fd, &VIDIOC-S-FMT;, &amp;format)) {
965 perror ("VIDIOC_S_FORMAT");
966 exit (EXIT_FAILURE);
967}
968
969/* We could check the actual image size now, the actual scaling factor
970 or if the driver can scale at all. */
971 </programlisting>
972 </example>
973
974 <example>
975 <title>Selecting an output area</title>
976
977 <programlisting>
978&v4l2-cropcap; cropcap;
979&v4l2-crop; crop;
980
981memset (&amp;cropcap, 0, sizeof (cropcap));
982cropcap.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
983
984if (-1 == ioctl (fd, VIDIOC_CROPCAP;, &amp;cropcap)) {
985 perror ("VIDIOC_CROPCAP");
986 exit (EXIT_FAILURE);
987}
988
989memset (&amp;crop, 0, sizeof (crop));
990
991crop.type = V4L2_BUF_TYPE_VIDEO_OUTPUT;
992crop.c = cropcap.defrect;
993
994/* Scale the width and height to 50 % of their original size
995 and center the output. */
996
997crop.c.width /= 2;
998crop.c.height /= 2;
999crop.c.left += crop.c.width / 2;
1000crop.c.top += crop.c.height / 2;
1001
1002/* Ignore if cropping is not supported (EINVAL). */
1003
1004if (-1 == ioctl (fd, VIDIOC_S_CROP, &amp;crop)
1005 &amp;&amp; errno != EINVAL) {
1006 perror ("VIDIOC_S_CROP");
1007 exit (EXIT_FAILURE);
1008}
1009</programlisting>
1010 </example>
1011
1012 <example>
1013 <title>Current scaling factor and pixel aspect</title>
1014
1015 <para>(A video capture device is assumed.)</para>
1016
1017 <programlisting>
1018&v4l2-cropcap; cropcap;
1019&v4l2-crop; crop;
1020&v4l2-format; format;
1021double hscale, vscale;
1022double aspect;
1023int dwidth, dheight;
1024
1025memset (&amp;cropcap, 0, sizeof (cropcap));
1026cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1027
1028if (-1 == ioctl (fd, &VIDIOC-CROPCAP;, &amp;cropcap)) {
1029 perror ("VIDIOC_CROPCAP");
1030 exit (EXIT_FAILURE);
1031}
1032
1033memset (&amp;crop, 0, sizeof (crop));
1034crop.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1035
1036if (-1 == ioctl (fd, &VIDIOC-G-CROP;, &amp;crop)) {
1037 if (errno != EINVAL) {
1038 perror ("VIDIOC_G_CROP");
1039 exit (EXIT_FAILURE);
1040 }
1041
1042 /* Cropping not supported. */
1043 crop.c = cropcap.defrect;
1044}
1045
1046memset (&amp;format, 0, sizeof (format));
1047format.fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
1048
1049if (-1 == ioctl (fd, &VIDIOC-G-FMT;, &amp;format)) {
1050 perror ("VIDIOC_G_FMT");
1051 exit (EXIT_FAILURE);
1052}
1053
1054/* The scaling applied by the driver. */
1055
1056hscale = format.fmt.pix.width / (double) crop.c.width;
1057vscale = format.fmt.pix.height / (double) crop.c.height;
1058
1059aspect = cropcap.pixelaspect.numerator /
1060 (double) cropcap.pixelaspect.denominator;
1061aspect = aspect * hscale / vscale;
1062
1063/* Devices following ITU-R BT.601 do not capture
1064 square pixels. For playback on a computer monitor
1065 we should scale the images to this size. */
1066
1067dwidth = format.fmt.pix.width / aspect;
1068dheight = format.fmt.pix.height;
1069 </programlisting>
1070 </example>
1071 </section>
1072 </section>
1073
1074 &sub-selection-api;
1075
1076 <section id="streaming-par">
1077 <title>Streaming Parameters</title>
1078
1079 <para>Streaming parameters are intended to optimize the video
1080capture process as well as I/O. Presently applications can request a
1081high quality capture mode with the &VIDIOC-S-PARM; ioctl.</para>
1082
1083 <para>The current video standard determines a nominal number of
1084frames per second. If less than this number of frames is to be
1085captured or output, applications can request frame skipping or
1086duplicating on the driver side. This is especially useful when using
1087the &func-read; or &func-write;, which are not augmented by timestamps
1088or sequence counters, and to avoid unnecessary data copying.</para>
1089
1090 <para>Finally these ioctls can be used to determine the number of
1091buffers used internally by a driver in read/write mode. For
1092implications see the section discussing the &func-read;
1093function.</para>
1094
1095 <para>To get and set the streaming parameters applications call
1096the &VIDIOC-G-PARM; and &VIDIOC-S-PARM; ioctl, respectively. They take
1097a pointer to a &v4l2-streamparm;, which contains a union holding
1098separate parameters for input and output devices.</para>
1099
1100 <para>These ioctls are optional, drivers need not implement
1101them. If so, they return the &EINVAL;.</para>
1102 </section>
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
deleted file mode 100644
index 82fa328abd58..000000000000
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ /dev/null
@@ -1,2723 +0,0 @@
1 <title>Changes</title>
2
3 <para>The following chapters document the evolution of the V4L2 API,
4errata or extensions. They are also intended to help application and
5driver writers to port or update their code.</para>
6
7 <section id="diff-v4l">
8 <title>Differences between V4L and V4L2</title>
9
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,
12developed independently by driver writers in prior years. Starting
13with Linux 2.5 the much improved V4L2 API replaces the V4L API.
14The support for the old V4L calls were removed from Kernel, but the
15library <xref linkend="libv4l" /> supports the conversion of a V4L
16API system call into a V4L2 one.</para>
17
18 <section>
19 <title>Opening and Closing Devices</title>
20
21 <para>For compatibility reasons the character device file names
22recommended for V4L2 video capture, overlay, radio and raw
23vbi capture devices did not change from those used by V4L. They are
24listed in <xref linkend="devices" /> and below in <xref
25 linkend="v4l-dev" />.</para>
26
27 <para>The teletext devices (minor range 192-223) have been removed in
28V4L2 and no longer exist. There is no hardware available anymore for handling
29pure teletext. Instead raw or sliced VBI is used.</para>
30
31 <para>The V4L <filename>videodev</filename> module automatically
32assigns minor numbers to drivers in load order, depending on the
33registered device type. We recommend that V4L2 drivers by default
34register devices with the same numbers, but the system administrator
35can assign arbitrary minor numbers using driver module options. The
36major device number remains 81.</para>
37
38 <table id="v4l-dev">
39 <title>V4L Device Types, Names and Numbers</title>
40 <tgroup cols="3">
41 <thead>
42 <row>
43 <entry>Device Type</entry>
44 <entry>File Name</entry>
45 <entry>Minor Numbers</entry>
46 </row>
47 </thead>
48 <tbody valign="top">
49 <row>
50 <entry>Video capture and overlay</entry>
51 <entry><para><filename>/dev/video</filename> and
52<filename>/dev/bttv0</filename><footnote> <para>According to
53Documentation/devices.txt these should be symbolic links to
54<filename>/dev/video0</filename>. Note the original bttv interface is
55not compatible with V4L or V4L2.</para> </footnote>,
56<filename>/dev/video0</filename> to
57<filename>/dev/video63</filename></para></entry>
58 <entry>0-63</entry>
59 </row>
60 <row>
61 <entry>Radio receiver</entry>
62 <entry><para><filename>/dev/radio</filename><footnote>
63 <para>According to
64<filename>Documentation/devices.txt</filename> a symbolic link to
65<filename>/dev/radio0</filename>.</para>
66 </footnote>, <filename>/dev/radio0</filename> to
67<filename>/dev/radio63</filename></para></entry>
68 <entry>64-127</entry>
69 </row>
70 <row>
71 <entry>Raw VBI capture</entry>
72 <entry><para><filename>/dev/vbi</filename>,
73<filename>/dev/vbi0</filename> to
74<filename>/dev/vbi31</filename></para></entry>
75 <entry>224-255</entry>
76 </row>
77 </tbody>
78 </tgroup>
79 </table>
80
81 <para>V4L prohibits (or used to prohibit) multiple opens of a
82device file. V4L2 drivers <emphasis>may</emphasis> support multiple
83opens, see <xref linkend="open" /> for details and consequences.</para>
84
85 <para>V4L drivers respond to V4L2 ioctls with an &EINVAL;.</para>
86 </section>
87
88 <section>
89 <title>Querying Capabilities</title>
90
91 <para>The V4L <constant>VIDIOCGCAP</constant> ioctl is
92equivalent to V4L2's &VIDIOC-QUERYCAP;.</para>
93
94 <para>The <structfield>name</structfield> field in struct
95<structname>video_capability</structname> became
96<structfield>card</structfield> in &v4l2-capability;,
97<structfield>type</structfield> was replaced by
98<structfield>capabilities</structfield>. Note V4L2 does not
99distinguish between device types like this, better think of basic
100video input, video output and radio devices supporting a set of
101related functions like video capturing, video overlay and VBI
102capturing. See <xref linkend="open" /> for an
103introduction.<informaltable>
104 <tgroup cols="3">
105 <thead>
106 <row>
107 <entry>struct
108<structname>video_capability</structname>
109<structfield>type</structfield></entry>
110 <entry>&v4l2-capability;
111<structfield>capabilities</structfield> flags</entry>
112 <entry>Purpose</entry>
113 </row>
114 </thead>
115 <tbody valign="top">
116 <row>
117 <entry><constant>VID_TYPE_CAPTURE</constant></entry>
118 <entry><constant>V4L2_CAP_VIDEO_CAPTURE</constant></entry>
119 <entry>The <link linkend="capture">video
120capture</link> interface is supported.</entry>
121 </row>
122 <row>
123 <entry><constant>VID_TYPE_TUNER</constant></entry>
124 <entry><constant>V4L2_CAP_TUNER</constant></entry>
125 <entry>The device has a <link linkend="tuner">tuner or
126modulator</link>.</entry>
127 </row>
128 <row>
129 <entry><constant>VID_TYPE_TELETEXT</constant></entry>
130 <entry><constant>V4L2_CAP_VBI_CAPTURE</constant></entry>
131 <entry>The <link linkend="raw-vbi">raw VBI
132capture</link> interface is supported.</entry>
133 </row>
134 <row>
135 <entry><constant>VID_TYPE_OVERLAY</constant></entry>
136 <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry>
137 <entry>The <link linkend="overlay">video
138overlay</link> interface is supported.</entry>
139 </row>
140 <row>
141 <entry><constant>VID_TYPE_CHROMAKEY</constant></entry>
142 <entry><constant>V4L2_FBUF_CAP_CHROMAKEY</constant> in
143field <structfield>capability</structfield> of
144&v4l2-framebuffer;</entry>
145 <entry>Whether chromakey overlay is supported. For
146more information on overlay see
147<xref linkend="overlay" />.</entry>
148 </row>
149 <row>
150 <entry><constant>VID_TYPE_CLIPPING</constant></entry>
151 <entry><constant>V4L2_FBUF_CAP_LIST_CLIPPING</constant>
152and <constant>V4L2_FBUF_CAP_BITMAP_CLIPPING</constant> in field
153<structfield>capability</structfield> of &v4l2-framebuffer;</entry>
154 <entry>Whether clipping the overlaid image is
155supported, see <xref linkend="overlay" />.</entry>
156 </row>
157 <row>
158 <entry><constant>VID_TYPE_FRAMERAM</constant></entry>
159 <entry><constant>V4L2_FBUF_CAP_EXTERNOVERLAY</constant>
160<emphasis>not set</emphasis> in field
161<structfield>capability</structfield> of &v4l2-framebuffer;</entry>
162 <entry>Whether overlay overwrites frame buffer memory,
163see <xref linkend="overlay" />.</entry>
164 </row>
165 <row>
166 <entry><constant>VID_TYPE_SCALES</constant></entry>
167 <entry><constant>-</constant></entry>
168 <entry>This flag indicates if the hardware can scale
169images. The V4L2 API implies the scale factor by setting the cropping
170dimensions and image size with the &VIDIOC-S-CROP; and &VIDIOC-S-FMT;
171ioctl, respectively. The driver returns the closest sizes possible.
172For more information on cropping and scaling see <xref
173 linkend="crop" />.</entry>
174 </row>
175 <row>
176 <entry><constant>VID_TYPE_MONOCHROME</constant></entry>
177 <entry><constant>-</constant></entry>
178 <entry>Applications can enumerate the supported image
179formats with the &VIDIOC-ENUM-FMT; ioctl to determine if the device
180supports grey scale capturing only. For more information on image
181formats see <xref linkend="pixfmt" />.</entry>
182 </row>
183 <row>
184 <entry><constant>VID_TYPE_SUBCAPTURE</constant></entry>
185 <entry><constant>-</constant></entry>
186 <entry>Applications can call the &VIDIOC-G-CROP; ioctl
187to determine if the device supports capturing a subsection of the full
188picture ("cropping" in V4L2). If not, the ioctl returns the &EINVAL;.
189For more information on cropping and scaling see <xref
190 linkend="crop" />.</entry>
191 </row>
192 <row>
193 <entry><constant>VID_TYPE_MPEG_DECODER</constant></entry>
194 <entry><constant>-</constant></entry>
195 <entry>Applications can enumerate the supported image
196formats with the &VIDIOC-ENUM-FMT; ioctl to determine if the device
197supports MPEG streams.</entry>
198 </row>
199 <row>
200 <entry><constant>VID_TYPE_MPEG_ENCODER</constant></entry>
201 <entry><constant>-</constant></entry>
202 <entry>See above.</entry>
203 </row>
204 <row>
205 <entry><constant>VID_TYPE_MJPEG_DECODER</constant></entry>
206 <entry><constant>-</constant></entry>
207 <entry>See above.</entry>
208 </row>
209 <row>
210 <entry><constant>VID_TYPE_MJPEG_ENCODER</constant></entry>
211 <entry><constant>-</constant></entry>
212 <entry>See above.</entry>
213 </row>
214 </tbody>
215 </tgroup>
216 </informaltable></para>
217
218 <para>The <structfield>audios</structfield> field was replaced
219by <structfield>capabilities</structfield> flag
220<constant>V4L2_CAP_AUDIO</constant>, indicating
221<emphasis>if</emphasis> the device has any audio inputs or outputs. To
222determine their number applications can enumerate audio inputs with
223the &VIDIOC-G-AUDIO; ioctl. The audio ioctls are described in <xref
224 linkend="audio" />.</para>
225
226 <para>The <structfield>maxwidth</structfield>,
227<structfield>maxheight</structfield>,
228<structfield>minwidth</structfield> and
229<structfield>minheight</structfield> fields were removed. Calling the
230&VIDIOC-S-FMT; or &VIDIOC-TRY-FMT; ioctl with the desired dimensions
231returns the closest size possible, taking into account the current
232video standard, cropping and scaling limitations.</para>
233 </section>
234
235 <section>
236 <title>Video Sources</title>
237
238 <para>V4L provides the <constant>VIDIOCGCHAN</constant> and
239<constant>VIDIOCSCHAN</constant> ioctl using struct
240<structname>video_channel</structname> to enumerate
241the video inputs of a V4L device. The equivalent V4L2 ioctls
242are &VIDIOC-ENUMINPUT;, &VIDIOC-G-INPUT; and &VIDIOC-S-INPUT;
243using &v4l2-input; as discussed in <xref linkend="video" />.</para>
244
245 <para>The <structfield>channel</structfield> field counting
246inputs was renamed to <structfield>index</structfield>, the video
247input types were renamed as follows: <informaltable>
248 <tgroup cols="2">
249 <thead>
250 <row>
251 <entry>struct <structname>video_channel</structname>
252<structfield>type</structfield></entry>
253 <entry>&v4l2-input;
254<structfield>type</structfield></entry>
255 </row>
256 </thead>
257 <tbody valign="top">
258 <row>
259 <entry><constant>VIDEO_TYPE_TV</constant></entry>
260 <entry><constant>V4L2_INPUT_TYPE_TUNER</constant></entry>
261 </row>
262 <row>
263 <entry><constant>VIDEO_TYPE_CAMERA</constant></entry>
264 <entry><constant>V4L2_INPUT_TYPE_CAMERA</constant></entry>
265 </row>
266 </tbody>
267 </tgroup>
268 </informaltable></para>
269
270 <para>Unlike the <structfield>tuners</structfield> field
271expressing the number of tuners of this input, V4L2 assumes each video
272input is connected to at most one tuner. However a tuner can have more
273than one input, &ie; RF connectors, and a device can have multiple
274tuners. The index number of the tuner associated with the input, if
275any, is stored in field <structfield>tuner</structfield> of
276&v4l2-input;. Enumeration of tuners is discussed in <xref
277 linkend="tuner" />.</para>
278
279 <para>The redundant <constant>VIDEO_VC_TUNER</constant> flag was
280dropped. Video inputs associated with a tuner are of type
281<constant>V4L2_INPUT_TYPE_TUNER</constant>. The
282<constant>VIDEO_VC_AUDIO</constant> flag was replaced by the
283<structfield>audioset</structfield> field. V4L2 considers devices with
284up to 32 audio inputs. Each set bit in the
285<structfield>audioset</structfield> field represents one audio input
286this video input combines with. For information about audio inputs and
287how to switch between them see <xref linkend="audio" />.</para>
288
289 <para>The <structfield>norm</structfield> field describing the
290supported video standards was replaced by
291<structfield>std</structfield>. The V4L specification mentions a flag
292<constant>VIDEO_VC_NORM</constant> indicating whether the standard can
293be changed. This flag was a later addition together with the
294<structfield>norm</structfield> field and has been removed in the
295meantime. V4L2 has a similar, albeit more comprehensive approach
296to video standards, see <xref linkend="standard" /> for more
297information.</para>
298 </section>
299
300 <section>
301 <title>Tuning</title>
302
303 <para>The V4L <constant>VIDIOCGTUNER</constant> and
304<constant>VIDIOCSTUNER</constant> ioctl and struct
305<structname>video_tuner</structname> can be used to enumerate the
306tuners of a V4L TV or radio device. The equivalent V4L2 ioctls are
307&VIDIOC-G-TUNER; and &VIDIOC-S-TUNER; using &v4l2-tuner;. Tuners are
308covered in <xref linkend="tuner" />.</para>
309
310 <para>The <structfield>tuner</structfield> field counting tuners
311was renamed to <structfield>index</structfield>. The fields
312<structfield>name</structfield>, <structfield>rangelow</structfield>
313and <structfield>rangehigh</structfield> remained unchanged.</para>
314
315 <para>The <constant>VIDEO_TUNER_PAL</constant>,
316<constant>VIDEO_TUNER_NTSC</constant> and
317<constant>VIDEO_TUNER_SECAM</constant> flags indicating the supported
318video standards were dropped. This information is now contained in the
319associated &v4l2-input;. No replacement exists for the
320<constant>VIDEO_TUNER_NORM</constant> flag indicating whether the
321video standard can be switched. The <structfield>mode</structfield>
322field to select a different video standard was replaced by a whole new
323set of ioctls and structures described in <xref linkend="standard" />.
324Due to its ubiquity it should be mentioned the BTTV driver supports
325several standards in addition to the regular
326<constant>VIDEO_MODE_PAL</constant> (0),
327<constant>VIDEO_MODE_NTSC</constant>,
328<constant>VIDEO_MODE_SECAM</constant> and
329<constant>VIDEO_MODE_AUTO</constant> (3). Namely N/PAL Argentina,
330M/PAL, N/PAL, and NTSC Japan with numbers 3-6 (sic).</para>
331
332 <para>The <constant>VIDEO_TUNER_STEREO_ON</constant> flag
333indicating stereo reception became
334<constant>V4L2_TUNER_SUB_STEREO</constant> in field
335<structfield>rxsubchans</structfield>. This field also permits the
336detection of monaural and bilingual audio, see the definition of
337&v4l2-tuner; for details. Presently no replacement exists for the
338<constant>VIDEO_TUNER_RDS_ON</constant> and
339<constant>VIDEO_TUNER_MBS_ON</constant> flags.</para>
340
341 <para> The <constant>VIDEO_TUNER_LOW</constant> flag was renamed
342to <constant>V4L2_TUNER_CAP_LOW</constant> in the &v4l2-tuner;
343<structfield>capability</structfield> field.</para>
344
345 <para>The <constant>VIDIOCGFREQ</constant> and
346<constant>VIDIOCSFREQ</constant> ioctl to change the tuner frequency
347where renamed to &VIDIOC-G-FREQUENCY; and &VIDIOC-S-FREQUENCY;. They
348take a pointer to a &v4l2-frequency; instead of an unsigned long
349integer.</para>
350 </section>
351
352 <section id="v4l-image-properties">
353 <title>Image Properties</title>
354
355 <para>V4L2 has no equivalent of the
356<constant>VIDIOCGPICT</constant> and <constant>VIDIOCSPICT</constant>
357ioctl and struct <structname>video_picture</structname>. The following
358fields where replaced by V4L2 controls accessible with the
359&VIDIOC-QUERYCTRL;, &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls:<informaltable>
360 <tgroup cols="2">
361 <thead>
362 <row>
363 <entry>struct <structname>video_picture</structname></entry>
364 <entry>V4L2 Control ID</entry>
365 </row>
366 </thead>
367 <tbody valign="top">
368 <row>
369 <entry><structfield>brightness</structfield></entry>
370 <entry><constant>V4L2_CID_BRIGHTNESS</constant></entry>
371 </row>
372 <row>
373 <entry><structfield>hue</structfield></entry>
374 <entry><constant>V4L2_CID_HUE</constant></entry>
375 </row>
376 <row>
377 <entry><structfield>colour</structfield></entry>
378 <entry><constant>V4L2_CID_SATURATION</constant></entry>
379 </row>
380 <row>
381 <entry><structfield>contrast</structfield></entry>
382 <entry><constant>V4L2_CID_CONTRAST</constant></entry>
383 </row>
384 <row>
385 <entry><structfield>whiteness</structfield></entry>
386 <entry><constant>V4L2_CID_WHITENESS</constant></entry>
387 </row>
388 </tbody>
389 </tgroup>
390 </informaltable></para>
391
392 <para>The V4L picture controls are assumed to range from 0 to
39365535 with no particular reset value. The V4L2 API permits arbitrary
394limits and defaults which can be queried with the &VIDIOC-QUERYCTRL;
395ioctl. For general information about controls see <xref
396linkend="control" />.</para>
397
398 <para>The <structfield>depth</structfield> (average number of
399bits per pixel) of a video image is implied by the selected image
400format. V4L2 does not explicitly provide such information assuming
401applications recognizing the format are aware of the image depth and
402others need not know. The <structfield>palette</structfield> field
403moved into the &v4l2-pix-format;:<informaltable>
404 <tgroup cols="2">
405 <thead>
406 <row>
407 <entry>struct <structname>video_picture</structname>
408<structfield>palette</structfield></entry>
409 <entry>&v4l2-pix-format;
410<structfield>pixfmt</structfield></entry>
411 </row>
412 </thead>
413 <tbody valign="top">
414 <row>
415 <entry><constant>VIDEO_PALETTE_GREY</constant></entry>
416 <entry><para><link
417linkend="V4L2-PIX-FMT-GREY"><constant>V4L2_PIX_FMT_GREY</constant></link></para></entry>
418 </row>
419 <row>
420 <entry><constant>VIDEO_PALETTE_HI240</constant></entry>
421 <entry><para><link
422linkend="pixfmt-reserved"><constant>V4L2_PIX_FMT_HI240</constant></link><footnote>
423 <para>This is a custom format used by the BTTV
424driver, not one of the V4L2 standard formats.</para>
425 </footnote></para></entry>
426 </row>
427 <row>
428 <entry><constant>VIDEO_PALETTE_RGB565</constant></entry>
429 <entry><para><link
430linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_RGB565</constant></link></para></entry>
431 </row>
432 <row>
433 <entry><constant>VIDEO_PALETTE_RGB555</constant></entry>
434 <entry><para><link
435linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_RGB555</constant></link></para></entry>
436 </row>
437 <row>
438 <entry><constant>VIDEO_PALETTE_RGB24</constant></entry>
439 <entry><para><link
440linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR24</constant></link></para></entry>
441 </row>
442 <row>
443 <entry><constant>VIDEO_PALETTE_RGB32</constant></entry>
444 <entry><para><link
445linkend="pixfmt-rgb"><constant>V4L2_PIX_FMT_BGR32</constant></link><footnote>
446 <para>Presumably all V4L RGB formats are
447little-endian, although some drivers might interpret them according to machine endianness. V4L2 defines little-endian, big-endian and red/blue
448swapped variants. For details see <xref linkend="pixfmt-rgb" />.</para>
449 </footnote></para></entry>
450 </row>
451 <row>
452 <entry><constant>VIDEO_PALETTE_YUV422</constant></entry>
453 <entry><para><link
454linkend="V4L2-PIX-FMT-YUYV"><constant>V4L2_PIX_FMT_YUYV</constant></link></para></entry>
455 </row>
456 <row>
457 <entry><para><constant>VIDEO_PALETTE_YUYV</constant><footnote>
458 <para><constant>VIDEO_PALETTE_YUV422</constant>
459and <constant>VIDEO_PALETTE_YUYV</constant> are the same formats. Some
460V4L drivers respond to one, some to the other.</para>
461 </footnote></para></entry>
462 <entry><para><link
463linkend="V4L2-PIX-FMT-YUYV"><constant>V4L2_PIX_FMT_YUYV</constant></link></para></entry>
464 </row>
465 <row>
466 <entry><constant>VIDEO_PALETTE_UYVY</constant></entry>
467 <entry><para><link
468linkend="V4L2-PIX-FMT-UYVY"><constant>V4L2_PIX_FMT_UYVY</constant></link></para></entry>
469 </row>
470 <row>
471 <entry><constant>VIDEO_PALETTE_YUV420</constant></entry>
472 <entry>None</entry>
473 </row>
474 <row>
475 <entry><constant>VIDEO_PALETTE_YUV411</constant></entry>
476 <entry><para><link
477linkend="V4L2-PIX-FMT-Y41P"><constant>V4L2_PIX_FMT_Y41P</constant></link><footnote>
478 <para>Not to be confused with
479<constant>V4L2_PIX_FMT_YUV411P</constant>, which is a planar
480format.</para> </footnote></para></entry>
481 </row>
482 <row>
483 <entry><constant>VIDEO_PALETTE_RAW</constant></entry>
484 <entry><para>None<footnote> <para>V4L explains this
485as: "RAW capture (BT848)"</para> </footnote></para></entry>
486 </row>
487 <row>
488 <entry><constant>VIDEO_PALETTE_YUV422P</constant></entry>
489 <entry><para><link
490linkend="V4L2-PIX-FMT-YUV422P"><constant>V4L2_PIX_FMT_YUV422P</constant></link></para></entry>
491 </row>
492 <row>
493 <entry><constant>VIDEO_PALETTE_YUV411P</constant></entry>
494 <entry><para><link
495linkend="V4L2-PIX-FMT-YUV411P"><constant>V4L2_PIX_FMT_YUV411P</constant></link><footnote>
496 <para>Not to be confused with
497<constant>V4L2_PIX_FMT_Y41P</constant>, which is a packed
498format.</para> </footnote></para></entry>
499 </row>
500 <row>
501 <entry><constant>VIDEO_PALETTE_YUV420P</constant></entry>
502 <entry><para><link
503linkend="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></link></para></entry>
504 </row>
505 <row>
506 <entry><constant>VIDEO_PALETTE_YUV410P</constant></entry>
507 <entry><para><link
508linkend="V4L2-PIX-FMT-YVU410"><constant>V4L2_PIX_FMT_YVU410</constant></link></para></entry>
509 </row>
510 </tbody>
511 </tgroup>
512 </informaltable></para>
513
514 <para>V4L2 image formats are defined in <xref
515linkend="pixfmt" />. The image format can be selected with the
516&VIDIOC-S-FMT; ioctl.</para>
517 </section>
518
519 <section>
520 <title>Audio</title>
521
522 <para>The <constant>VIDIOCGAUDIO</constant> and
523<constant>VIDIOCSAUDIO</constant> ioctl and struct
524<structname>video_audio</structname> are used to enumerate the
525audio inputs of a V4L device. The equivalent V4L2 ioctls are
526&VIDIOC-G-AUDIO; and &VIDIOC-S-AUDIO; using &v4l2-audio; as
527discussed in <xref linkend="audio" />.</para>
528
529 <para>The <structfield>audio</structfield> "channel number"
530field counting audio inputs was renamed to
531<structfield>index</structfield>.</para>
532
533 <para>On <constant>VIDIOCSAUDIO</constant> the
534<structfield>mode</structfield> field selects <emphasis>one</emphasis>
535of the <constant>VIDEO_SOUND_MONO</constant>,
536<constant>VIDEO_SOUND_STEREO</constant>,
537<constant>VIDEO_SOUND_LANG1</constant> or
538<constant>VIDEO_SOUND_LANG2</constant> audio demodulation modes. When
539the current audio standard is BTSC
540<constant>VIDEO_SOUND_LANG2</constant> refers to SAP and
541<constant>VIDEO_SOUND_LANG1</constant> is meaningless. Also
542undocumented in the V4L specification, there is no way to query the
543selected mode. On <constant>VIDIOCGAUDIO</constant> the driver returns
544the <emphasis>actually received</emphasis> audio programmes in this
545field. In the V4L2 API this information is stored in the &v4l2-tuner;
546<structfield>rxsubchans</structfield> and
547<structfield>audmode</structfield> fields, respectively. See <xref
548linkend="tuner" /> for more information on tuners. Related to audio
549modes &v4l2-audio; also reports if this is a mono or stereo
550input, regardless if the source is a tuner.</para>
551
552 <para>The following fields where replaced by V4L2 controls
553accessible with the &VIDIOC-QUERYCTRL;, &VIDIOC-G-CTRL; and
554&VIDIOC-S-CTRL; ioctls:<informaltable>
555 <tgroup cols="2">
556 <thead>
557 <row>
558 <entry>struct
559<structname>video_audio</structname></entry>
560 <entry>V4L2 Control ID</entry>
561 </row>
562 </thead>
563 <tbody valign="top">
564 <row>
565 <entry><structfield>volume</structfield></entry>
566 <entry><constant>V4L2_CID_AUDIO_VOLUME</constant></entry>
567 </row>
568 <row>
569 <entry><structfield>bass</structfield></entry>
570 <entry><constant>V4L2_CID_AUDIO_BASS</constant></entry>
571 </row>
572 <row>
573 <entry><structfield>treble</structfield></entry>
574 <entry><constant>V4L2_CID_AUDIO_TREBLE</constant></entry>
575 </row>
576 <row>
577 <entry><structfield>balance</structfield></entry>
578 <entry><constant>V4L2_CID_AUDIO_BALANCE</constant></entry>
579 </row>
580 </tbody>
581 </tgroup>
582 </informaltable></para>
583
584 <para>To determine which of these controls are supported by a
585driver V4L provides the <structfield>flags</structfield>
586<constant>VIDEO_AUDIO_VOLUME</constant>,
587<constant>VIDEO_AUDIO_BASS</constant>,
588<constant>VIDEO_AUDIO_TREBLE</constant> and
589<constant>VIDEO_AUDIO_BALANCE</constant>. In the V4L2 API the
590&VIDIOC-QUERYCTRL; ioctl reports if the respective control is
591supported. Accordingly the <constant>VIDEO_AUDIO_MUTABLE</constant>
592and <constant>VIDEO_AUDIO_MUTE</constant> flags where replaced by the
593boolean <constant>V4L2_CID_AUDIO_MUTE</constant> control.</para>
594
595 <para>All V4L2 controls have a <structfield>step</structfield>
596attribute replacing the struct <structname>video_audio</structname>
597<structfield>step</structfield> field. The V4L audio controls are
598assumed to range from 0 to 65535 with no particular reset value. The
599V4L2 API permits arbitrary limits and defaults which can be queried
600with the &VIDIOC-QUERYCTRL; ioctl. For general information about
601controls see <xref linkend="control" />.</para>
602 </section>
603
604 <section>
605 <title>Frame Buffer Overlay</title>
606
607 <para>The V4L2 ioctls equivalent to
608<constant>VIDIOCGFBUF</constant> and <constant>VIDIOCSFBUF</constant>
609are &VIDIOC-G-FBUF; and &VIDIOC-S-FBUF;. The
610<structfield>base</structfield> field of struct
611<structname>video_buffer</structname> remained unchanged, except V4L2
612defines a flag to indicate non-destructive overlays instead of a
613<constant>NULL</constant> pointer. All other fields moved into the
614&v4l2-pix-format; <structfield>fmt</structfield> substructure of
615&v4l2-framebuffer;. The <structfield>depth</structfield> field was
616replaced by <structfield>pixelformat</structfield>. See <xref
617 linkend="pixfmt-rgb" /> for a list of RGB formats and their
618respective color depths.</para>
619
620 <para>Instead of the special ioctls
621<constant>VIDIOCGWIN</constant> and <constant>VIDIOCSWIN</constant>
622V4L2 uses the general-purpose data format negotiation ioctls
623&VIDIOC-G-FMT; and &VIDIOC-S-FMT;. They take a pointer to a
624&v4l2-format; as argument. Here the <structfield>win</structfield>
625member of the <structfield>fmt</structfield> union is used, a
626&v4l2-window;.</para>
627
628 <para>The <structfield>x</structfield>,
629<structfield>y</structfield>, <structfield>width</structfield> and
630<structfield>height</structfield> fields of struct
631<structname>video_window</structname> moved into &v4l2-rect;
632substructure <structfield>w</structfield> of struct
633<structname>v4l2_window</structname>. The
634<structfield>chromakey</structfield>,
635<structfield>clips</structfield>, and
636<structfield>clipcount</structfield> fields remained unchanged. Struct
637<structname>video_clip</structname> was renamed to &v4l2-clip;, also
638containing a struct <structname>v4l2_rect</structname>, but the
639semantics are still the same.</para>
640
641 <para>The <constant>VIDEO_WINDOW_INTERLACE</constant> flag was
642dropped. Instead applications must set the
643<structfield>field</structfield> field to
644<constant>V4L2_FIELD_ANY</constant> or
645<constant>V4L2_FIELD_INTERLACED</constant>. The
646<constant>VIDEO_WINDOW_CHROMAKEY</constant> flag moved into
647&v4l2-framebuffer;, under the new name
648<constant>V4L2_FBUF_FLAG_CHROMAKEY</constant>.</para>
649
650 <para>In V4L, storing a bitmap pointer in
651<structfield>clips</structfield> and setting
652<structfield>clipcount</structfield> to
653<constant>VIDEO_CLIP_BITMAP</constant> (-1) requests bitmap
654clipping, using a fixed size bitmap of 1024 &times; 625 bits. Struct
655<structname>v4l2_window</structname> has a separate
656<structfield>bitmap</structfield> pointer field for this purpose and
657the bitmap size is determined by <structfield>w.width</structfield> and
658<structfield>w.height</structfield>.</para>
659
660 <para>The <constant>VIDIOCCAPTURE</constant> ioctl to enable or
661disable overlay was renamed to &VIDIOC-OVERLAY;.</para>
662 </section>
663
664 <section>
665 <title>Cropping</title>
666
667 <para>To capture only a subsection of the full picture V4L
668defines the <constant>VIDIOCGCAPTURE</constant> and
669<constant>VIDIOCSCAPTURE</constant> ioctls using struct
670<structname>video_capture</structname>. The equivalent V4L2 ioctls are
671&VIDIOC-G-CROP; and &VIDIOC-S-CROP; using &v4l2-crop;, and the related
672&VIDIOC-CROPCAP; ioctl. This is a rather complex matter, see
673<xref linkend="crop" /> for details.</para>
674
675 <para>The <structfield>x</structfield>,
676<structfield>y</structfield>, <structfield>width</structfield> and
677<structfield>height</structfield> fields moved into &v4l2-rect;
678substructure <structfield>c</structfield> of struct
679<structname>v4l2_crop</structname>. The
680<structfield>decimation</structfield> field was dropped. In the V4L2
681API the scaling factor is implied by the size of the cropping
682rectangle and the size of the captured or overlaid image.</para>
683
684 <para>The <constant>VIDEO_CAPTURE_ODD</constant>
685and <constant>VIDEO_CAPTURE_EVEN</constant> flags to capture only the
686odd or even field, respectively, were replaced by
687<constant>V4L2_FIELD_TOP</constant> and
688<constant>V4L2_FIELD_BOTTOM</constant> in the field named
689<structfield>field</structfield> of &v4l2-pix-format; and
690&v4l2-window;. These structures are used to select a capture or
691overlay format with the &VIDIOC-S-FMT; ioctl.</para>
692 </section>
693
694 <section>
695 <title>Reading Images, Memory Mapping</title>
696
697 <section>
698 <title>Capturing using the read method</title>
699
700 <para>There is no essential difference between reading images
701from a V4L or V4L2 device using the &func-read; function, however V4L2
702drivers are not required to support this I/O method. Applications can
703determine if the function is available with the &VIDIOC-QUERYCAP;
704ioctl. All V4L2 devices exchanging data with applications must support
705the &func-select; and &func-poll; functions.</para>
706
707 <para>To select an image format and size, V4L provides the
708<constant>VIDIOCSPICT</constant> and <constant>VIDIOCSWIN</constant>
709ioctls. V4L2 uses the general-purpose data format negotiation ioctls
710&VIDIOC-G-FMT; and &VIDIOC-S-FMT;. They take a pointer to a
711&v4l2-format; as argument, here the &v4l2-pix-format; named
712<structfield>pix</structfield> of its <structfield>fmt</structfield>
713union is used.</para>
714
715 <para>For more information about the V4L2 read interface see
716<xref linkend="rw" />.</para>
717 </section>
718 <section>
719 <title>Capturing using memory mapping</title>
720
721 <para>Applications can read from V4L devices by mapping
722buffers in device memory, or more often just buffers allocated in
723DMA-able system memory, into their address space. This avoids the data
724copying overhead of the read method. V4L2 supports memory mapping as
725well, with a few differences.</para>
726
727 <informaltable>
728 <tgroup cols="2">
729 <thead>
730 <row>
731 <entry>V4L</entry>
732 <entry>V4L2</entry>
733 </row>
734 </thead>
735 <tbody valign="top">
736 <row>
737 <entry></entry>
738 <entry>The image format must be selected before
739buffers are allocated, with the &VIDIOC-S-FMT; ioctl. When no format
740is selected the driver may use the last, possibly by another
741application requested format.</entry>
742 </row>
743 <row>
744 <entry><para>Applications cannot change the number of
745buffers. The it is built into the driver, unless it has a module
746option to change the number when the driver module is
747loaded.</para></entry>
748 <entry><para>The &VIDIOC-REQBUFS; ioctl allocates the
749desired number of buffers, this is a required step in the initialization
750sequence.</para></entry>
751 </row>
752 <row>
753 <entry><para>Drivers map all buffers as one contiguous
754range of memory. The <constant>VIDIOCGMBUF</constant> ioctl is
755available to query the number of buffers, the offset of each buffer
756from the start of the virtual file, and the overall amount of memory
757used, which can be used as arguments for the &func-mmap;
758function.</para></entry>
759 <entry><para>Buffers are individually mapped. The
760offset and size of each buffer can be determined with the
761&VIDIOC-QUERYBUF; ioctl.</para></entry>
762 </row>
763 <row>
764 <entry><para>The <constant>VIDIOCMCAPTURE</constant>
765ioctl prepares a buffer for capturing. It also determines the image
766format for this buffer. The ioctl returns immediately, eventually with
767an &EAGAIN; if no video signal had been detected. When the driver
768supports more than one buffer applications can call the ioctl multiple
769times and thus have multiple outstanding capture
770requests.</para><para>The <constant>VIDIOCSYNC</constant> ioctl
771suspends execution until a particular buffer has been
772filled.</para></entry>
773 <entry><para>Drivers maintain an incoming and outgoing
774queue. &VIDIOC-QBUF; enqueues any empty buffer into the incoming
775queue. Filled buffers are dequeued from the outgoing queue with the
776&VIDIOC-DQBUF; ioctl. To wait until filled buffers become available this
777function, &func-select; or &func-poll; can be used. The
778&VIDIOC-STREAMON; ioctl must be called once after enqueuing one or
779more buffers to start capturing. Its counterpart
780&VIDIOC-STREAMOFF; stops capturing and dequeues all buffers from both
781queues. Applications can query the signal status, if known, with the
782&VIDIOC-ENUMINPUT; ioctl.</para></entry>
783 </row>
784 </tbody>
785 </tgroup>
786 </informaltable>
787
788 <para>For a more in-depth discussion of memory mapping and
789examples, see <xref linkend="mmap" />.</para>
790 </section>
791 </section>
792
793 <section>
794 <title>Reading Raw VBI Data</title>
795
796 <para>Originally the V4L API did not specify a raw VBI capture
797interface, only the device file <filename>/dev/vbi</filename> was
798reserved for this purpose. The only driver supporting this interface
799was the BTTV driver, de-facto defining the V4L VBI interface. Reading
800from the device yields a raw VBI image with the following
801parameters:<informaltable>
802 <tgroup cols="2">
803 <thead>
804 <row>
805 <entry>&v4l2-vbi-format;</entry>
806 <entry>V4L, BTTV driver</entry>
807 </row>
808 </thead>
809 <tbody valign="top">
810 <row>
811 <entry>sampling_rate</entry>
812 <entry>28636363&nbsp;Hz NTSC (or any other 525-line
813standard); 35468950&nbsp;Hz PAL and SECAM (625-line standards)</entry>
814 </row>
815 <row>
816 <entry>offset</entry>
817 <entry>?</entry>
818 </row>
819 <row>
820 <entry>samples_per_line</entry>
821 <entry>2048</entry>
822 </row>
823 <row>
824 <entry>sample_format</entry>
825 <entry>V4L2_PIX_FMT_GREY. The last four bytes (a
826machine endianness integer) contain a frame counter.</entry>
827 </row>
828 <row>
829 <entry>start[]</entry>
830 <entry>10, 273 NTSC; 22, 335 PAL and SECAM</entry>
831 </row>
832 <row>
833 <entry>count[]</entry>
834 <entry><para>16, 16<footnote><para>Old driver
835versions used different values, eventually the custom
836<constant>BTTV_VBISIZE</constant> ioctl was added to query the
837correct values.</para></footnote></para></entry>
838 </row>
839 <row>
840 <entry>flags</entry>
841 <entry>0</entry>
842 </row>
843 </tbody>
844 </tgroup>
845 </informaltable></para>
846
847 <para>Undocumented in the V4L specification, in Linux 2.3 the
848<constant>VIDIOCGVBIFMT</constant> and
849<constant>VIDIOCSVBIFMT</constant> ioctls using struct
850<structname>vbi_format</structname> were added to determine the VBI
851image parameters. These ioctls are only partially compatible with the
852V4L2 VBI interface specified in <xref linkend="raw-vbi" />.</para>
853
854 <para>An <structfield>offset</structfield> field does not
855exist, <structfield>sample_format</structfield> is supposed to be
856<constant>VIDEO_PALETTE_RAW</constant>, equivalent to
857<constant>V4L2_PIX_FMT_GREY</constant>. The remaining fields are
858probably equivalent to &v4l2-vbi-format;.</para>
859
860 <para>Apparently only the Zoran (ZR 36120) driver implements
861these ioctls. The semantics differ from those specified for V4L2 in two
862ways. The parameters are reset on &func-open; and
863<constant>VIDIOCSVBIFMT</constant> always returns an &EINVAL; if the
864parameters are invalid.</para>
865 </section>
866
867 <section>
868 <title>Miscellaneous</title>
869
870 <para>V4L2 has no equivalent of the
871<constant>VIDIOCGUNIT</constant> ioctl. Applications can find the VBI
872device associated with a video capture device (or vice versa) by
873reopening the device and requesting VBI data. For details see
874<xref linkend="open" />.</para>
875
876 <para>No replacement exists for <constant>VIDIOCKEY</constant>,
877and the V4L functions for microcode programming. A new interface for
878MPEG compression and playback devices is documented in <xref
879 linkend="extended-controls" />.</para>
880 </section>
881
882 </section>
883
884 <section id="hist-v4l2">
885 <title>Changes of the V4L2 API</title>
886
887 <para>Soon after the V4L API was added to the kernel it was
888criticised as too inflexible. In August 1998 Bill Dirks proposed a
889number of improvements and began to work on documentation, example
890drivers and applications. With the help of other volunteers this
891eventually became the V4L2 API, not just an extension but a
892replacement for the V4L API. However it took another four years and
893two stable kernel releases until the new API was finally accepted for
894inclusion into the kernel in its present form.</para>
895
896 <section>
897 <title>Early Versions</title>
898 <para>1998-08-20: First version.</para>
899
900 <para>1998-08-27: The &func-select; function was introduced.</para>
901
902 <para>1998-09-10: New video standard interface.</para>
903
904 <para>1998-09-18: The <constant>VIDIOC_NONCAP</constant> ioctl
905was replaced by the otherwise meaningless <constant>O_TRUNC</constant>
906&func-open; flag, and the aliases <constant>O_NONCAP</constant> and
907<constant>O_NOIO</constant> were defined. Applications can set this
908flag if they intend to access controls only, as opposed to capture
909applications which need exclusive access. The
910<constant>VIDEO_STD_XXX</constant> identifiers are now ordinals
911instead of flags, and the <function>video_std_construct()</function>
912helper function takes id and transmission arguments.</para>
913
914 <para>1998-09-28: Revamped video standard. Made video controls
915individually enumerable.</para>
916
917 <para>1998-10-02: The <structfield>id</structfield> field was
918removed from struct <structname>video_standard</structname> and the
919color subcarrier fields were renamed. The &VIDIOC-QUERYSTD; ioctl was
920renamed to &VIDIOC-ENUMSTD;, &VIDIOC-G-INPUT; to &VIDIOC-ENUMINPUT;. A
921first draft of the Codec API was released.</para>
922
923 <para>1998-11-08: Many minor changes. Most symbols have been
924renamed. Some material changes to &v4l2-capability;.</para>
925
926 <para>1998-11-12: The read/write directon of some ioctls was misdefined.</para>
927
928 <para>1998-11-14: <constant>V4L2_PIX_FMT_RGB24</constant>
929changed to <constant>V4L2_PIX_FMT_BGR24</constant>, and
930<constant>V4L2_PIX_FMT_RGB32</constant> changed to
931<constant>V4L2_PIX_FMT_BGR32</constant>. Audio controls are now
932accessible with the &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls under
933names starting with <constant>V4L2_CID_AUDIO</constant>. The
934<constant>V4L2_MAJOR</constant> define was removed from
935<filename>videodev.h</filename> since it was only used once in the
936<filename>videodev</filename> kernel module. The
937<constant>YUV422</constant> and <constant>YUV411</constant> planar
938image formats were added.</para>
939
940 <para>1998-11-28: A few ioctl symbols changed. Interfaces for codecs and
941video output devices were added.</para>
942
943 <para>1999-01-14: A raw VBI capture interface was added.</para>
944
945 <para>1999-01-19: The <constant>VIDIOC_NEXTBUF</constant> ioctl
946 was removed.</para>
947 </section>
948
949 <section>
950 <title>V4L2 Version 0.16 1999-01-31</title>
951 <para>1999-01-27: There is now one QBUF ioctl, VIDIOC_QWBUF and VIDIOC_QRBUF
952are gone. VIDIOC_QBUF takes a v4l2_buffer as a parameter. Added
953digital zoom (cropping) controls.</para>
954 </section>
955
956 <!-- Where's 0.17? mhs couldn't find that videodev.h, perhaps Bill
957 forgot to bump the version number or never released it. -->
958
959 <section>
960 <title>V4L2 Version 0.18 1999-03-16</title>
961 <para>Added a v4l to V4L2 ioctl compatibility layer to
962videodev.c. Driver writers, this changes how you implement your ioctl
963handler. See the Driver Writer's Guide. Added some more control id
964codes.</para>
965 </section>
966
967 <section>
968 <title>V4L2 Version 0.19 1999-06-05</title>
969 <para>1999-03-18: Fill in the category and catname fields of
970v4l2_queryctrl objects before passing them to the driver. Required a
971minor change to the VIDIOC_QUERYCTRL handlers in the sample
972drivers.</para>
973 <para>1999-03-31: Better compatibility for v4l memory capture
974ioctls. Requires changes to drivers to fully support new compatibility
975features, see Driver Writer's Guide and v4l2cap.c. Added new control
976IDs: V4L2_CID_HFLIP, _VFLIP. Changed V4L2_PIX_FMT_YUV422P to _YUV422P,
977and _YUV411P to _YUV411P.</para>
978 <para>1999-04-04: Added a few more control IDs.</para>
979 <para>1999-04-07: Added the button control type.</para>
980 <para>1999-05-02: Fixed a typo in videodev.h, and added the
981V4L2_CTRL_FLAG_GRAYED (later V4L2_CTRL_FLAG_GRABBED) flag.</para>
982 <para>1999-05-20: Definition of VIDIOC_G_CTRL was wrong causing
983a malfunction of this ioctl.</para>
984 <para>1999-06-05: Changed the value of
985V4L2_CID_WHITENESS.</para>
986 </section>
987
988 <section>
989 <title>V4L2 Version 0.20 (1999-09-10)</title>
990
991 <para>Version 0.20 introduced a number of changes which were
992<emphasis>not backward compatible</emphasis> with 0.19 and earlier
993versions. Purpose of these changes was to simplify the API, while
994making it more extensible and following common Linux driver API
995conventions.</para>
996
997 <orderedlist>
998 <listitem>
999 <para>Some typos in <constant>V4L2_FMT_FLAG</constant>
1000symbols were fixed. &v4l2-clip; was changed for compatibility with
1001v4l. (1999-08-30)</para>
1002 </listitem>
1003
1004 <listitem>
1005 <para><constant>V4L2_TUNER_SUB_LANG1</constant> was added.
1006(1999-09-05)</para>
1007 </listitem>
1008
1009 <listitem>
1010 <para>All ioctl() commands that used an integer argument now
1011take a pointer to an integer. Where it makes sense, ioctls will return
1012the actual new value in the integer pointed to by the argument, a
1013common convention in the V4L2 API. The affected ioctls are:
1014VIDIOC_PREVIEW, VIDIOC_STREAMON, VIDIOC_STREAMOFF, VIDIOC_S_FREQ,
1015VIDIOC_S_INPUT, VIDIOC_S_OUTPUT, VIDIOC_S_EFFECT. For example
1016<programlisting>
1017err = ioctl (fd, VIDIOC_XXX, V4L2_XXX);
1018</programlisting> becomes <programlisting>
1019int a = V4L2_XXX; err = ioctl(fd, VIDIOC_XXX, &amp;a);
1020</programlisting>
1021 </para>
1022 </listitem>
1023
1024 <listitem>
1025 <para>All the different get- and set-format commands were
1026swept into one &VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctl taking a union
1027and a type field selecting the union member as parameter. Purpose is to
1028simplify the API by eliminating several ioctls and to allow new and
1029driver private data streams without adding new ioctls.</para>
1030
1031 <para>This change obsoletes the following ioctls:
1032<constant>VIDIOC_S_INFMT</constant>,
1033<constant>VIDIOC_G_INFMT</constant>,
1034<constant>VIDIOC_S_OUTFMT</constant>,
1035<constant>VIDIOC_G_OUTFMT</constant>,
1036<constant>VIDIOC_S_VBIFMT</constant> and
1037<constant>VIDIOC_G_VBIFMT</constant>. The image format structure
1038<structname>v4l2_format</structname> was renamed to &v4l2-pix-format;,
1039while &v4l2-format; is now the envelopping structure for all format
1040negotiations.</para>
1041 </listitem>
1042
1043 <listitem>
1044 <para>Similar to the changes above, the
1045<constant>VIDIOC_G_PARM</constant> and
1046<constant>VIDIOC_S_PARM</constant> ioctls were merged with
1047<constant>VIDIOC_G_OUTPARM</constant> and
1048<constant>VIDIOC_S_OUTPARM</constant>. A
1049<structfield>type</structfield> field in the new &v4l2-streamparm;
1050selects the respective union member.</para>
1051
1052 <para>This change obsoletes the
1053<constant>VIDIOC_G_OUTPARM</constant> and
1054<constant>VIDIOC_S_OUTPARM</constant> ioctls.</para>
1055 </listitem>
1056
1057 <listitem>
1058 <para>Control enumeration was simplified, and two new
1059control flags were introduced and one dropped. The
1060<structfield>catname</structfield> field was replaced by a
1061<structfield>group</structfield> field.</para>
1062
1063 <para>Drivers can now flag unsupported and temporarily
1064unavailable controls with <constant>V4L2_CTRL_FLAG_DISABLED</constant>
1065and <constant>V4L2_CTRL_FLAG_GRABBED</constant> respectively. The
1066<structfield>group</structfield> name indicates a possibly narrower
1067classification than the <structfield>category</structfield>. In other
1068words, there may be multiple groups within a category. Controls within
1069a group would typically be drawn within a group box. Controls in
1070different categories might have a greater separation, or may even
1071appear in separate windows.</para>
1072 </listitem>
1073
1074 <listitem>
1075 <para>The &v4l2-buffer; <structfield>timestamp</structfield>
1076was changed to a 64 bit integer, containing the sampling or output
1077time of the frame in nanoseconds. Additionally timestamps will be in
1078absolute system time, not starting from zero at the beginning of a
1079stream. The data type name for timestamps is stamp_t, defined as a
1080signed 64-bit integer. Output devices should not send a buffer out
1081until the time in the timestamp field has arrived. I would like to
1082follow SGI's lead, and adopt a multimedia timestamping system like
1083their UST (Unadjusted System Time). See
1084http://web.archive.org/web/*/http://reality.sgi.com
1085/cpirazzi_engr/lg/time/intro.html.
1086UST uses timestamps that are 64-bit signed integers
1087(not struct timeval's) and given in nanosecond units. The UST clock
1088starts at zero when the system is booted and runs continuously and
1089uniformly. It takes a little over 292 years for UST to overflow. There
1090is no way to set the UST clock. The regular Linux time-of-day clock
1091can be changed periodically, which would cause errors if it were being
1092used for timestamping a multimedia stream. A real UST style clock will
1093require some support in the kernel that is not there yet. But in
1094anticipation, I will change the timestamp field to a 64-bit integer,
1095and I will change the v4l2_masterclock_gettime() function (used only
1096by drivers) to return a 64-bit integer.</para>
1097 </listitem>
1098
1099 <listitem>
1100 <para>A <structfield>sequence</structfield> field was added
1101to &v4l2-buffer;. The <structfield>sequence</structfield> field counts
1102captured frames, it is ignored by output devices. When a capture
1103driver drops a frame, the sequence number of that frame is
1104skipped.</para>
1105 </listitem>
1106 </orderedlist>
1107 </section>
1108
1109 <section>
1110 <title>V4L2 Version 0.20 incremental changes</title>
1111 <!-- Version number didn't change anymore, reason unknown. -->
1112
1113 <para>1999-12-23: In &v4l2-vbi-format; the
1114<structfield>reserved1</structfield> field became
1115<structfield>offset</structfield>. Previously drivers were required to
1116clear the <structfield>reserved1</structfield> field.</para>
1117
1118 <para>2000-01-13: The
1119 <constant>V4L2_FMT_FLAG_NOT_INTERLACED</constant> flag was added.</para>
1120
1121 <para>2000-07-31: The <filename>linux/poll.h</filename> header
1122is now included by <filename>videodev.h</filename> for compatibility
1123with the original <filename>videodev.h</filename> file.</para>
1124
1125 <para>2000-11-20: <constant>V4L2_TYPE_VBI_OUTPUT</constant> and
1126<constant>V4L2_PIX_FMT_Y41P</constant> were added.</para>
1127
1128 <para>2000-11-25: <constant>V4L2_TYPE_VBI_INPUT</constant> was
1129added.</para>
1130
1131 <para>2000-12-04: A couple typos in symbol names were fixed.</para>
1132
1133 <para>2001-01-18: To avoid namespace conflicts the
1134<constant>fourcc</constant> macro defined in the
1135<filename>videodev.h</filename> header file was renamed to
1136<constant>v4l2_fourcc</constant>.</para>
1137
1138 <para>2001-01-25: A possible driver-level compatibility problem
1139between the <filename>videodev.h</filename> file in Linux 2.4.0 and
1140the <filename>videodev.h</filename> file included in the
1141<filename>videodevX</filename> patch was fixed. Users of an earlier
1142version of <filename>videodevX</filename> on Linux 2.4.0 should
1143recompile their V4L and V4L2 drivers.</para>
1144
1145 <para>2001-01-26: A possible kernel-level incompatibility
1146between the <filename>videodev.h</filename> file in the
1147<filename>videodevX</filename> patch and the
1148<filename>videodev.h</filename> file in Linux 2.2.x with devfs patches
1149applied was fixed.</para>
1150
1151 <para>2001-03-02: Certain V4L ioctls which pass data in both
1152direction although they are defined with read-only parameter, did not
1153work correctly through the backward compatibility layer.
1154[Solution?]</para>
1155
1156 <para>2001-04-13: Big endian 16-bit RGB formats were added.</para>
1157
1158 <para>2001-09-17: New YUV formats and the &VIDIOC-G-FREQUENCY; and
1159&VIDIOC-S-FREQUENCY; ioctls were added. (The old
1160<constant>VIDIOC_G_FREQ</constant> and
1161<constant>VIDIOC_S_FREQ</constant> ioctls did not take multiple tuners
1162into account.)</para>
1163
1164 <para>2000-09-18: <constant>V4L2_BUF_TYPE_VBI</constant> was
1165added. This may <emphasis>break compatibility</emphasis> as the
1166&VIDIOC-G-FMT; and &VIDIOC-S-FMT; ioctls may fail now if the struct
1167<structname>v4l2_fmt</structname> <structfield>type</structfield>
1168field does not contain <constant>V4L2_BUF_TYPE_VBI</constant>. In the
1169documentation of the &v4l2-vbi-format;
1170<structfield>offset</structfield> field the ambiguous phrase "rising
1171edge" was changed to "leading edge".</para>
1172 </section>
1173
1174 <section>
1175 <title>V4L2 Version 0.20 2000-11-23</title>
1176
1177 <para>A number of changes were made to the raw VBI
1178interface.</para>
1179
1180 <orderedlist>
1181 <listitem>
1182 <para>Figures clarifying the line numbering scheme were
1183added to the V4L2 API specification. The
1184<structfield>start</structfield>[0] and
1185<structfield>start</structfield>[1] fields no longer count line
1186numbers beginning at zero. Rationale: a) The previous definition was
1187unclear. b) The <structfield>start</structfield>[] values are ordinal
1188numbers. c) There is no point in inventing a new line numbering
1189scheme. We now use line number as defined by ITU-R, period.
1190Compatibility: Add one to the start values. Applications depending on
1191the previous semantics may not function correctly.</para>
1192 </listitem>
1193
1194 <listitem>
1195 <para>The restriction "count[0] &gt; 0 and count[1] &gt; 0"
1196has been relaxed to "(count[0] + count[1]) &gt; 0". Rationale:
1197Drivers may allocate resources at scan line granularity and some data
1198services are transmitted only on the first field. The comment that
1199both <structfield>count</structfield> values will usually be equal is
1200misleading and pointless and has been removed. This change
1201<emphasis>breaks compatibility</emphasis> with earlier versions:
1202Drivers may return EINVAL, applications may not function
1203correctly.</para>
1204 </listitem>
1205
1206 <listitem>
1207 <para>Drivers are again permitted to return negative
1208(unknown) start values as proposed earlier. Why this feature was
1209dropped is unclear. This change may <emphasis>break
1210compatibility</emphasis> with applications depending on the start
1211values being positive. The use of <constant>EBUSY</constant> and
1212<constant>EINVAL</constant> error codes with the &VIDIOC-S-FMT; ioctl
1213was clarified. The &EBUSY; was finally documented, and the
1214<structfield>reserved2</structfield> field which was previously
1215mentioned only in the <filename>videodev.h</filename> header
1216file.</para>
1217 </listitem>
1218
1219 <listitem>
1220 <para>New buffer types
1221<constant>V4L2_TYPE_VBI_INPUT</constant> and
1222<constant>V4L2_TYPE_VBI_OUTPUT</constant> were added. The former is an
1223alias for the old <constant>V4L2_TYPE_VBI</constant>, the latter was
1224missing in the <filename>videodev.h</filename> file.</para>
1225 </listitem>
1226 </orderedlist>
1227 </section>
1228
1229 <section>
1230 <title>V4L2 Version 0.20 2002-07-25</title>
1231 <para>Added sliced VBI interface proposal.</para>
1232 </section>
1233
1234 <section>
1235 <title>V4L2 in Linux 2.5.46, 2002-10</title>
1236
1237 <para>Around October-November 2002, prior to an announced
1238feature freeze of Linux 2.5, the API was revised, drawing from
1239experience with V4L2 0.20. This unnamed version was finally merged
1240into Linux 2.5.46.</para>
1241
1242 <orderedlist>
1243 <listitem>
1244 <para>As specified in <xref linkend="related" />, drivers
1245must make related device functions available under all minor device
1246numbers.</para>
1247 </listitem>
1248
1249 <listitem>
1250 <para>The &func-open; function requires access mode
1251<constant>O_RDWR</constant> regardless of the device type. All V4L2
1252drivers exchanging data with applications must support the
1253<constant>O_NONBLOCK</constant> flag. The <constant>O_NOIO</constant>
1254flag, a V4L2 symbol which aliased the meaningless
1255<constant>O_TRUNC</constant> to indicate accesses without data
1256exchange (panel applications) was dropped. Drivers must stay in "panel
1257mode" until the application attempts to initiate a data exchange, see
1258<xref linkend="open" />.</para>
1259 </listitem>
1260
1261 <listitem>
1262 <para>The &v4l2-capability; changed dramatically. Note that
1263also the size of the structure changed, which is encoded in the ioctl
1264request code, thus older V4L2 devices will respond with an &EINVAL; to
1265the new &VIDIOC-QUERYCAP; ioctl.</para>
1266
1267 <para>There are new fields to identify the driver, a new RDS
1268device function <constant>V4L2_CAP_RDS_CAPTURE</constant>, the
1269<constant>V4L2_CAP_AUDIO</constant> flag indicates if the device has
1270any audio connectors, another I/O capability
1271<constant>V4L2_CAP_ASYNCIO</constant> can be flagged. In response to
1272these changes the <structfield>type</structfield> field became a bit
1273set and was merged into the <structfield>flags</structfield> field.
1274<constant>V4L2_FLAG_TUNER</constant> was renamed to
1275<constant>V4L2_CAP_TUNER</constant>,
1276<constant>V4L2_CAP_VIDEO_OVERLAY</constant> replaced
1277<constant>V4L2_FLAG_PREVIEW</constant> and
1278<constant>V4L2_CAP_VBI_CAPTURE</constant> and
1279<constant>V4L2_CAP_VBI_OUTPUT</constant> replaced
1280<constant>V4L2_FLAG_DATA_SERVICE</constant>.
1281<constant>V4L2_FLAG_READ</constant> and
1282<constant>V4L2_FLAG_WRITE</constant> were merged into
1283<constant>V4L2_CAP_READWRITE</constant>.</para>
1284
1285 <para>The redundant fields
1286<structfield>inputs</structfield>, <structfield>outputs</structfield>
1287and <structfield>audios</structfield> were removed. These properties
1288can be determined as described in <xref linkend="video" /> and <xref
1289linkend="audio" />.</para>
1290
1291 <para>The somewhat volatile and therefore barely useful
1292fields <structfield>maxwidth</structfield>,
1293<structfield>maxheight</structfield>,
1294<structfield>minwidth</structfield>,
1295<structfield>minheight</structfield>,
1296<structfield>maxframerate</structfield> were removed. This information
1297is available as described in <xref linkend="format" /> and
1298<xref linkend="standard" />.</para>
1299
1300 <para><constant>V4L2_FLAG_SELECT</constant> was removed. We
1301believe the select() function is important enough to require support
1302of it in all V4L2 drivers exchanging data with applications. The
1303redundant <constant>V4L2_FLAG_MONOCHROME</constant> flag was removed,
1304this information is available as described in <xref
1305 linkend="format" />.</para>
1306 </listitem>
1307
1308 <listitem>
1309 <para>In &v4l2-input; the
1310<structfield>assoc_audio</structfield> field and the
1311<structfield>capability</structfield> field and its only flag
1312<constant>V4L2_INPUT_CAP_AUDIO</constant> was replaced by the new
1313<structfield>audioset</structfield> field. Instead of linking one
1314video input to one audio input this field reports all audio inputs
1315this video input combines with.</para>
1316
1317 <para>New fields are <structfield>tuner</structfield>
1318(reversing the former link from tuners to video inputs),
1319<structfield>std</structfield> and
1320<structfield>status</structfield>.</para>
1321
1322 <para>Accordingly &v4l2-output; lost its
1323<structfield>capability</structfield> and
1324<structfield>assoc_audio</structfield> fields.
1325<structfield>audioset</structfield>,
1326<structfield>modulator</structfield> and
1327<structfield>std</structfield> where added instead.</para>
1328 </listitem>
1329
1330 <listitem>
1331 <para>The &v4l2-audio; field
1332<structfield>audio</structfield> was renamed to
1333<structfield>index</structfield>, for consistency with other
1334structures. A new capability flag
1335<constant>V4L2_AUDCAP_STEREO</constant> was added to indicated if the
1336audio input in question supports stereo sound.
1337<constant>V4L2_AUDCAP_EFFECTS</constant> and the corresponding
1338<constant>V4L2_AUDMODE</constant> flags where removed. This can be
1339easily implemented using controls. (However the same applies to AVL
1340which is still there.)</para>
1341
1342 <para>Again for consistency the &v4l2-audioout; field
1343<structfield>audio</structfield> was renamed to
1344<structfield>index</structfield>.</para>
1345 </listitem>
1346
1347 <listitem>
1348 <para>The &v4l2-tuner;
1349<structfield>input</structfield> field was replaced by an
1350<structfield>index</structfield> field, permitting devices with
1351multiple tuners. The link between video inputs and tuners is now
1352reversed, inputs point to their tuner. The
1353<structfield>std</structfield> substructure became a
1354simple set (more about this below) and moved into &v4l2-input;. A
1355<structfield>type</structfield> field was added.</para>
1356
1357 <para>Accordingly in &v4l2-modulator; the
1358<structfield>output</structfield> was replaced by an
1359<structfield>index</structfield> field.</para>
1360
1361 <para>In &v4l2-frequency; the
1362<structfield>port</structfield> field was replaced by a
1363<structfield>tuner</structfield> field containing the respective tuner
1364or modulator index number. A tuner <structfield>type</structfield>
1365field was added and the <structfield>reserved</structfield> field
1366became larger for future extensions (satellite tuners in
1367particular).</para>
1368 </listitem>
1369
1370 <listitem>
1371 <para>The idea of completely transparent video standards was
1372dropped. Experience showed that applications must be able to work with
1373video standards beyond presenting the user a menu. Instead of
1374enumerating supported standards with an ioctl applications can now
1375refer to standards by &v4l2-std-id; and symbols defined in the
1376<filename>videodev2.h</filename> header file. For details see <xref
1377 linkend="standard" />. The &VIDIOC-G-STD; and
1378&VIDIOC-S-STD; now take a pointer to this type as argument.
1379&VIDIOC-QUERYSTD; was added to autodetect the received standard, if
1380the hardware has this capability. In &v4l2-standard; an
1381<structfield>index</structfield> field was added for &VIDIOC-ENUMSTD;.
1382A &v4l2-std-id; field named <structfield>id</structfield> was added as
1383machine readable identifier, also replacing the
1384<structfield>transmission</structfield> field. The misleading
1385<structfield>framerate</structfield> field was renamed
1386to <structfield>frameperiod</structfield>. The now obsolete
1387<structfield>colorstandard</structfield> information, originally
1388needed to distguish between variations of standards, were
1389removed.</para>
1390
1391 <para>Struct <structname>v4l2_enumstd</structname> ceased to
1392be. &VIDIOC-ENUMSTD; now takes a pointer to a &v4l2-standard;
1393directly. The information which standards are supported by a
1394particular video input or output moved into &v4l2-input; and
1395&v4l2-output; fields named <structfield>std</structfield>,
1396respectively.</para>
1397 </listitem>
1398
1399 <listitem>
1400 <para>The &v4l2-queryctrl; fields
1401<structfield>category</structfield> and
1402<structfield>group</structfield> did not catch on and/or were not
1403implemented as expected and therefore removed.</para>
1404 </listitem>
1405
1406 <listitem>
1407 <para>The &VIDIOC-TRY-FMT; ioctl was added to negotiate data
1408formats as with &VIDIOC-S-FMT;, but without the overhead of
1409programming the hardware and regardless of I/O in progress.</para>
1410
1411 <para>In &v4l2-format; the <structfield>fmt</structfield>
1412union was extended to contain &v4l2-window;. All image format
1413negotiations are now possible with <constant>VIDIOC_G_FMT</constant>,
1414<constant>VIDIOC_S_FMT</constant> and
1415<constant>VIDIOC_TRY_FMT</constant>; ioctl. The
1416<constant>VIDIOC_G_WIN</constant> and
1417<constant>VIDIOC_S_WIN</constant> ioctls to prepare for a video
1418overlay were removed. The <structfield>type</structfield> field
1419changed to type &v4l2-buf-type; and the buffer type names changed as
1420follows.<informaltable>
1421 <tgroup cols="2">
1422 <thead>
1423 <row>
1424 <entry>Old defines</entry>
1425 <entry>&v4l2-buf-type;</entry>
1426 </row>
1427 </thead>
1428 <tbody valign="top">
1429 <row>
1430 <entry><constant>V4L2_BUF_TYPE_CAPTURE</constant></entry>
1431 <entry><constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant></entry>
1432 </row>
1433 <row>
1434 <entry><constant>V4L2_BUF_TYPE_CODECIN</constant></entry>
1435 <entry>Omitted for now</entry>
1436 </row>
1437 <row>
1438 <entry><constant>V4L2_BUF_TYPE_CODECOUT</constant></entry>
1439 <entry>Omitted for now</entry>
1440 </row>
1441 <row>
1442 <entry><constant>V4L2_BUF_TYPE_EFFECTSIN</constant></entry>
1443 <entry>Omitted for now</entry>
1444 </row>
1445 <row>
1446 <entry><constant>V4L2_BUF_TYPE_EFFECTSIN2</constant></entry>
1447 <entry>Omitted for now</entry>
1448 </row>
1449 <row>
1450 <entry><constant>V4L2_BUF_TYPE_EFFECTSOUT</constant></entry>
1451 <entry>Omitted for now</entry>
1452 </row>
1453 <row>
1454 <entry><constant>V4L2_BUF_TYPE_VIDEOOUT</constant></entry>
1455 <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant></entry>
1456 </row>
1457 <row>
1458 <entry><constant>-</constant></entry>
1459 <entry><constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant></entry>
1460 </row>
1461 <row>
1462 <entry><constant>-</constant></entry>
1463 <entry><constant>V4L2_BUF_TYPE_VBI_CAPTURE</constant></entry>
1464 </row>
1465 <row>
1466 <entry><constant>-</constant></entry>
1467 <entry><constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant></entry>
1468 </row>
1469 <row>
1470 <entry><constant>-</constant></entry>
1471 <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant></entry>
1472 </row>
1473 <row>
1474 <entry><constant>-</constant></entry>
1475 <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant></entry>
1476 </row>
1477 <row>
1478 <entry><constant>V4L2_BUF_TYPE_PRIVATE_BASE</constant></entry>
1479 <entry><constant>V4L2_BUF_TYPE_PRIVATE</constant> (but this is deprecated)</entry>
1480 </row>
1481 </tbody>
1482 </tgroup>
1483 </informaltable></para>
1484 </listitem>
1485
1486 <listitem>
1487 <para>In &v4l2-fmtdesc; a &v4l2-buf-type; field named
1488<structfield>type</structfield> was added as in &v4l2-format;. The
1489<constant>VIDIOC_ENUM_FBUFFMT</constant> ioctl is no longer needed and
1490was removed. These calls can be replaced by &VIDIOC-ENUM-FMT; with
1491type <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>.</para>
1492 </listitem>
1493
1494 <listitem>
1495 <para>In &v4l2-pix-format; the
1496<structfield>depth</structfield> field was removed, assuming
1497applications which recognize the format by its four-character-code
1498already know the color depth, and others do not care about it. The
1499same rationale lead to the removal of the
1500<constant>V4L2_FMT_FLAG_COMPRESSED</constant> flag. The
1501<constant>V4L2_FMT_FLAG_SWCONVECOMPRESSED</constant> flag was removed
1502because drivers are not supposed to convert images in kernel space. A
1503user library of conversion functions should be provided instead. The
1504<constant>V4L2_FMT_FLAG_BYTESPERLINE</constant> flag was redundant.
1505Applications can set the <structfield>bytesperline</structfield> field
1506to zero to get a reasonable default. Since the remaining flags were
1507replaced as well, the <structfield>flags</structfield> field itself
1508was removed.</para>
1509 <para>The interlace flags were replaced by a &v4l2-field;
1510value in a newly added <structfield>field</structfield>
1511field.<informaltable>
1512 <tgroup cols="2">
1513 <thead>
1514 <row>
1515 <entry>Old flag</entry>
1516 <entry>&v4l2-field;</entry>
1517 </row>
1518 </thead>
1519 <tbody valign="top">
1520 <row>
1521 <entry><constant>V4L2_FMT_FLAG_NOT_INTERLACED</constant></entry>
1522 <entry>?</entry>
1523 </row>
1524 <row>
1525 <entry><constant>V4L2_FMT_FLAG_INTERLACED</constant>
1526= <constant>V4L2_FMT_FLAG_COMBINED</constant></entry>
1527 <entry><constant>V4L2_FIELD_INTERLACED</constant></entry>
1528 </row>
1529 <row>
1530 <entry><constant>V4L2_FMT_FLAG_TOPFIELD</constant>
1531= <constant>V4L2_FMT_FLAG_ODDFIELD</constant></entry>
1532 <entry><constant>V4L2_FIELD_TOP</constant></entry>
1533 </row>
1534 <row>
1535 <entry><constant>V4L2_FMT_FLAG_BOTFIELD</constant>
1536= <constant>V4L2_FMT_FLAG_EVENFIELD</constant></entry>
1537 <entry><constant>V4L2_FIELD_BOTTOM</constant></entry>
1538 </row>
1539 <row>
1540 <entry><constant>-</constant></entry>
1541 <entry><constant>V4L2_FIELD_SEQ_TB</constant></entry>
1542 </row>
1543 <row>
1544 <entry><constant>-</constant></entry>
1545 <entry><constant>V4L2_FIELD_SEQ_BT</constant></entry>
1546 </row>
1547 <row>
1548 <entry><constant>-</constant></entry>
1549 <entry><constant>V4L2_FIELD_ALTERNATE</constant></entry>
1550 </row>
1551 </tbody>
1552 </tgroup>
1553 </informaltable></para>
1554
1555 <para>The color space flags were replaced by a
1556&v4l2-colorspace; value in a newly added
1557<structfield>colorspace</structfield> field, where one of
1558<constant>V4L2_COLORSPACE_SMPTE170M</constant>,
1559<constant>V4L2_COLORSPACE_BT878</constant>,
1560<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant> or
1561<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant> replaces
1562<constant>V4L2_FMT_CS_601YUV</constant>.</para>
1563 </listitem>
1564
1565 <listitem>
1566 <para>In &v4l2-requestbuffers; the
1567<structfield>type</structfield> field was properly defined as
1568&v4l2-buf-type;. Buffer types changed as mentioned above. A new
1569<structfield>memory</structfield> field of type &v4l2-memory; was
1570added to distinguish between I/O methods using buffers allocated
1571by the driver or the application. See <xref linkend="io" /> for
1572details.</para>
1573 </listitem>
1574
1575 <listitem>
1576 <para>In &v4l2-buffer; the <structfield>type</structfield>
1577field was properly defined as &v4l2-buf-type;. Buffer types changed as
1578mentioned above. A <structfield>field</structfield> field of type
1579&v4l2-field; was added to indicate if a buffer contains a top or
1580bottom field. The old field flags were removed. Since no unadjusted
1581system time clock was added to the kernel as planned, the
1582<structfield>timestamp</structfield> field changed back from type
1583stamp_t, an unsigned 64 bit integer expressing the sample time in
1584nanoseconds, to struct <structname>timeval</structname>. With the
1585addition of a second memory mapping method the
1586<structfield>offset</structfield> field moved into union
1587<structfield>m</structfield>, and a new
1588<structfield>memory</structfield> field of type &v4l2-memory; was
1589added to distinguish between I/O methods. See <xref linkend="io" />
1590for details.</para>
1591
1592 <para>The <constant>V4L2_BUF_REQ_CONTIG</constant>
1593flag was used by the V4L compatibility layer, after changes to this
1594code it was no longer needed. The
1595<constant>V4L2_BUF_ATTR_DEVICEMEM</constant> flag would indicate if
1596the buffer was indeed allocated in device memory rather than DMA-able
1597system memory. It was barely useful and so was removed.</para>
1598 </listitem>
1599
1600 <listitem>
1601 <para>In &v4l2-framebuffer; the
1602<structfield>base[3]</structfield> array anticipating double- and
1603triple-buffering in off-screen video memory, however without defining
1604a synchronization mechanism, was replaced by a single pointer. The
1605<constant>V4L2_FBUF_CAP_SCALEUP</constant> and
1606<constant>V4L2_FBUF_CAP_SCALEDOWN</constant> flags were removed.
1607Applications can determine this capability more accurately using the
1608new cropping and scaling interface. The
1609<constant>V4L2_FBUF_CAP_CLIPPING</constant> flag was replaced by
1610<constant>V4L2_FBUF_CAP_LIST_CLIPPING</constant> and
1611<constant>V4L2_FBUF_CAP_BITMAP_CLIPPING</constant>.</para>
1612 </listitem>
1613
1614 <listitem>
1615 <para>In &v4l2-clip; the <structfield>x</structfield>,
1616<structfield>y</structfield>, <structfield>width</structfield> and
1617<structfield>height</structfield> field moved into a
1618<structfield>c</structfield> substructure of type &v4l2-rect;. The
1619<structfield>x</structfield> and <structfield>y</structfield> fields
1620were renamed to <structfield>left</structfield> and
1621<structfield>top</structfield>, &ie; offsets to a context dependent
1622origin.</para>
1623 </listitem>
1624
1625 <listitem>
1626 <para>In &v4l2-window; the <structfield>x</structfield>,
1627<structfield>y</structfield>, <structfield>width</structfield> and
1628<structfield>height</structfield> field moved into a
1629<structfield>w</structfield> substructure as above. A
1630<structfield>field</structfield> field of type %v4l2-field; was added
1631to distinguish between field and frame (interlaced) overlay.</para>
1632 </listitem>
1633
1634 <listitem>
1635 <para>The digital zoom interface, including struct
1636<structname>v4l2_zoomcap</structname>, struct
1637<structname>v4l2_zoom</structname>,
1638<constant>V4L2_ZOOM_NONCAP</constant> and
1639<constant>V4L2_ZOOM_WHILESTREAMING</constant> was replaced by a new
1640cropping and scaling interface. The previously unused struct
1641<structname>v4l2_cropcap</structname> and
1642<structname>v4l2_crop</structname> where redefined for this purpose.
1643See <xref linkend="crop" /> for details.</para>
1644 </listitem>
1645
1646 <listitem>
1647 <para>In &v4l2-vbi-format; the
1648<structfield>SAMPLE_FORMAT</structfield> field now contains a
1649four-character-code as used to identify video image formats and
1650<constant>V4L2_PIX_FMT_GREY</constant> replaces the
1651<constant>V4L2_VBI_SF_UBYTE</constant> define. The
1652<structfield>reserved</structfield> field was extended.</para>
1653 </listitem>
1654
1655 <listitem>
1656 <para>In &v4l2-captureparm; the type of the
1657<structfield>timeperframe</structfield> field changed from unsigned
1658long to &v4l2-fract;. This allows the accurate expression of multiples
1659of the NTSC-M frame rate 30000 / 1001. A new field
1660<structfield>readbuffers</structfield> was added to control the driver
1661behaviour in read I/O mode.</para>
1662
1663 <para>Similar changes were made to &v4l2-outputparm;.</para>
1664 </listitem>
1665
1666 <listitem>
1667 <para>The struct <structname>v4l2_performance</structname>
1668and <constant>VIDIOC_G_PERF</constant> ioctl were dropped. Except when
1669using the <link linkend="rw">read/write I/O method</link>, which is
1670limited anyway, this information is already available to
1671applications.</para>
1672 </listitem>
1673
1674 <listitem>
1675 <para>The example transformation from RGB to YCbCr color
1676space in the old V4L2 documentation was inaccurate, this has been
1677corrected in <xref linkend="pixfmt" />.<!-- 0.5670G should be
16780.587, and 127/112 != 255/224 --></para>
1679 </listitem>
1680 </orderedlist>
1681 </section>
1682
1683 <section>
1684 <title>V4L2 2003-06-19</title>
1685
1686 <orderedlist>
1687 <listitem>
1688 <para>A new capability flag
1689<constant>V4L2_CAP_RADIO</constant> was added for radio devices. Prior
1690to this change radio devices would identify solely by having exactly one
1691tuner whose type field reads <constant>V4L2_TUNER_RADIO</constant>.</para>
1692 </listitem>
1693
1694 <listitem>
1695 <para>An optional driver access priority mechanism was
1696added, see <xref linkend="app-pri" /> for details.</para>
1697 </listitem>
1698
1699 <listitem>
1700 <para>The audio input and output interface was found to be
1701incomplete.</para>
1702 <para>Previously the &VIDIOC-G-AUDIO;
1703ioctl would enumerate the available audio inputs. An ioctl to
1704determine the current audio input, if more than one combines with the
1705current video input, did not exist. So
1706<constant>VIDIOC_G_AUDIO</constant> was renamed to
1707<constant>VIDIOC_G_AUDIO_OLD</constant>, this ioctl was removed on
1708Kernel 2.6.39. The &VIDIOC-ENUMAUDIO; ioctl was added to enumerate
1709audio inputs, while &VIDIOC-G-AUDIO; now reports the current audio
1710input.</para>
1711 <para>The same changes were made to &VIDIOC-G-AUDOUT; and
1712&VIDIOC-ENUMAUDOUT;.</para>
1713 <para>Until further the "videodev" module will automatically
1714translate between the old and new ioctls, but drivers and applications
1715must be updated to successfully compile again.</para>
1716 </listitem>
1717
1718 <listitem>
1719 <para>The &VIDIOC-OVERLAY; ioctl was incorrectly defined with
1720write-read parameter. It was changed to write-only, while the write-read
1721version was renamed to <constant>VIDIOC_OVERLAY_OLD</constant>. The old
1722ioctl was removed on Kernel 2.6.39. Until further the "videodev"
1723kernel module will automatically translate to the new version, so drivers
1724must be recompiled, but not applications.</para>
1725 </listitem>
1726
1727 <listitem>
1728 <para><xref linkend="overlay" /> incorrectly stated that
1729clipping rectangles define regions where the video can be seen.
1730Correct is that clipping rectangles define regions where
1731<emphasis>no</emphasis> video shall be displayed and so the graphics
1732surface can be seen.</para>
1733 </listitem>
1734
1735 <listitem>
1736 <para>The &VIDIOC-S-PARM; and &VIDIOC-S-CTRL; ioctls were
1737defined with write-only parameter, inconsistent with other ioctls
1738modifying their argument. They were changed to write-read, while a
1739<constant>_OLD</constant> suffix was added to the write-only versions.
1740The old ioctls were removed on Kernel 2.6.39. Drivers and
1741applications assuming a constant parameter need an update.</para>
1742 </listitem>
1743 </orderedlist>
1744 </section>
1745
1746 <section>
1747 <title>V4L2 2003-11-05</title>
1748 <orderedlist>
1749 <listitem>
1750 <para>In <xref linkend="pixfmt-rgb" /> the following pixel
1751formats were incorrectly transferred from Bill Dirks' V4L2
1752specification. Descriptions below refer to bytes in memory, in
1753ascending address order.<informaltable>
1754 <tgroup cols="3">
1755 <thead>
1756 <row>
1757 <entry>Symbol</entry>
1758 <entry>In this document prior to revision
17590.5</entry>
1760 <entry>Corrected</entry>
1761 </row>
1762 </thead>
1763 <tbody valign="top">
1764 <row>
1765 <entry><constant>V4L2_PIX_FMT_RGB24</constant></entry>
1766 <entry>B, G, R</entry>
1767 <entry>R, G, B</entry>
1768 </row>
1769 <row>
1770 <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry>
1771 <entry>R, G, B</entry>
1772 <entry>B, G, R</entry>
1773 </row>
1774 <row>
1775 <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry>
1776 <entry>B, G, R, X</entry>
1777 <entry>R, G, B, X</entry>
1778 </row>
1779 <row>
1780 <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry>
1781 <entry>R, G, B, X</entry>
1782 <entry>B, G, R, X</entry>
1783 </row>
1784 </tbody>
1785 </tgroup>
1786 </informaltable> The
1787<constant>V4L2_PIX_FMT_BGR24</constant> example was always
1788correct.</para>
1789 <para>In <xref linkend="v4l-image-properties" /> the mapping
1790of the V4L <constant>VIDEO_PALETTE_RGB24</constant> and
1791<constant>VIDEO_PALETTE_RGB32</constant> formats to V4L2 pixel formats
1792was accordingly corrected.</para>
1793 </listitem>
1794
1795 <listitem>
1796 <para>Unrelated to the fixes above, drivers may still
1797interpret some V4L2 RGB pixel formats differently. These issues have
1798yet to be addressed, for details see <xref
1799 linkend="pixfmt-rgb" />.</para>
1800 </listitem>
1801 </orderedlist>
1802 </section>
1803
1804 <section>
1805 <title>V4L2 in Linux 2.6.6, 2004-05-09</title>
1806 <orderedlist>
1807 <listitem>
1808 <para>The &VIDIOC-CROPCAP; ioctl was incorrectly defined
1809with read-only parameter. It is now defined as write-read ioctl, while
1810the read-only version was renamed to
1811<constant>VIDIOC_CROPCAP_OLD</constant>. The old ioctl was removed
1812on Kernel 2.6.39.</para>
1813 </listitem>
1814 </orderedlist>
1815 </section>
1816
1817 <section>
1818 <title>V4L2 in Linux 2.6.8</title>
1819 <orderedlist>
1820 <listitem>
1821 <para>A new field <structfield>input</structfield> (former
1822<structfield>reserved[0]</structfield>) was added to the &v4l2-buffer;
1823structure. Purpose of this field is to alternate between video inputs
1824(&eg; cameras) in step with the video capturing process. This function
1825must be enabled with the new <constant>V4L2_BUF_FLAG_INPUT</constant>
1826flag. The <structfield>flags</structfield> field is no longer
1827read-only.</para>
1828 </listitem>
1829 </orderedlist>
1830 </section>
1831
1832 <section>
1833 <title>V4L2 spec erratum 2004-08-01</title>
1834
1835 <orderedlist>
1836 <listitem>
1837 <para>The return value of the
1838<xref linkend="func-open" /> function was incorrectly documented.</para>
1839 </listitem>
1840
1841 <listitem>
1842 <para>Audio output ioctls end in -AUDOUT, not -AUDIOOUT.</para>
1843 </listitem>
1844
1845 <listitem>
1846 <para>In the Current Audio Input example the
1847<constant>VIDIOC_G_AUDIO</constant> ioctl took the wrong
1848argument.</para>
1849 </listitem>
1850
1851 <listitem>
1852 <para>The documentation of the &VIDIOC-QBUF; and
1853&VIDIOC-DQBUF; ioctls did not mention the &v4l2-buffer;
1854<structfield>memory</structfield> field. It was also missing from
1855examples. Also on the <constant>VIDIOC_DQBUF</constant> page the &EIO;
1856was not documented.</para>
1857 </listitem>
1858 </orderedlist>
1859 </section>
1860
1861 <section>
1862 <title>V4L2 in Linux 2.6.14</title>
1863 <orderedlist>
1864 <listitem>
1865 <para>A new sliced VBI interface was added. It is documented
1866in <xref linkend="sliced" /> and replaces the interface first
1867proposed in V4L2 specification 0.8.</para>
1868 </listitem>
1869 </orderedlist>
1870 </section>
1871
1872 <section>
1873 <title>V4L2 in Linux 2.6.15</title>
1874 <orderedlist>
1875 <listitem>
1876 <para>The &VIDIOC-LOG-STATUS; ioctl was added.</para>
1877 </listitem>
1878
1879 <listitem>
1880 <para>New video standards
1881<constant>V4L2_STD_NTSC_443</constant>,
1882<constant>V4L2_STD_SECAM_LC</constant>,
1883<constant>V4L2_STD_SECAM_DK</constant> (a set of SECAM D, K and K1),
1884and <constant>V4L2_STD_ATSC</constant> (a set of
1885<constant>V4L2_STD_ATSC_8_VSB</constant> and
1886<constant>V4L2_STD_ATSC_16_VSB</constant>) were defined. Note the
1887<constant>V4L2_STD_525_60</constant> set now includes
1888<constant>V4L2_STD_NTSC_443</constant>. See also <xref
1889 linkend="v4l2-std-id" />.</para>
1890 </listitem>
1891
1892 <listitem>
1893 <para>The <constant>VIDIOC_G_COMP</constant> and
1894<constant>VIDIOC_S_COMP</constant> ioctl were renamed to
1895<constant>VIDIOC_G_MPEGCOMP</constant> and
1896<constant>VIDIOC_S_MPEGCOMP</constant> respectively. Their argument
1897was replaced by a struct
1898<structname>v4l2_mpeg_compression</structname> pointer. (The
1899<constant>VIDIOC_G_MPEGCOMP</constant> and
1900<constant>VIDIOC_S_MPEGCOMP</constant> ioctls where removed in Linux
19012.6.25.)</para>
1902 </listitem>
1903 </orderedlist>
1904 </section>
1905
1906 <section>
1907 <title>V4L2 spec erratum 2005-11-27</title>
1908 <para>The capture example in <xref linkend="capture-example" />
1909called the &VIDIOC-S-CROP; ioctl without checking if cropping is
1910supported. In the video standard selection example in
1911<xref linkend="standard" /> the &VIDIOC-S-STD; call used the wrong
1912argument type.</para>
1913 </section>
1914
1915 <section>
1916 <title>V4L2 spec erratum 2006-01-10</title>
1917 <orderedlist>
1918 <listitem>
1919 <para>The <constant>V4L2_IN_ST_COLOR_KILL</constant> flag in
1920&v4l2-input; not only indicates if the color killer is enabled, but
1921also if it is active. (The color killer disables color decoding when
1922it detects no color in the video signal to improve the image
1923quality.)</para>
1924 </listitem>
1925
1926 <listitem>
1927 <para>&VIDIOC-S-PARM; is a write-read ioctl, not write-only as
1928stated on its reference page. The ioctl changed in 2003 as noted above.</para>
1929 </listitem>
1930 </orderedlist>
1931 </section>
1932
1933 <section>
1934 <title>V4L2 spec erratum 2006-02-03</title>
1935 <orderedlist>
1936 <listitem>
1937 <para>In &v4l2-captureparm; and &v4l2-outputparm; the
1938<structfield>timeperframe</structfield> field gives the time in
1939seconds, not microseconds.</para>
1940 </listitem>
1941 </orderedlist>
1942 </section>
1943
1944 <section>
1945 <title>V4L2 spec erratum 2006-02-04</title>
1946 <orderedlist>
1947 <listitem>
1948 <para>The <structfield>clips</structfield> field in
1949&v4l2-window; must point to an array of &v4l2-clip;, not a linked
1950list, because drivers ignore the struct
1951<structname>v4l2_clip</structname>.<structfield>next</structfield>
1952pointer.</para>
1953 </listitem>
1954 </orderedlist>
1955 </section>
1956
1957 <section>
1958 <title>V4L2 in Linux 2.6.17</title>
1959 <orderedlist>
1960 <listitem>
1961 <para>New video standard macros were added:
1962<constant>V4L2_STD_NTSC_M_KR</constant> (NTSC M South Korea), and the
1963sets <constant>V4L2_STD_MN</constant>,
1964<constant>V4L2_STD_B</constant>, <constant>V4L2_STD_GH</constant> and
1965<constant>V4L2_STD_DK</constant>. The
1966<constant>V4L2_STD_NTSC</constant> and
1967<constant>V4L2_STD_SECAM</constant> sets now include
1968<constant>V4L2_STD_NTSC_M_KR</constant> and
1969<constant>V4L2_STD_SECAM_LC</constant> respectively.</para>
1970 </listitem>
1971
1972 <listitem>
1973 <para>A new <constant>V4L2_TUNER_MODE_LANG1_LANG2</constant>
1974was defined to record both languages of a bilingual program. The
1975use of <constant>V4L2_TUNER_MODE_STEREO</constant> for this purpose
1976is deprecated now. See the &VIDIOC-G-TUNER; section for
1977details.</para>
1978 </listitem>
1979 </orderedlist>
1980 </section>
1981
1982 <section>
1983 <title>V4L2 spec erratum 2006-09-23 (Draft 0.15)</title>
1984 <orderedlist>
1985 <listitem>
1986 <para>In various places
1987<constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant> and
1988<constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant> of the sliced VBI
1989interface were not mentioned along with other buffer types.</para>
1990 </listitem>
1991
1992 <listitem>
1993 <para>In <xref linkend="vidioc-g-audio" /> it was clarified
1994that the &v4l2-audio; <structfield>mode</structfield> field is a flags
1995field.</para>
1996 </listitem>
1997
1998 <listitem>
1999 <para><xref linkend="vidioc-querycap" /> did not mention the
2000sliced VBI and radio capability flags.</para>
2001 </listitem>
2002
2003 <listitem>
2004 <para>In <xref linkend="vidioc-g-frequency" /> it was
2005clarified that applications must initialize the tuner
2006<structfield>type</structfield> field of &v4l2-frequency; before
2007calling &VIDIOC-S-FREQUENCY;.</para>
2008 </listitem>
2009
2010 <listitem>
2011 <para>The <structfield>reserved</structfield> array
2012in &v4l2-requestbuffers; has 2 elements, not 32.</para>
2013 </listitem>
2014
2015 <listitem>
2016 <para>In <xref linkend="output" /> and <xref
2017 linkend="raw-vbi" /> the device file names
2018<filename>/dev/vout</filename> which never caught on were replaced
2019by <filename>/dev/video</filename>.</para>
2020 </listitem>
2021
2022 <listitem>
2023 <para>With Linux 2.6.15 the possible range for VBI device minor
2024numbers was extended from 224-239 to 224-255. Accordingly device file names
2025<filename>/dev/vbi0</filename> to <filename>/dev/vbi31</filename> are
2026possible now.</para>
2027 </listitem>
2028 </orderedlist>
2029 </section>
2030
2031 <section>
2032 <title>V4L2 in Linux 2.6.18</title>
2033 <orderedlist>
2034 <listitem>
2035 <para>New ioctls &VIDIOC-G-EXT-CTRLS;, &VIDIOC-S-EXT-CTRLS;
2036and &VIDIOC-TRY-EXT-CTRLS; were added, a flag to skip unsupported
2037controls with &VIDIOC-QUERYCTRL;, new control types
2038<constant>V4L2_CTRL_TYPE_INTEGER64</constant> and
2039<constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant> (<xref
2040 linkend="v4l2-ctrl-type" />), and new control flags
2041<constant>V4L2_CTRL_FLAG_READ_ONLY</constant>,
2042<constant>V4L2_CTRL_FLAG_UPDATE</constant>,
2043<constant>V4L2_CTRL_FLAG_INACTIVE</constant> and
2044<constant>V4L2_CTRL_FLAG_SLIDER</constant> (<xref
2045 linkend="control-flags" />). See <xref
2046 linkend="extended-controls" /> for details.</para>
2047 </listitem>
2048 </orderedlist>
2049 </section>
2050
2051 <section>
2052 <title>V4L2 in Linux 2.6.19</title>
2053 <orderedlist>
2054 <listitem>
2055 <para>In &v4l2-sliced-vbi-cap; a buffer type field was added
2056replacing a reserved field. Note on architectures where the size of
2057enum types differs from int types the size of the structure changed.
2058The &VIDIOC-G-SLICED-VBI-CAP; ioctl was redefined from being read-only
2059to write-read. Applications must initialize the type field and clear
2060the reserved fields now. These changes may <emphasis>break the
2061compatibility</emphasis> with older drivers and applications.</para>
2062 </listitem>
2063
2064 <listitem>
2065 <para>The ioctls &VIDIOC-ENUM-FRAMESIZES; and
2066&VIDIOC-ENUM-FRAMEINTERVALS; were added.</para>
2067 </listitem>
2068
2069 <listitem>
2070 <para>A new pixel format <constant>V4L2_PIX_FMT_RGB444</constant> (<xref
2071linkend="rgb-formats" />) was added.</para>
2072 </listitem>
2073 </orderedlist>
2074 </section>
2075
2076 <section>
2077 <title>V4L2 spec erratum 2006-10-12 (Draft 0.17)</title>
2078 <orderedlist>
2079 <listitem>
2080 <para><constant>V4L2_PIX_FMT_HM12</constant> (<xref
2081linkend="reserved-formats" />) is a YUV 4:2:0, not 4:2:2 format.</para>
2082 </listitem>
2083 </orderedlist>
2084 </section>
2085
2086 <section>
2087 <title>V4L2 in Linux 2.6.21</title>
2088 <orderedlist>
2089 <listitem>
2090 <para>The <filename>videodev2.h</filename> header file is
2091now dual licensed under GNU General Public License version two or
2092later, and under a 3-clause BSD-style license.</para>
2093 </listitem>
2094 </orderedlist>
2095 </section>
2096
2097 <section>
2098 <title>V4L2 in Linux 2.6.22</title>
2099 <orderedlist>
2100 <listitem>
2101 <para>Two new field orders
2102 <constant>V4L2_FIELD_INTERLACED_TB</constant> and
2103 <constant>V4L2_FIELD_INTERLACED_BT</constant> were
2104 added. See <xref linkend="v4l2-field" /> for details.</para>
2105 </listitem>
2106
2107 <listitem>
2108 <para>Three new clipping/blending methods with a global or
2109straight or inverted local alpha value were added to the video overlay
2110interface. See the description of the &VIDIOC-G-FBUF; and
2111&VIDIOC-S-FBUF; ioctls for details.</para>
2112 <para>A new <structfield>global_alpha</structfield> field
2113was added to <link
2114linkend="v4l2-window"><structname>v4l2_window</structname></link>,
2115extending the structure. This may <emphasis>break
2116compatibility</emphasis> with applications using a struct
2117<structname>v4l2_window</structname> directly. However the <link
2118linkend="vidioc-g-fmt">VIDIOC_G/S/TRY_FMT</link> ioctls, which take a
2119pointer to a <link linkend="v4l2-format">v4l2_format</link> parent
2120structure with padding bytes at the end, are not affected.</para>
2121 </listitem>
2122
2123 <listitem>
2124 <para>The format of the <structfield>chromakey</structfield>
2125field in &v4l2-window; changed from "host order RGB32" to a pixel
2126value in the same format as the framebuffer. This may <emphasis>break
2127compatibility</emphasis> with existing applications. Drivers
2128supporting the "host order RGB32" format are not known.</para>
2129 </listitem>
2130
2131 </orderedlist>
2132 </section>
2133
2134 <section>
2135 <title>V4L2 in Linux 2.6.24</title>
2136 <orderedlist>
2137 <listitem>
2138 <para>The pixel formats
2139<constant>V4L2_PIX_FMT_PAL8</constant>,
2140<constant>V4L2_PIX_FMT_YUV444</constant>,
2141<constant>V4L2_PIX_FMT_YUV555</constant>,
2142<constant>V4L2_PIX_FMT_YUV565</constant> and
2143<constant>V4L2_PIX_FMT_YUV32</constant> were added.</para>
2144 </listitem>
2145 </orderedlist>
2146 </section>
2147
2148 <section>
2149 <title>V4L2 in Linux 2.6.25</title>
2150 <orderedlist>
2151 <listitem>
2152 <para>The pixel formats <link linkend="V4L2-PIX-FMT-Y16">
2153<constant>V4L2_PIX_FMT_Y16</constant></link> and <link
2154linkend="V4L2-PIX-FMT-SBGGR16">
2155<constant>V4L2_PIX_FMT_SBGGR16</constant></link> were added.</para>
2156 </listitem>
2157 <listitem>
2158 <para>New <link linkend="control">controls</link>
2159<constant>V4L2_CID_POWER_LINE_FREQUENCY</constant>,
2160<constant>V4L2_CID_HUE_AUTO</constant>,
2161<constant>V4L2_CID_WHITE_BALANCE_TEMPERATURE</constant>,
2162<constant>V4L2_CID_SHARPNESS</constant> and
2163<constant>V4L2_CID_BACKLIGHT_COMPENSATION</constant> were added. The
2164controls <constant>V4L2_CID_BLACK_LEVEL</constant>,
2165<constant>V4L2_CID_WHITENESS</constant>,
2166<constant>V4L2_CID_HCENTER</constant> and
2167<constant>V4L2_CID_VCENTER</constant> were deprecated.
2168</para>
2169 </listitem>
2170 <listitem>
2171 <para>A <link linkend="camera-controls">Camera controls
2172class</link> was added, with the new controls
2173<constant>V4L2_CID_EXPOSURE_AUTO</constant>,
2174<constant>V4L2_CID_EXPOSURE_ABSOLUTE</constant>,
2175<constant>V4L2_CID_EXPOSURE_AUTO_PRIORITY</constant>,
2176<constant>V4L2_CID_PAN_RELATIVE</constant>,
2177<constant>V4L2_CID_TILT_RELATIVE</constant>,
2178<constant>V4L2_CID_PAN_RESET</constant>,
2179<constant>V4L2_CID_TILT_RESET</constant>,
2180<constant>V4L2_CID_PAN_ABSOLUTE</constant>,
2181<constant>V4L2_CID_TILT_ABSOLUTE</constant>,
2182<constant>V4L2_CID_FOCUS_ABSOLUTE</constant>,
2183<constant>V4L2_CID_FOCUS_RELATIVE</constant> and
2184<constant>V4L2_CID_FOCUS_AUTO</constant>.</para>
2185 </listitem>
2186 <listitem>
2187 <para>The <constant>VIDIOC_G_MPEGCOMP</constant> and
2188<constant>VIDIOC_S_MPEGCOMP</constant> ioctls, which were superseded
2189by the <link linkend="extended-controls">extended controls</link>
2190interface in Linux 2.6.18, where finally removed from the
2191<filename>videodev2.h</filename> header file.</para>
2192 </listitem>
2193 </orderedlist>
2194 </section>
2195
2196 <section>
2197 <title>V4L2 in Linux 2.6.26</title>
2198 <orderedlist>
2199 <listitem>
2200 <para>The pixel formats
2201<constant>V4L2_PIX_FMT_Y16</constant> and
2202<constant>V4L2_PIX_FMT_SBGGR16</constant> were added.</para>
2203 </listitem>
2204 <listitem>
2205 <para>Added user controls
2206<constant>V4L2_CID_CHROMA_AGC</constant> and
2207<constant>V4L2_CID_COLOR_KILLER</constant>.</para>
2208 </listitem>
2209 </orderedlist>
2210 </section>
2211
2212 <section>
2213 <title>V4L2 in Linux 2.6.27</title>
2214 <orderedlist>
2215 <listitem>
2216 <para>The &VIDIOC-S-HW-FREQ-SEEK; ioctl and the
2217<constant>V4L2_CAP_HW_FREQ_SEEK</constant> capability were added.</para>
2218 </listitem>
2219 <listitem>
2220 <para>The pixel formats
2221<constant>V4L2_PIX_FMT_YVYU</constant>,
2222<constant>V4L2_PIX_FMT_PCA501</constant>,
2223<constant>V4L2_PIX_FMT_PCA505</constant>,
2224<constant>V4L2_PIX_FMT_PCA508</constant>,
2225<constant>V4L2_PIX_FMT_PCA561</constant>,
2226<constant>V4L2_PIX_FMT_SGBRG8</constant>,
2227<constant>V4L2_PIX_FMT_PAC207</constant> and
2228<constant>V4L2_PIX_FMT_PJPG</constant> were added.</para>
2229 </listitem>
2230 </orderedlist>
2231 </section>
2232
2233 <section>
2234 <title>V4L2 in Linux 2.6.28</title>
2235 <orderedlist>
2236 <listitem>
2237 <para>Added <constant>V4L2_MPEG_AUDIO_ENCODING_AAC</constant> and
2238<constant>V4L2_MPEG_AUDIO_ENCODING_AC3</constant> MPEG audio encodings.</para>
2239 </listitem>
2240 <listitem>
2241 <para>Added <constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC</constant> MPEG
2242video encoding.</para>
2243 </listitem>
2244 <listitem>
2245 <para>The pixel formats
2246<constant>V4L2_PIX_FMT_SGRBG10</constant> and
2247<constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant> were added.</para>
2248 </listitem>
2249 </orderedlist>
2250 </section>
2251
2252 <section>
2253 <title>V4L2 in Linux 2.6.29</title>
2254 <orderedlist>
2255 <listitem>
2256 <para>The <constant>VIDIOC_G_CHIP_IDENT</constant> ioctl was renamed
2257to <constant>VIDIOC_G_CHIP_IDENT_OLD</constant> and <constant>VIDIOC_DBG_G_CHIP_IDENT</constant>
2258was introduced in its place. The old struct <structname>v4l2_chip_ident</structname>
2259was renamed to <structname id="v4l2-chip-ident-old">v4l2_chip_ident_old</structname>.</para>
2260 </listitem>
2261 <listitem>
2262 <para>The pixel formats
2263<constant>V4L2_PIX_FMT_VYUY</constant>,
2264<constant>V4L2_PIX_FMT_NV16</constant> and
2265<constant>V4L2_PIX_FMT_NV61</constant> were added.</para>
2266 </listitem>
2267 <listitem>
2268 <para>Added camera controls
2269<constant>V4L2_CID_ZOOM_ABSOLUTE</constant>,
2270<constant>V4L2_CID_ZOOM_RELATIVE</constant>,
2271<constant>V4L2_CID_ZOOM_CONTINUOUS</constant> and
2272<constant>V4L2_CID_PRIVACY</constant>.</para>
2273 </listitem>
2274 </orderedlist>
2275 </section>
2276 <section>
2277 <title>V4L2 in Linux 2.6.30</title>
2278 <orderedlist>
2279 <listitem>
2280 <para>New control flag <constant>V4L2_CTRL_FLAG_WRITE_ONLY</constant> was added.</para>
2281 </listitem>
2282 <listitem>
2283 <para>New control <constant>V4L2_CID_COLORFX</constant> was added.</para>
2284 </listitem>
2285 </orderedlist>
2286 </section>
2287 <section>
2288 <title>V4L2 in Linux 2.6.32</title>
2289 <orderedlist>
2290 <listitem>
2291 <para>In order to be easier to compare a V4L2 API and a kernel
2292version, now V4L2 API is numbered using the Linux Kernel version numeration.</para>
2293 </listitem>
2294 <listitem>
2295 <para>Finalized the RDS capture API. See <xref linkend="rds" /> for
2296more information.</para>
2297 </listitem>
2298 <listitem>
2299 <para>Added new capabilities for modulators and RDS encoders.</para>
2300 </listitem>
2301 <listitem>
2302 <para>Add description for libv4l API.</para>
2303 </listitem>
2304 <listitem>
2305 <para>Added support for string controls via new type <constant>V4L2_CTRL_TYPE_STRING</constant>.</para>
2306 </listitem>
2307 <listitem>
2308 <para>Added <constant>V4L2_CID_BAND_STOP_FILTER</constant> documentation.</para>
2309 </listitem>
2310 <listitem>
2311 <para>Added FM Modulator (FM TX) Extended Control Class: <constant>V4L2_CTRL_CLASS_FM_TX</constant> and their Control IDs.</para>
2312 </listitem>
2313<listitem>
2314 <para>Added FM Receiver (FM RX) Extended Control Class: <constant>V4L2_CTRL_CLASS_FM_RX</constant> and their Control IDs.</para>
2315 </listitem>
2316 <listitem>
2317 <para>Added Remote Controller chapter, describing the default Remote Controller mapping for media devices.</para>
2318 </listitem>
2319 </orderedlist>
2320 </section>
2321 <section>
2322 <title>V4L2 in Linux 2.6.33</title>
2323 <orderedlist>
2324 <listitem>
2325 <para>Added support for Digital Video timings in order to support HDTV receivers and transmitters.</para>
2326 </listitem>
2327 </orderedlist>
2328 </section>
2329 <section>
2330 <title>V4L2 in Linux 2.6.34</title>
2331 <orderedlist>
2332 <listitem>
2333 <para>Added
2334<constant>V4L2_CID_IRIS_ABSOLUTE</constant> and
2335<constant>V4L2_CID_IRIS_RELATIVE</constant> controls to the
2336 <link linkend="camera-controls">Camera controls class</link>.
2337 </para>
2338 </listitem>
2339 </orderedlist>
2340 </section>
2341 <section>
2342 <title>V4L2 in Linux 2.6.37</title>
2343 <orderedlist>
2344 <listitem>
2345 <para>Remove the vtx (videotext/teletext) API. This API was no longer
2346used and no hardware exists to verify the API. Nor were any userspace applications found
2347that used it. It was originally scheduled for removal in 2.6.35.
2348 </para>
2349 </listitem>
2350 </orderedlist>
2351 </section>
2352 <section>
2353 <title>V4L2 in Linux 2.6.39</title>
2354 <orderedlist>
2355 <listitem>
2356 <para>The old VIDIOC_*_OLD symbols and V4L1 support were removed.</para>
2357 </listitem>
2358 <listitem>
2359 <para>Multi-planar API added. Does not affect the compatibility of
2360 current drivers and applications. See
2361 <link linkend="planar-apis">multi-planar API</link>
2362 for details.</para>
2363 </listitem>
2364 </orderedlist>
2365 </section>
2366 <section>
2367 <title>V4L2 in Linux 3.1</title>
2368 <orderedlist>
2369 <listitem>
2370 <para>VIDIOC_QUERYCAP now returns a per-subsystem version instead of a per-driver one.</para>
2371 <para>Standardize an error code for invalid ioctl.</para>
2372 <para>Added V4L2_CTRL_TYPE_BITMASK.</para>
2373 </listitem>
2374 </orderedlist>
2375 </section>
2376 <section>
2377 <title>V4L2 in Linux 3.2</title>
2378 <orderedlist>
2379 <listitem>
2380 <para>V4L2_CTRL_FLAG_VOLATILE was added to signal volatile controls to userspace.</para>
2381 </listitem>
2382 <listitem>
2383 <para>Add selection API for extended control over cropping
2384 and composing. Does not affect the compatibility of current
2385 drivers and applications. See <link
2386 linkend="selection-api"> selection API </link> for
2387 details.</para>
2388 </listitem>
2389 </orderedlist>
2390 </section>
2391
2392 <section>
2393 <title>V4L2 in Linux 3.3</title>
2394 <orderedlist>
2395 <listitem>
2396 <para>Added <constant>V4L2_CID_ALPHA_COMPONENT</constant> control
2397 to the <link linkend="control">User controls class</link>.
2398 </para>
2399 </listitem>
2400 <listitem>
2401 <para>Added the device_caps field to struct v4l2_capabilities and added the new
2402 V4L2_CAP_DEVICE_CAPS capability.</para>
2403 </listitem>
2404 </orderedlist>
2405 </section>
2406
2407 <section>
2408 <title>V4L2 in Linux 3.4</title>
2409 <orderedlist>
2410 <listitem>
2411 <para>Added <link linkend="jpeg-controls">JPEG compression control
2412 class</link>.</para>
2413 </listitem>
2414 <listitem>
2415 <para>Extended the DV Timings API:
2416 &VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2417 &VIDIOC-DV-TIMINGS-CAP;.</para>
2418 </listitem>
2419 </orderedlist>
2420 </section>
2421
2422 <section>
2423 <title>V4L2 in Linux 3.5</title>
2424 <orderedlist>
2425 <listitem>
2426 <para>Added integer menus, the new type will be
2427 V4L2_CTRL_TYPE_INTEGER_MENU.</para>
2428 </listitem>
2429 <listitem>
2430 <para>Added selection API for V4L2 subdev interface:
2431 &VIDIOC-SUBDEV-G-SELECTION; and
2432 &VIDIOC-SUBDEV-S-SELECTION;.</para>
2433 </listitem>
2434 <listitem>
2435 <para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>,
2436 <constant>V4L2_COLORFX_ART_FREEZE</constant>,
2437 <constant>V4L2_COLORFX_AQUA</constant>,
2438 <constant>V4L2_COLORFX_SILHOUETTE</constant>,
2439 <constant>V4L2_COLORFX_SOLARIZATION</constant>,
2440 <constant>V4L2_COLORFX_VIVID</constant> and
2441 <constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items
2442 to the <constant>V4L2_CID_COLORFX</constant> control.</para>
2443 </listitem>
2444 <listitem>
2445 <para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para>
2446 </listitem>
2447 <listitem>
2448 <para> Added camera controls <constant>V4L2_CID_AUTO_EXPOSURE_BIAS</constant>,
2449 <constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>,
2450 <constant>V4L2_CID_IMAGE_STABILIZATION</constant>,
2451 <constant>V4L2_CID_ISO_SENSITIVITY</constant>,
2452 <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>,
2453 <constant>V4L2_CID_EXPOSURE_METERING</constant>,
2454 <constant>V4L2_CID_SCENE_MODE</constant>,
2455 <constant>V4L2_CID_3A_LOCK</constant>,
2456 <constant>V4L2_CID_AUTO_FOCUS_START</constant>,
2457 <constant>V4L2_CID_AUTO_FOCUS_STOP</constant>,
2458 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> and
2459 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>.
2460 </para>
2461 </listitem>
2462 </orderedlist>
2463 </section>
2464
2465 <section>
2466 <title>V4L2 in Linux 3.6</title>
2467 <orderedlist>
2468 <listitem>
2469 <para>Replaced <structfield>input</structfield> in
2470 <structname>v4l2_buffer</structname> by
2471 <structfield>reserved2</structfield> and removed
2472 <constant>V4L2_BUF_FLAG_INPUT</constant>.</para>
2473 </listitem>
2474 <listitem>
2475 <para>Added V4L2_CAP_VIDEO_M2M and V4L2_CAP_VIDEO_M2M_MPLANE capabilities.</para>
2476 </listitem>
2477 <listitem>
2478 <para>Added support for frequency band enumerations: &VIDIOC-ENUM-FREQ-BANDS;.</para>
2479 </listitem>
2480 </orderedlist>
2481 </section>
2482
2483 <section>
2484 <title>V4L2 in Linux 3.9</title>
2485 <orderedlist>
2486 <listitem>
2487 <para>Added timestamp types to
2488 <structfield>flags</structfield> field in
2489 <structname>v4l2_buffer</structname>. See <xref
2490 linkend="buffer-flags" />.</para>
2491 </listitem>
2492 <listitem>
2493 <para>Added <constant>V4L2_EVENT_CTRL_CH_RANGE</constant> control event
2494 changes flag. See <xref linkend="ctrl-changes-flags"/>.</para>
2495 </listitem>
2496 </orderedlist>
2497 </section>
2498
2499 <section>
2500 <title>V4L2 in Linux 3.10</title>
2501 <orderedlist>
2502 <listitem>
2503 <para>Removed obsolete and unused DV_PRESET ioctls
2504 VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET and
2505 VIDIOC_ENUM_DV_PRESET. Remove the related v4l2_input/output capability
2506 flags V4L2_IN_CAP_PRESETS and V4L2_OUT_CAP_PRESETS.
2507 </para>
2508 </listitem>
2509 <listitem>
2510 <para>Added new debugging ioctl &VIDIOC-DBG-G-CHIP-INFO;.
2511 </para>
2512 </listitem>
2513 </orderedlist>
2514 </section>
2515
2516 <section>
2517 <title>V4L2 in Linux 3.11</title>
2518 <orderedlist>
2519 <listitem>
2520 <para>Remove obsolete <constant>VIDIOC_DBG_G_CHIP_IDENT</constant> ioctl.
2521 </para>
2522 </listitem>
2523 </orderedlist>
2524 </section>
2525
2526 <section>
2527 <title>V4L2 in Linux 3.14</title>
2528 <orderedlist>
2529 <listitem>
2530 <para> In struct <structname>v4l2_rect</structname>, the type
2531of <structfield>width</structfield> and <structfield>height</structfield>
2532fields changed from _s32 to _u32.
2533 </para>
2534 </listitem>
2535 </orderedlist>
2536 </section>
2537
2538 <section>
2539 <title>V4L2 in Linux 3.15</title>
2540 <orderedlist>
2541 <listitem>
2542 <para>Added Software Defined Radio (SDR) Interface.
2543 </para>
2544 </listitem>
2545 </orderedlist>
2546 </section>
2547
2548 <section>
2549 <title>V4L2 in Linux 3.16</title>
2550 <orderedlist>
2551 <listitem>
2552 <para>Added event V4L2_EVENT_SOURCE_CHANGE.
2553 </para>
2554 </listitem>
2555 </orderedlist>
2556 </section>
2557
2558 <section>
2559 <title>V4L2 in Linux 3.17</title>
2560 <orderedlist>
2561 <listitem>
2562 <para>Extended &v4l2-pix-format;. Added format flags.
2563 </para>
2564 </listitem>
2565 <listitem>
2566 <para>Added compound control types and &VIDIOC-QUERY-EXT-CTRL;.
2567 </para>
2568 </listitem>
2569 </orderedlist>
2570 </section>
2571
2572 <section>
2573 <title>V4L2 in Linux 3.18</title>
2574 <orderedlist>
2575 <listitem>
2576 <para>Added <constant>V4L2_CID_PAN_SPEED</constant> and
2577 <constant>V4L2_CID_TILT_SPEED</constant> camera controls.</para>
2578 </listitem>
2579 </orderedlist>
2580 </section>
2581
2582 <section>
2583 <title>V4L2 in Linux 3.19</title>
2584 <orderedlist>
2585 <listitem>
2586 <para>Rewrote Colorspace chapter, added new &v4l2-ycbcr-encoding;
2587and &v4l2-quantization; fields to &v4l2-pix-format;, &v4l2-pix-format-mplane;
2588and &v4l2-mbus-framefmt;.
2589 </para>
2590 </listitem>
2591 </orderedlist>
2592 </section>
2593
2594 <section>
2595 <title>V4L2 in Linux 4.4</title>
2596 <orderedlist>
2597 <listitem>
2598 <para>Renamed <constant>V4L2_TUNER_ADC</constant> to
2599<constant>V4L2_TUNER_SDR</constant>. The use of
2600<constant>V4L2_TUNER_ADC</constant> is deprecated now.
2601 </para>
2602 </listitem>
2603 <listitem>
2604 <para>Added <constant>V4L2_CID_RF_TUNER_RF_GAIN</constant>
2605RF Tuner control.</para>
2606 </listitem>
2607 <listitem>
2608 <para>Added transmitter support for Software Defined Radio (SDR)
2609Interface.</para>
2610 </listitem>
2611 </orderedlist>
2612 </section>
2613
2614 <section id="other">
2615 <title>Relation of V4L2 to other Linux multimedia APIs</title>
2616
2617 <section id="xvideo">
2618 <title>X Video Extension</title>
2619
2620 <para>The X Video Extension (abbreviated XVideo or just Xv) is
2621an extension of the X Window system, implemented for example by the
2622XFree86 project. Its scope is similar to V4L2, an API to video capture
2623and output devices for X clients. Xv allows applications to display
2624live video in a window, send window contents to a TV output, and
2625capture or output still images in XPixmaps<footnote>
2626 <para>This is not implemented in XFree86.</para>
2627 </footnote>. With their implementation XFree86 makes the
2628extension available across many operating systems and
2629architectures.</para>
2630
2631 <para>Because the driver is embedded into the X server Xv has a
2632number of advantages over the V4L2 <link linkend="overlay">video
2633overlay interface</link>. The driver can easily determine the overlay
2634target, &ie; visible graphics memory or off-screen buffers for a
2635destructive overlay. It can program the RAMDAC for a non-destructive
2636overlay, scaling or color-keying, or the clipping functions of the
2637video capture hardware, always in sync with drawing operations or
2638windows moving or changing their stacking order.</para>
2639
2640 <para>To combine the advantages of Xv and V4L a special Xv
2641driver exists in XFree86 and XOrg, just programming any overlay capable
2642Video4Linux device it finds. To enable it
2643<filename>/etc/X11/XF86Config</filename> must contain these lines:</para>
2644 <para><screen>
2645Section "Module"
2646 Load "v4l"
2647EndSection</screen></para>
2648
2649 <para>As of XFree86 4.2 this driver still supports only V4L
2650ioctls, however it should work just fine with all V4L2 devices through
2651the V4L2 backward-compatibility layer. Since V4L2 permits multiple
2652opens it is possible (if supported by the V4L2 driver) to capture
2653video while an X client requested video overlay. Restrictions of
2654simultaneous capturing and overlay are discussed in <xref
2655 linkend="overlay" /> apply.</para>
2656
2657 <para>Only marginally related to V4L2, XFree86 extended Xv to
2658support hardware YUV to RGB conversion and scaling for faster video
2659playback, and added an interface to MPEG-2 decoding hardware. This API
2660is useful to display images captured with V4L2 devices.</para>
2661 </section>
2662
2663 <section>
2664 <title>Digital Video</title>
2665
2666 <para>V4L2 does not support digital terrestrial, cable or
2667satellite broadcast. A separate project aiming at digital receivers
2668exists. You can find its homepage at <ulink
2669url="https://linuxtv.org">https://linuxtv.org</ulink>. The Linux DVB API
2670has no connection to the V4L2 API except that drivers for hybrid
2671hardware may support both.</para>
2672 </section>
2673
2674 <section>
2675 <title>Audio Interfaces</title>
2676
2677 <para>[to do - OSS/ALSA]</para>
2678 </section>
2679 </section>
2680
2681 <section id="experimental">
2682 <title>Experimental API Elements</title>
2683
2684 <para>The following V4L2 API elements are currently experimental
2685and may change in the future.</para>
2686
2687 <itemizedlist>
2688 <listitem>
2689 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER;
2690ioctls.</para>
2691 </listitem>
2692 <listitem>
2693 <para>&VIDIOC-DBG-G-CHIP-INFO; ioctl.</para>
2694 </listitem>
2695 </itemizedlist>
2696 </section>
2697
2698 <section id="obsolete">
2699 <title>Obsolete API Elements</title>
2700
2701 <para>The following V4L2 API elements were superseded by new
2702interfaces and should not be implemented in new drivers.</para>
2703
2704 <itemizedlist>
2705 <listitem>
2706 <para><constant>VIDIOC_G_MPEGCOMP</constant> and
2707<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls,
2708<xref linkend="extended-controls" />.</para>
2709 </listitem>
2710 <listitem>
2711 <para>VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, VIDIOC_ENUM_DV_PRESETS and
2712 VIDIOC_QUERY_DV_PRESET ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para>
2713 </listitem>
2714 <listitem>
2715 <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and
2716 <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctls. Use
2717 <constant>VIDIOC_SUBDEV_G_SELECTION</constant> and
2718 <constant>VIDIOC_SUBDEV_S_SELECTION</constant>, <xref
2719 linkend="vidioc-subdev-g-selection" />.</para>
2720 </listitem>
2721 </itemizedlist>
2722 </section>
2723 </section>
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
deleted file mode 100644
index e2e5484d2d9b..000000000000
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ /dev/null
@@ -1,5505 +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>
16<footnote><para>The use of <constant>V4L2_CID_PRIVATE_BASE</constant>
17is problematic because different drivers may use the same
18<constant>V4L2_CID_PRIVATE_BASE</constant> ID for different controls.
19This makes it hard to programatically set such controls since the meaning
20of the control with that ID is driver dependent. In order to resolve this
21drivers use unique IDs and the <constant>V4L2_CID_PRIVATE_BASE</constant>
22IDs are mapped to those unique IDs by the kernel. Consider these
23<constant>V4L2_CID_PRIVATE_BASE</constant> IDs as aliases to the real
24IDs.</para>
25<para>Many applications today still use the <constant>V4L2_CID_PRIVATE_BASE</constant>
26IDs instead of using &VIDIOC-QUERYCTRL; with the <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>
27flag to enumerate all IDs, so support for <constant>V4L2_CID_PRIVATE_BASE</constant>
28is still around.</para></footnote>
29and higher values. The pre-defined control IDs have the prefix
30<constant>V4L2_CID_</constant>, and are listed in <xref
31linkend="control-id" />. The ID is used when querying the attributes of
32a control, and when getting or setting the current value.</para>
33
34 <para>Generally applications should present controls to the user
35without assumptions about their purpose. Each control comes with a
36name string the user is supposed to understand. When the purpose is
37non-intuitive the driver writer should provide a user manual, a user
38interface plug-in or a driver specific panel application. Predefined
39IDs were introduced to change a few controls programmatically, for
40example to mute a device during a channel switch.</para>
41
42 <para>Drivers may enumerate different controls after switching
43the current video input or output, tuner or modulator, or audio input
44or output. Different in the sense of other bounds, another default and
45current value, step size or other menu items. A control with a certain
46<emphasis>custom</emphasis> ID can also change name and
47type.</para>
48
49 <para>If a control is not applicable to the current configuration
50of the device (for example, it doesn't apply to the current video input)
51drivers set the <constant>V4L2_CTRL_FLAG_INACTIVE</constant> flag.</para>
52
53 <para>Control values are stored globally, they do not
54change when switching except to stay within the reported bounds. They
55also do not change &eg; when the device is opened or closed, when the
56tuner radio frequency is changed or generally never without
57application request.</para>
58
59 <para>V4L2 specifies an event mechanism to notify applications
60when controls change value (see &VIDIOC-SUBSCRIBE-EVENT;, event
61<constant>V4L2_EVENT_CTRL</constant>), panel applications might want to make
62use of that in order to always reflect the correct control value.</para>
63
64 <para>
65 All controls use machine endianness.
66 </para>
67
68 <table pgwide="1" frame="none" id="control-id">
69 <title>Control IDs</title>
70 <tgroup cols="3">
71 &cs-def;
72 <thead>
73 <row>
74 <entry>ID</entry>
75 <entry>Type</entry>
76 <entry>Description</entry>
77 </row>
78 </thead>
79 <tbody valign="top">
80 <row>
81 <entry><constant>V4L2_CID_BASE</constant></entry>
82 <entry></entry>
83 <entry>First predefined ID, equal to
84<constant>V4L2_CID_BRIGHTNESS</constant>.</entry>
85 </row>
86 <row>
87 <entry><constant>V4L2_CID_USER_BASE</constant></entry>
88 <entry></entry>
89 <entry>Synonym of <constant>V4L2_CID_BASE</constant>.</entry>
90 </row>
91 <row>
92 <entry><constant>V4L2_CID_BRIGHTNESS</constant></entry>
93 <entry>integer</entry>
94 <entry>Picture brightness, or more precisely, the black
95level.</entry>
96 </row>
97 <row>
98 <entry><constant>V4L2_CID_CONTRAST</constant></entry>
99 <entry>integer</entry>
100 <entry>Picture contrast or luma gain.</entry>
101 </row>
102 <row>
103 <entry><constant>V4L2_CID_SATURATION</constant></entry>
104 <entry>integer</entry>
105 <entry>Picture color saturation or chroma gain.</entry>
106 </row>
107 <row>
108 <entry><constant>V4L2_CID_HUE</constant></entry>
109 <entry>integer</entry>
110 <entry>Hue or color balance.</entry>
111 </row>
112 <row>
113 <entry><constant>V4L2_CID_AUDIO_VOLUME</constant></entry>
114 <entry>integer</entry>
115 <entry>Overall audio volume. Note some drivers also
116provide an OSS or ALSA mixer interface.</entry>
117 </row>
118 <row>
119 <entry><constant>V4L2_CID_AUDIO_BALANCE</constant></entry>
120 <entry>integer</entry>
121 <entry>Audio stereo balance. Minimum corresponds to all
122the way left, maximum to right.</entry>
123 </row>
124 <row>
125 <entry><constant>V4L2_CID_AUDIO_BASS</constant></entry>
126 <entry>integer</entry>
127 <entry>Audio bass adjustment.</entry>
128 </row>
129 <row>
130 <entry><constant>V4L2_CID_AUDIO_TREBLE</constant></entry>
131 <entry>integer</entry>
132 <entry>Audio treble adjustment.</entry>
133 </row>
134 <row>
135 <entry><constant>V4L2_CID_AUDIO_MUTE</constant></entry>
136 <entry>boolean</entry>
137 <entry>Mute audio, &ie; set the volume to zero, however
138without affecting <constant>V4L2_CID_AUDIO_VOLUME</constant>. Like
139ALSA drivers, V4L2 drivers must mute at load time to avoid excessive
140noise. Actually the entire device should be reset to a low power
141consumption state.</entry>
142 </row>
143 <row>
144 <entry><constant>V4L2_CID_AUDIO_LOUDNESS</constant></entry>
145 <entry>boolean</entry>
146 <entry>Loudness mode (bass boost).</entry>
147 </row>
148 <row>
149 <entry><constant>V4L2_CID_BLACK_LEVEL</constant></entry>
150 <entry>integer</entry>
151 <entry>Another name for brightness (not a synonym of
152<constant>V4L2_CID_BRIGHTNESS</constant>). This control is deprecated
153and should not be used in new drivers and applications.</entry>
154 </row>
155 <row>
156 <entry><constant>V4L2_CID_AUTO_WHITE_BALANCE</constant></entry>
157 <entry>boolean</entry>
158 <entry>Automatic white balance (cameras).</entry>
159 </row>
160 <row>
161 <entry><constant>V4L2_CID_DO_WHITE_BALANCE</constant></entry>
162 <entry>button</entry>
163 <entry>This is an action control. When set (the value is
164ignored), the device will do a white balance and then hold the current
165setting. Contrast this with the boolean
166<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant>, which, when
167activated, keeps adjusting the white balance.</entry>
168 </row>
169 <row>
170 <entry><constant>V4L2_CID_RED_BALANCE</constant></entry>
171 <entry>integer</entry>
172 <entry>Red chroma balance.</entry>
173 </row>
174 <row>
175 <entry><constant>V4L2_CID_BLUE_BALANCE</constant></entry>
176 <entry>integer</entry>
177 <entry>Blue chroma balance.</entry>
178 </row>
179 <row>
180 <entry><constant>V4L2_CID_GAMMA</constant></entry>
181 <entry>integer</entry>
182 <entry>Gamma adjust.</entry>
183 </row>
184 <row>
185 <entry><constant>V4L2_CID_WHITENESS</constant></entry>
186 <entry>integer</entry>
187 <entry>Whiteness for grey-scale devices. This is a synonym
188for <constant>V4L2_CID_GAMMA</constant>. This control is deprecated
189and should not be used in new drivers and applications.</entry>
190 </row>
191 <row>
192 <entry><constant>V4L2_CID_EXPOSURE</constant></entry>
193 <entry>integer</entry>
194 <entry>Exposure (cameras). [Unit?]</entry>
195 </row>
196 <row>
197 <entry><constant>V4L2_CID_AUTOGAIN</constant></entry>
198 <entry>boolean</entry>
199 <entry>Automatic gain/exposure control.</entry>
200 </row>
201 <row>
202 <entry><constant>V4L2_CID_GAIN</constant></entry>
203 <entry>integer</entry>
204 <entry>Gain control.</entry>
205 </row>
206 <row>
207 <entry><constant>V4L2_CID_HFLIP</constant></entry>
208 <entry>boolean</entry>
209 <entry>Mirror the picture horizontally.</entry>
210 </row>
211 <row>
212 <entry><constant>V4L2_CID_VFLIP</constant></entry>
213 <entry>boolean</entry>
214 <entry>Mirror the picture vertically.</entry>
215 </row>
216 <row id="v4l2-power-line-frequency">
217 <entry><constant>V4L2_CID_POWER_LINE_FREQUENCY</constant></entry>
218 <entry>enum</entry>
219 <entry>Enables a power line frequency filter to avoid
220flicker. Possible values for <constant>enum v4l2_power_line_frequency</constant> are:
221<constant>V4L2_CID_POWER_LINE_FREQUENCY_DISABLED</constant> (0),
222<constant>V4L2_CID_POWER_LINE_FREQUENCY_50HZ</constant> (1),
223<constant>V4L2_CID_POWER_LINE_FREQUENCY_60HZ</constant> (2) and
224<constant>V4L2_CID_POWER_LINE_FREQUENCY_AUTO</constant> (3).</entry>
225 </row>
226 <row>
227 <entry><constant>V4L2_CID_HUE_AUTO</constant></entry>
228 <entry>boolean</entry>
229 <entry>Enables automatic hue control by the device. The
230effect of setting <constant>V4L2_CID_HUE</constant> while automatic
231hue control is enabled is undefined, drivers should ignore such
232request.</entry>
233 </row>
234 <row>
235 <entry><constant>V4L2_CID_WHITE_BALANCE_TEMPERATURE</constant></entry>
236 <entry>integer</entry>
237 <entry>This control specifies the white balance settings
238as a color temperature in Kelvin. A driver should have a minimum of
2392800 (incandescent) to 6500 (daylight). For more information about
240color temperature see <ulink
241url="http://en.wikipedia.org/wiki/Color_temperature">Wikipedia</ulink>.</entry>
242 </row>
243 <row>
244 <entry><constant>V4L2_CID_SHARPNESS</constant></entry>
245 <entry>integer</entry>
246 <entry>Adjusts the sharpness filters in a camera. The
247minimum value disables the filters, higher values give a sharper
248picture.</entry>
249 </row>
250 <row>
251 <entry><constant>V4L2_CID_BACKLIGHT_COMPENSATION</constant></entry>
252 <entry>integer</entry>
253 <entry>Adjusts the backlight compensation in a camera. The
254minimum value disables backlight compensation.</entry>
255 </row>
256 <row>
257 <entry><constant>V4L2_CID_CHROMA_AGC</constant></entry>
258 <entry>boolean</entry>
259 <entry>Chroma automatic gain control.</entry>
260 </row>
261 <row>
262 <entry><constant>V4L2_CID_CHROMA_GAIN</constant></entry>
263 <entry>integer</entry>
264 <entry>Adjusts the Chroma gain control (for use when chroma AGC
265 is disabled).</entry>
266 </row>
267 <row>
268 <entry><constant>V4L2_CID_COLOR_KILLER</constant></entry>
269 <entry>boolean</entry>
270 <entry>Enable the color killer (&ie; force a black &amp; white image in case of a weak video signal).</entry>
271 </row>
272 <row id="v4l2-colorfx">
273 <entry><constant>V4L2_CID_COLORFX</constant></entry>
274 <entry>enum</entry>
275 <entry>Selects a color effect. The following values are defined:
276 </entry>
277 </row><row>
278 <entry></entry>
279 <entry></entry>
280 <entrytbl spanname="descr" cols="2">
281 <tbody valign="top">
282 <row>
283 <entry><constant>V4L2_COLORFX_NONE</constant>&nbsp;</entry>
284 <entry>Color effect is disabled.</entry>
285 </row>
286 <row>
287 <entry><constant>V4L2_COLORFX_ANTIQUE</constant>&nbsp;</entry>
288 <entry>An aging (old photo) effect.</entry>
289 </row>
290 <row>
291 <entry><constant>V4L2_COLORFX_ART_FREEZE</constant>&nbsp;</entry>
292 <entry>Frost color effect.</entry>
293 </row>
294 <row>
295 <entry><constant>V4L2_COLORFX_AQUA</constant>&nbsp;</entry>
296 <entry>Water color, cool tone.</entry>
297 </row>
298 <row>
299 <entry><constant>V4L2_COLORFX_BW</constant>&nbsp;</entry>
300 <entry>Black and white.</entry>
301 </row>
302 <row>
303 <entry><constant>V4L2_COLORFX_EMBOSS</constant>&nbsp;</entry>
304 <entry>Emboss, the highlights and shadows replace light/dark boundaries
305 and low contrast areas are set to a gray background.</entry>
306 </row>
307 <row>
308 <entry><constant>V4L2_COLORFX_GRASS_GREEN</constant>&nbsp;</entry>
309 <entry>Grass green.</entry>
310 </row>
311 <row>
312 <entry><constant>V4L2_COLORFX_NEGATIVE</constant>&nbsp;</entry>
313 <entry>Negative.</entry>
314 </row>
315 <row>
316 <entry><constant>V4L2_COLORFX_SEPIA</constant>&nbsp;</entry>
317 <entry>Sepia tone.</entry>
318 </row>
319 <row>
320 <entry><constant>V4L2_COLORFX_SKETCH</constant>&nbsp;</entry>
321 <entry>Sketch.</entry>
322 </row>
323 <row>
324 <entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant>&nbsp;</entry>
325 <entry>Skin whiten.</entry>
326 </row>
327 <row>
328 <entry><constant>V4L2_COLORFX_SKY_BLUE</constant>&nbsp;</entry>
329 <entry>Sky blue.</entry>
330 </row>
331 <row>
332 <entry><constant>V4L2_COLORFX_SOLARIZATION</constant>&nbsp;</entry>
333 <entry>Solarization, the image is partially reversed in tone,
334 only color values above or below a certain threshold are inverted.
335 </entry>
336 </row>
337 <row>
338 <entry><constant>V4L2_COLORFX_SILHOUETTE</constant>&nbsp;</entry>
339 <entry>Silhouette (outline).</entry>
340 </row>
341 <row>
342 <entry><constant>V4L2_COLORFX_VIVID</constant>&nbsp;</entry>
343 <entry>Vivid colors.</entry>
344 </row>
345 <row>
346 <entry><constant>V4L2_COLORFX_SET_CBCR</constant>&nbsp;</entry>
347 <entry>The Cb and Cr chroma components are replaced by fixed
348 coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant>
349 control.</entry>
350 </row>
351 </tbody>
352 </entrytbl>
353 </row>
354 <row>
355 <entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry>
356 <entry>integer</entry>
357 <entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant>
358 color effect. Bits [7:0] of the supplied 32 bit value are interpreted as
359 Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
360 </entry>
361 </row>
362 <row>
363 <entry><constant>V4L2_CID_AUTOBRIGHTNESS</constant></entry>
364 <entry>boolean</entry>
365 <entry>Enable Automatic Brightness.</entry>
366 </row>
367 <row>
368 <entry><constant>V4L2_CID_ROTATE</constant></entry>
369 <entry>integer</entry>
370 <entry>Rotates the image by specified angle. Common angles are 90,
371 270 and 180. Rotating the image to 90 and 270 will reverse the height
372 and width of the display window. It is necessary to set the new height and
373 width of the picture using the &VIDIOC-S-FMT; ioctl according to
374 the rotation angle selected.</entry>
375 </row>
376 <row>
377 <entry><constant>V4L2_CID_BG_COLOR</constant></entry>
378 <entry>integer</entry>
379 <entry>Sets the background color on the current output device.
380 Background color needs to be specified in the RGB24 format. The
381 supplied 32 bit value is interpreted as bits 0-7 Red color information,
382 bits 8-15 Green color information, bits 16-23 Blue color
383 information and bits 24-31 must be zero.</entry>
384 </row>
385 <row>
386 <entry><constant>V4L2_CID_ILLUMINATORS_1</constant>
387 <constant>V4L2_CID_ILLUMINATORS_2</constant></entry>
388 <entry>boolean</entry>
389 <entry>Switch on or off the illuminator 1 or 2 of the device
390 (usually a microscope).</entry>
391 </row>
392 <row>
393 <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_CAPTURE</constant></entry>
394 <entry>integer</entry>
395 <entry>This is a read-only control that can be read by the application
396and used as a hint to determine the number of CAPTURE buffers to pass to REQBUFS.
397The value is the minimum number of CAPTURE buffers that is necessary for hardware
398to work.</entry>
399 </row>
400 <row>
401 <entry><constant>V4L2_CID_MIN_BUFFERS_FOR_OUTPUT</constant></entry>
402 <entry>integer</entry>
403 <entry>This is a read-only control that can be read by the application
404and used as a hint to determine the number of OUTPUT buffers to pass to REQBUFS.
405The value is the minimum number of OUTPUT buffers that is necessary for hardware
406to work.</entry>
407 </row>
408 <row id="v4l2-alpha-component">
409 <entry><constant>V4L2_CID_ALPHA_COMPONENT</constant></entry>
410 <entry>integer</entry>
411 <entry>Sets the alpha color component. When a capture device (or
412 capture queue of a mem-to-mem device) produces a frame format that
413 includes an alpha component
414 (e.g. <link linkend="rgb-formats">packed RGB image formats</link>)
415 and the alpha value is not defined by the device or the mem-to-mem
416 input data this control lets you select the alpha component value of
417 all pixels. When an output device (or output queue of a mem-to-mem
418 device) consumes a frame format that doesn't include an alpha
419 component and the device supports alpha channel processing this
420 control lets you set the alpha component value of all pixels for
421 further processing in the device.
422 </entry>
423 </row>
424 <row>
425 <entry><constant>V4L2_CID_LASTP1</constant></entry>
426 <entry></entry>
427 <entry>End of the predefined control IDs (currently
428 <constant>V4L2_CID_ALPHA_COMPONENT</constant> + 1).</entry>
429 </row>
430 <row>
431 <entry><constant>V4L2_CID_PRIVATE_BASE</constant></entry>
432 <entry></entry>
433 <entry>ID of the first custom (driver specific) control.
434Applications depending on particular custom controls should check the
435driver name and version, see <xref linkend="querycap" />.</entry>
436 </row>
437 </tbody>
438 </tgroup>
439 </table>
440
441 <para>Applications can enumerate the available controls with the
442&VIDIOC-QUERYCTRL; and &VIDIOC-QUERYMENU; ioctls, get and set a
443control value with the &VIDIOC-G-CTRL; and &VIDIOC-S-CTRL; ioctls.
444Drivers must implement <constant>VIDIOC_QUERYCTRL</constant>,
445<constant>VIDIOC_G_CTRL</constant> and
446<constant>VIDIOC_S_CTRL</constant> when the device has one or more
447controls, <constant>VIDIOC_QUERYMENU</constant> when it has one or
448more menu type controls.</para>
449
450 <example id="enum_all_controls">
451 <title>Enumerating all user controls</title>
452
453 <programlisting>
454&v4l2-queryctrl; queryctrl;
455&v4l2-querymenu; querymenu;
456
457static void enumerate_menu(void)
458{
459 printf(" Menu items:\n");
460
461 memset(&amp;querymenu, 0, sizeof(querymenu));
462 querymenu.id = queryctrl.id;
463
464 for (querymenu.index = queryctrl.minimum;
465 querymenu.index &lt;= queryctrl.maximum;
466 querymenu.index++) {
467 if (0 == ioctl(fd, &VIDIOC-QUERYMENU;, &amp;querymenu)) {
468 printf(" %s\n", querymenu.name);
469 }
470 }
471}
472
473memset(&amp;queryctrl, 0, sizeof(queryctrl));
474
475for (queryctrl.id = V4L2_CID_BASE;
476 queryctrl.id &lt; V4L2_CID_LASTP1;
477 queryctrl.id++) {
478 if (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
479 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
480 continue;
481
482 printf("Control %s\n", queryctrl.name);
483
484 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
485 enumerate_menu();
486 } else {
487 if (errno == EINVAL)
488 continue;
489
490 perror("VIDIOC_QUERYCTRL");
491 exit(EXIT_FAILURE);
492 }
493}
494
495for (queryctrl.id = V4L2_CID_PRIVATE_BASE;;
496 queryctrl.id++) {
497 if (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
498 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
499 continue;
500
501 printf("Control %s\n", queryctrl.name);
502
503 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
504 enumerate_menu();
505 } else {
506 if (errno == EINVAL)
507 break;
508
509 perror("VIDIOC_QUERYCTRL");
510 exit(EXIT_FAILURE);
511 }
512}
513</programlisting>
514 </example>
515
516 <example>
517 <title>Enumerating all user controls (alternative)</title>
518 <programlisting>
519memset(&amp;queryctrl, 0, sizeof(queryctrl));
520
521queryctrl.id = V4L2_CTRL_CLASS_USER | V4L2_CTRL_FLAG_NEXT_CTRL;
522while (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
523 if (V4L2_CTRL_ID2CLASS(queryctrl.id) != V4L2_CTRL_CLASS_USER)
524 break;
525 if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED)
526 continue;
527
528 printf("Control %s\n", queryctrl.name);
529
530 if (queryctrl.type == V4L2_CTRL_TYPE_MENU)
531 enumerate_menu();
532
533 queryctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
534}
535if (errno != EINVAL) {
536 perror("VIDIOC_QUERYCTRL");
537 exit(EXIT_FAILURE);
538}
539</programlisting>
540 </example>
541
542 <example>
543 <title>Changing controls</title>
544
545 <programlisting>
546&v4l2-queryctrl; queryctrl;
547&v4l2-control; control;
548
549memset(&amp;queryctrl, 0, sizeof(queryctrl));
550queryctrl.id = V4L2_CID_BRIGHTNESS;
551
552if (-1 == ioctl(fd, &VIDIOC-QUERYCTRL;, &amp;queryctrl)) {
553 if (errno != EINVAL) {
554 perror("VIDIOC_QUERYCTRL");
555 exit(EXIT_FAILURE);
556 } else {
557 printf("V4L2_CID_BRIGHTNESS is not supported\n");
558 }
559} else if (queryctrl.flags &amp; V4L2_CTRL_FLAG_DISABLED) {
560 printf("V4L2_CID_BRIGHTNESS is not supported\n");
561} else {
562 memset(&amp;control, 0, sizeof (control));
563 control.id = V4L2_CID_BRIGHTNESS;
564 control.value = queryctrl.default_value;
565
566 if (-1 == ioctl(fd, &VIDIOC-S-CTRL;, &amp;control)) {
567 perror("VIDIOC_S_CTRL");
568 exit(EXIT_FAILURE);
569 }
570}
571
572memset(&amp;control, 0, sizeof(control));
573control.id = V4L2_CID_CONTRAST;
574
575if (0 == ioctl(fd, &VIDIOC-G-CTRL;, &amp;control)) {
576 control.value += 1;
577
578 /* The driver may clamp the value or return ERANGE, ignored here */
579
580 if (-1 == ioctl(fd, &VIDIOC-S-CTRL;, &amp;control)
581 &amp;&amp; errno != ERANGE) {
582 perror("VIDIOC_S_CTRL");
583 exit(EXIT_FAILURE);
584 }
585/* Ignore if V4L2_CID_CONTRAST is unsupported */
586} else if (errno != EINVAL) {
587 perror("VIDIOC_G_CTRL");
588 exit(EXIT_FAILURE);
589}
590
591control.id = V4L2_CID_AUDIO_MUTE;
592control.value = 1; /* silence */
593
594/* Errors ignored */
595ioctl(fd, VIDIOC_S_CTRL, &amp;control);
596</programlisting>
597 </example>
598 </section>
599
600 <section id="extended-controls">
601 <title>Extended Controls</title>
602
603 <section>
604 <title>Introduction</title>
605
606 <para>The control mechanism as originally designed was meant
607to be used for user settings (brightness, saturation, etc). However,
608it turned out to be a very useful model for implementing more
609complicated driver APIs where each driver implements only a subset of
610a larger API.</para>
611
612 <para>The MPEG encoding API was the driving force behind
613designing and implementing this extended control mechanism: the MPEG
614standard is quite large and the currently supported hardware MPEG
615encoders each only implement a subset of this standard. Further more,
616many parameters relating to how the video is encoded into an MPEG
617stream are specific to the MPEG encoding chip since the MPEG standard
618only defines the format of the resulting MPEG stream, not how the
619video is actually encoded into that format.</para>
620
621 <para>Unfortunately, the original control API lacked some
622features needed for these new uses and so it was extended into the
623(not terribly originally named) extended control API.</para>
624
625 <para>Even though the MPEG encoding API was the first effort
626to use the Extended Control API, nowadays there are also other classes
627of Extended Controls, such as Camera Controls and FM Transmitter Controls.
628The Extended Controls API as well as all Extended Controls classes are
629described in the following text.</para>
630 </section>
631
632 <section>
633 <title>The Extended Control API</title>
634
635 <para>Three new ioctls are available: &VIDIOC-G-EXT-CTRLS;,
636&VIDIOC-S-EXT-CTRLS; and &VIDIOC-TRY-EXT-CTRLS;. These ioctls act on
637arrays of controls (as opposed to the &VIDIOC-G-CTRL; and
638&VIDIOC-S-CTRL; ioctls that act on a single control). This is needed
639since it is often required to atomically change several controls at
640once.</para>
641
642 <para>Each of the new ioctls expects a pointer to a
643&v4l2-ext-controls;. This structure contains a pointer to the control
644array, a count of the number of controls in that array and a control
645class. Control classes are used to group similar controls into a
646single class. For example, control class
647<constant>V4L2_CTRL_CLASS_USER</constant> contains all user controls
648(&ie; all controls that can also be set using the old
649<constant>VIDIOC_S_CTRL</constant> ioctl). Control class
650<constant>V4L2_CTRL_CLASS_MPEG</constant> contains all controls
651relating to MPEG encoding, etc.</para>
652
653 <para>All controls in the control array must belong to the
654specified control class. An error is returned if this is not the
655case.</para>
656
657 <para>It is also possible to use an empty control array (count
658== 0) to check whether the specified control class is
659supported.</para>
660
661 <para>The control array is a &v4l2-ext-control; array. The
662<structname>v4l2_ext_control</structname> structure is very similar to
663&v4l2-control;, except for the fact that it also allows for 64-bit
664values and pointers to be passed.</para>
665
666 <para>Since the &v4l2-ext-control; supports pointers it is now
667also possible to have controls with compound types such as N-dimensional arrays
668and/or structures. You need to specify the <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant>
669when enumerating controls to actually be able to see such compound controls.
670In other words, these controls with compound types should only be used
671programmatically.</para>
672
673 <para>Since such compound controls need to expose more information
674about themselves than is possible with &VIDIOC-QUERYCTRL; the
675&VIDIOC-QUERY-EXT-CTRL; ioctl was added. In particular, this ioctl gives
676the dimensions of the N-dimensional array if this control consists of more than
677one element.</para>
678
679 <para>It is important to realize that due to the flexibility of
680controls it is necessary to check whether the control you want to set
681actually is supported in the driver and what the valid range of values
682is. So use the &VIDIOC-QUERYCTRL; (or &VIDIOC-QUERY-EXT-CTRL;) and
683&VIDIOC-QUERYMENU; ioctls to check this. Also note that it is possible
684that some of the menu indices in a control of type
685<constant>V4L2_CTRL_TYPE_MENU</constant> may not be supported
686(<constant>VIDIOC_QUERYMENU</constant> will return an error). A good
687example is the list of supported MPEG audio bitrates. Some drivers only
688support one or two bitrates, others support a wider range.</para>
689
690 <para>
691 All controls use machine endianness.
692 </para>
693 </section>
694
695 <section>
696 <title>Enumerating Extended Controls</title>
697
698 <para>The recommended way to enumerate over the extended
699controls is by using &VIDIOC-QUERYCTRL; in combination with the
700<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag:</para>
701
702 <informalexample>
703 <programlisting>
704&v4l2-queryctrl; qctrl;
705
706qctrl.id = V4L2_CTRL_FLAG_NEXT_CTRL;
707while (0 == ioctl (fd, &VIDIOC-QUERYCTRL;, &amp;qctrl)) {
708 /* ... */
709 qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
710}
711</programlisting>
712 </informalexample>
713
714 <para>The initial control ID is set to 0 ORed with the
715<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> flag. The
716<constant>VIDIOC_QUERYCTRL</constant> ioctl will return the first
717control with a higher ID than the specified one. When no such controls
718are found an error is returned.</para>
719
720 <para>If you want to get all controls within a specific control
721class, then you can set the initial
722<structfield>qctrl.id</structfield> value to the control class and add
723an extra check to break out of the loop when a control of another
724control class is found:</para>
725
726 <informalexample>
727 <programlisting>
728qctrl.id = V4L2_CTRL_CLASS_MPEG | V4L2_CTRL_FLAG_NEXT_CTRL;
729while (0 == ioctl(fd, &VIDIOC-QUERYCTRL;, &amp;qctrl)) {
730 if (V4L2_CTRL_ID2CLASS(qctrl.id) != V4L2_CTRL_CLASS_MPEG)
731 break;
732 /* ... */
733 qctrl.id |= V4L2_CTRL_FLAG_NEXT_CTRL;
734}
735</programlisting>
736 </informalexample>
737
738 <para>The 32-bit <structfield>qctrl.id</structfield> value is
739subdivided into three bit ranges: the top 4 bits are reserved for
740flags (&eg; <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>) and are not
741actually part of the ID. The remaining 28 bits form the control ID, of
742which the most significant 12 bits define the control class and the
743least significant 16 bits identify the control within the control
744class. It is guaranteed that these last 16 bits are always non-zero
745for controls. The range of 0x1000 and up are reserved for
746driver-specific controls. The macro
747<constant>V4L2_CTRL_ID2CLASS(id)</constant> returns the control class
748ID based on a control ID.</para>
749
750 <para>If the driver does not support extended controls, then
751<constant>VIDIOC_QUERYCTRL</constant> will fail when used in
752combination with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant>. In
753that case the old method of enumerating control should be used (see
754<xref linkend="enum_all_controls" />). But if it is supported, then it is guaranteed to enumerate over
755all controls, including driver-private controls.</para>
756 </section>
757
758 <section>
759 <title>Creating Control Panels</title>
760
761 <para>It is possible to create control panels for a graphical
762user interface where the user can select the various controls.
763Basically you will have to iterate over all controls using the method
764described above. Each control class starts with a control of type
765<constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant>.
766<constant>VIDIOC_QUERYCTRL</constant> will return the name of this
767control class which can be used as the title of a tab page within a
768control panel.</para>
769
770 <para>The flags field of &v4l2-queryctrl; also contains hints on
771the behavior of the control. See the &VIDIOC-QUERYCTRL; documentation
772for more details.</para>
773 </section>
774
775 <section id="mpeg-controls">
776 <title>Codec Control Reference</title>
777
778 <para>Below all controls within the Codec control class are
779described. First the generic controls, then controls specific for
780certain hardware.</para>
781
782 <para>Note: These controls are applicable to all codecs and
783not just MPEG. The defines are prefixed with V4L2_CID_MPEG/V4L2_MPEG
784as the controls were originally made for MPEG codecs and later
785extended to cover all encoding formats.</para>
786
787 <section>
788 <title>Generic Codec Controls</title>
789
790 <table pgwide="1" frame="none" id="mpeg-control-id">
791 <title>Codec Control IDs</title>
792 <tgroup cols="4">
793 <colspec colname="c1" colwidth="1*" />
794 <colspec colname="c2" colwidth="6*" />
795 <colspec colname="c3" colwidth="2*" />
796 <colspec colname="c4" colwidth="6*" />
797 <spanspec namest="c1" nameend="c2" spanname="id" />
798 <spanspec namest="c2" nameend="c4" spanname="descr" />
799 <thead>
800 <row>
801 <entry spanname="id" align="left">ID</entry>
802 <entry align="left">Type</entry>
803 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
804 </row>
805 </thead>
806 <tbody valign="top">
807 <row><entry></entry></row>
808 <row>
809 <entry spanname="id"><constant>V4L2_CID_MPEG_CLASS</constant>&nbsp;</entry>
810 <entry>class</entry>
811 </row><row><entry spanname="descr">The Codec class
812descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
813description of this control class. This description can be used as the
814caption of a Tab page in a GUI, for example.</entry>
815 </row>
816 <row><entry></entry></row>
817 <row id="v4l2-mpeg-stream-type">
818 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_TYPE</constant>&nbsp;</entry>
819 <entry>enum&nbsp;v4l2_mpeg_stream_type</entry>
820 </row><row><entry spanname="descr">The MPEG-1, -2 or -4
821output stream type. One cannot assume anything here. Each hardware
822MPEG encoder tends to support different subsets of the available MPEG
823stream types. This control is specific to multiplexed MPEG streams.
824The currently defined stream types are:</entry>
825 </row>
826 <row>
827 <entrytbl spanname="descr" cols="2">
828 <tbody valign="top">
829 <row>
830 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_PS</constant>&nbsp;</entry>
831 <entry>MPEG-2 program stream</entry>
832 </row>
833 <row>
834 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_TS</constant>&nbsp;</entry>
835 <entry>MPEG-2 transport stream</entry>
836 </row>
837 <row>
838 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_SS</constant>&nbsp;</entry>
839 <entry>MPEG-1 system stream</entry>
840 </row>
841 <row>
842 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_DVD</constant>&nbsp;</entry>
843 <entry>MPEG-2 DVD-compatible stream</entry>
844 </row>
845 <row>
846 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG1_VCD</constant>&nbsp;</entry>
847 <entry>MPEG-1 VCD-compatible stream</entry>
848 </row>
849 <row>
850 <entry><constant>V4L2_MPEG_STREAM_TYPE_MPEG2_SVCD</constant>&nbsp;</entry>
851 <entry>MPEG-2 SVCD-compatible stream</entry>
852 </row>
853 </tbody>
854 </entrytbl>
855 </row>
856 <row><entry></entry></row>
857 <row>
858 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PMT</constant>&nbsp;</entry>
859 <entry>integer</entry>
860 </row><row><entry spanname="descr">Program Map Table
861Packet ID for the MPEG transport stream (default 16)</entry>
862 </row>
863 <row><entry></entry></row>
864 <row>
865 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_AUDIO</constant>&nbsp;</entry>
866 <entry>integer</entry>
867 </row><row><entry spanname="descr">Audio Packet ID for
868the MPEG transport stream (default 256)</entry>
869 </row>
870 <row><entry></entry></row>
871 <row>
872 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_VIDEO</constant>&nbsp;</entry>
873 <entry>integer</entry>
874 </row><row><entry spanname="descr">Video Packet ID for
875the MPEG transport stream (default 260)</entry>
876 </row>
877 <row><entry></entry></row>
878 <row>
879 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PID_PCR</constant>&nbsp;</entry>
880 <entry>integer</entry>
881 </row><row><entry spanname="descr">Packet ID for the
882MPEG transport stream carrying PCR fields (default 259)</entry>
883 </row>
884 <row><entry></entry></row>
885 <row>
886 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_AUDIO</constant>&nbsp;</entry>
887 <entry>integer</entry>
888 </row><row><entry spanname="descr">Audio ID for MPEG
889PES</entry>
890 </row>
891 <row><entry></entry></row>
892 <row>
893 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_PES_ID_VIDEO</constant>&nbsp;</entry>
894 <entry>integer</entry>
895 </row><row><entry spanname="descr">Video ID for MPEG
896PES</entry>
897 </row>
898 <row><entry></entry></row>
899 <row id="v4l2-mpeg-stream-vbi-fmt">
900 <entry spanname="id"><constant>V4L2_CID_MPEG_STREAM_VBI_FMT</constant>&nbsp;</entry>
901 <entry>enum&nbsp;v4l2_mpeg_stream_vbi_fmt</entry>
902 </row><row><entry spanname="descr">Some cards can embed
903VBI data (&eg; Closed Caption, Teletext) into the MPEG stream. This
904control selects whether VBI data should be embedded, and if so, what
905embedding method should be used. The list of possible VBI formats
906depends on the driver. The currently defined VBI format types
907are:</entry>
908 </row>
909 <row>
910 <entrytbl spanname="descr" cols="2">
911 <tbody valign="top">
912 <row>
913 <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_NONE</constant>&nbsp;</entry>
914 <entry>No VBI in the MPEG stream</entry>
915 </row>
916 <row>
917 <entry><constant>V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant>&nbsp;</entry>
918 <entry>VBI in private packets, IVTV format (documented
919in the kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.vbi</filename>)</entry>
920 </row>
921 </tbody>
922 </entrytbl>
923 </row>
924 <row><entry></entry></row>
925 <row id="v4l2-mpeg-audio-sampling-freq">
926 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_SAMPLING_FREQ</constant>&nbsp;</entry>
927 <entry>enum&nbsp;v4l2_mpeg_audio_sampling_freq</entry>
928 </row><row><entry spanname="descr">MPEG Audio sampling
929frequency. Possible values are:</entry>
930 </row>
931 <row>
932 <entrytbl spanname="descr" cols="2">
933 <tbody valign="top">
934 <row>
935 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_44100</constant>&nbsp;</entry>
936 <entry>44.1 kHz</entry>
937 </row>
938 <row>
939 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_48000</constant>&nbsp;</entry>
940 <entry>48 kHz</entry>
941 </row>
942 <row>
943 <entry><constant>V4L2_MPEG_AUDIO_SAMPLING_FREQ_32000</constant>&nbsp;</entry>
944 <entry>32 kHz</entry>
945 </row>
946 </tbody>
947 </entrytbl>
948 </row>
949 <row><entry></entry></row>
950 <row id="v4l2-mpeg-audio-encoding">
951 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_ENCODING</constant>&nbsp;</entry>
952 <entry>enum&nbsp;v4l2_mpeg_audio_encoding</entry>
953 </row><row><entry spanname="descr">MPEG Audio encoding.
954This control is specific to multiplexed MPEG streams.
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_ENCODING_LAYER_1</constant>&nbsp;</entry>
962 <entry>MPEG-1/2 Layer I encoding</entry>
963 </row>
964 <row>
965 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_2</constant>&nbsp;</entry>
966 <entry>MPEG-1/2 Layer II encoding</entry>
967 </row>
968 <row>
969 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_LAYER_3</constant>&nbsp;</entry>
970 <entry>MPEG-1/2 Layer III encoding</entry>
971 </row>
972 <row>
973 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AAC</constant>&nbsp;</entry>
974 <entry>MPEG-2/4 AAC (Advanced Audio Coding)</entry>
975 </row>
976 <row>
977 <entry><constant>V4L2_MPEG_AUDIO_ENCODING_AC3</constant>&nbsp;</entry>
978 <entry>AC-3 aka ATSC A/52 encoding</entry>
979 </row>
980 </tbody>
981 </entrytbl>
982 </row>
983 <row><entry></entry></row>
984 <row id="v4l2-mpeg-audio-l1-bitrate">
985 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L1_BITRATE</constant>&nbsp;</entry>
986 <entry>enum&nbsp;v4l2_mpeg_audio_l1_bitrate</entry>
987 </row><row><entry spanname="descr">MPEG-1/2 Layer I bitrate.
988Possible values are:</entry>
989 </row>
990 <row>
991 <entrytbl spanname="descr" cols="2">
992 <tbody valign="top">
993 <row>
994 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_32K</constant>&nbsp;</entry>
995 <entry>32 kbit/s</entry></row>
996 <row>
997 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_64K</constant>&nbsp;</entry>
998 <entry>64 kbit/s</entry>
999 </row>
1000 <row>
1001 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_96K</constant>&nbsp;</entry>
1002 <entry>96 kbit/s</entry>
1003 </row>
1004 <row>
1005 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_128K</constant>&nbsp;</entry>
1006 <entry>128 kbit/s</entry>
1007 </row>
1008 <row>
1009 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_160K</constant>&nbsp;</entry>
1010 <entry>160 kbit/s</entry>
1011 </row>
1012 <row>
1013 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_192K</constant>&nbsp;</entry>
1014 <entry>192 kbit/s</entry>
1015 </row>
1016 <row>
1017 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_224K</constant>&nbsp;</entry>
1018 <entry>224 kbit/s</entry>
1019 </row>
1020 <row>
1021 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_256K</constant>&nbsp;</entry>
1022 <entry>256 kbit/s</entry>
1023 </row>
1024 <row>
1025 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_288K</constant>&nbsp;</entry>
1026 <entry>288 kbit/s</entry>
1027 </row>
1028 <row>
1029 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_320K</constant>&nbsp;</entry>
1030 <entry>320 kbit/s</entry>
1031 </row>
1032 <row>
1033 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_352K</constant>&nbsp;</entry>
1034 <entry>352 kbit/s</entry>
1035 </row>
1036 <row>
1037 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_384K</constant>&nbsp;</entry>
1038 <entry>384 kbit/s</entry>
1039 </row>
1040 <row>
1041 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_416K</constant>&nbsp;</entry>
1042 <entry>416 kbit/s</entry>
1043 </row>
1044 <row>
1045 <entry><constant>V4L2_MPEG_AUDIO_L1_BITRATE_448K</constant>&nbsp;</entry>
1046 <entry>448 kbit/s</entry>
1047 </row>
1048 </tbody>
1049 </entrytbl>
1050 </row>
1051 <row><entry></entry></row>
1052 <row id="v4l2-mpeg-audio-l2-bitrate">
1053 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L2_BITRATE</constant>&nbsp;</entry>
1054 <entry>enum&nbsp;v4l2_mpeg_audio_l2_bitrate</entry>
1055 </row><row><entry spanname="descr">MPEG-1/2 Layer II bitrate.
1056Possible values are:</entry>
1057 </row>
1058 <row>
1059 <entrytbl spanname="descr" cols="2">
1060 <tbody valign="top">
1061 <row>
1062 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_32K</constant>&nbsp;</entry>
1063 <entry>32 kbit/s</entry>
1064 </row>
1065 <row>
1066 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_48K</constant>&nbsp;</entry>
1067 <entry>48 kbit/s</entry>
1068 </row>
1069 <row>
1070 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_56K</constant>&nbsp;</entry>
1071 <entry>56 kbit/s</entry>
1072 </row>
1073 <row>
1074 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_64K</constant>&nbsp;</entry>
1075 <entry>64 kbit/s</entry>
1076 </row>
1077 <row>
1078 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_80K</constant>&nbsp;</entry>
1079 <entry>80 kbit/s</entry>
1080 </row>
1081 <row>
1082 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_96K</constant>&nbsp;</entry>
1083 <entry>96 kbit/s</entry>
1084 </row>
1085 <row>
1086 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_112K</constant>&nbsp;</entry>
1087 <entry>112 kbit/s</entry>
1088 </row>
1089 <row>
1090 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_128K</constant>&nbsp;</entry>
1091 <entry>128 kbit/s</entry>
1092 </row>
1093 <row>
1094 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_160K</constant>&nbsp;</entry>
1095 <entry>160 kbit/s</entry>
1096 </row>
1097 <row>
1098 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_192K</constant>&nbsp;</entry>
1099 <entry>192 kbit/s</entry>
1100 </row>
1101 <row>
1102 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_224K</constant>&nbsp;</entry>
1103 <entry>224 kbit/s</entry>
1104 </row>
1105 <row>
1106 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_256K</constant>&nbsp;</entry>
1107 <entry>256 kbit/s</entry>
1108 </row>
1109 <row>
1110 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_320K</constant>&nbsp;</entry>
1111 <entry>320 kbit/s</entry>
1112 </row>
1113 <row>
1114 <entry><constant>V4L2_MPEG_AUDIO_L2_BITRATE_384K</constant>&nbsp;</entry>
1115 <entry>384 kbit/s</entry>
1116 </row>
1117 </tbody>
1118 </entrytbl>
1119 </row>
1120 <row><entry></entry></row>
1121 <row id="v4l2-mpeg-audio-l3-bitrate">
1122 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_L3_BITRATE</constant>&nbsp;</entry>
1123 <entry>enum&nbsp;v4l2_mpeg_audio_l3_bitrate</entry>
1124 </row><row><entry spanname="descr">MPEG-1/2 Layer III bitrate.
1125Possible values are:</entry>
1126 </row>
1127 <row>
1128 <entrytbl spanname="descr" cols="2">
1129 <tbody valign="top">
1130 <row>
1131 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_32K</constant>&nbsp;</entry>
1132 <entry>32 kbit/s</entry>
1133 </row>
1134 <row>
1135 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_40K</constant>&nbsp;</entry>
1136 <entry>40 kbit/s</entry>
1137 </row>
1138 <row>
1139 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_48K</constant>&nbsp;</entry>
1140 <entry>48 kbit/s</entry>
1141 </row>
1142 <row>
1143 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_56K</constant>&nbsp;</entry>
1144 <entry>56 kbit/s</entry>
1145 </row>
1146 <row>
1147 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_64K</constant>&nbsp;</entry>
1148 <entry>64 kbit/s</entry>
1149 </row>
1150 <row>
1151 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_80K</constant>&nbsp;</entry>
1152 <entry>80 kbit/s</entry>
1153 </row>
1154 <row>
1155 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_96K</constant>&nbsp;</entry>
1156 <entry>96 kbit/s</entry>
1157 </row>
1158 <row>
1159 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_112K</constant>&nbsp;</entry>
1160 <entry>112 kbit/s</entry>
1161 </row>
1162 <row>
1163 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_128K</constant>&nbsp;</entry>
1164 <entry>128 kbit/s</entry>
1165 </row>
1166 <row>
1167 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_160K</constant>&nbsp;</entry>
1168 <entry>160 kbit/s</entry>
1169 </row>
1170 <row>
1171 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_192K</constant>&nbsp;</entry>
1172 <entry>192 kbit/s</entry>
1173 </row>
1174 <row>
1175 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_224K</constant>&nbsp;</entry>
1176 <entry>224 kbit/s</entry>
1177 </row>
1178 <row>
1179 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_256K</constant>&nbsp;</entry>
1180 <entry>256 kbit/s</entry>
1181 </row>
1182 <row>
1183 <entry><constant>V4L2_MPEG_AUDIO_L3_BITRATE_320K</constant>&nbsp;</entry>
1184 <entry>320 kbit/s</entry>
1185 </row>
1186 </tbody>
1187 </entrytbl>
1188 </row>
1189 <row><entry></entry></row>
1190 <row>
1191 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AAC_BITRATE</constant>&nbsp;</entry>
1192 <entry>integer</entry>
1193 </row><row><entry spanname="descr">AAC bitrate in bits per second.</entry>
1194 </row>
1195 <row><entry></entry></row>
1196 <row id="v4l2-mpeg-audio-ac3-bitrate">
1197 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_AC3_BITRATE</constant>&nbsp;</entry>
1198 <entry>enum&nbsp;v4l2_mpeg_audio_ac3_bitrate</entry>
1199 </row><row><entry spanname="descr">AC-3 bitrate.
1200Possible values are:</entry>
1201 </row>
1202 <row>
1203 <entrytbl spanname="descr" cols="2">
1204 <tbody valign="top">
1205 <row>
1206 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_32K</constant>&nbsp;</entry>
1207 <entry>32 kbit/s</entry>
1208 </row>
1209 <row>
1210 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_40K</constant>&nbsp;</entry>
1211 <entry>40 kbit/s</entry>
1212 </row>
1213 <row>
1214 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_48K</constant>&nbsp;</entry>
1215 <entry>48 kbit/s</entry>
1216 </row>
1217 <row>
1218 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_56K</constant>&nbsp;</entry>
1219 <entry>56 kbit/s</entry>
1220 </row>
1221 <row>
1222 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_64K</constant>&nbsp;</entry>
1223 <entry>64 kbit/s</entry>
1224 </row>
1225 <row>
1226 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_80K</constant>&nbsp;</entry>
1227 <entry>80 kbit/s</entry>
1228 </row>
1229 <row>
1230 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_96K</constant>&nbsp;</entry>
1231 <entry>96 kbit/s</entry>
1232 </row>
1233 <row>
1234 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_112K</constant>&nbsp;</entry>
1235 <entry>112 kbit/s</entry>
1236 </row>
1237 <row>
1238 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_128K</constant>&nbsp;</entry>
1239 <entry>128 kbit/s</entry>
1240 </row>
1241 <row>
1242 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_160K</constant>&nbsp;</entry>
1243 <entry>160 kbit/s</entry>
1244 </row>
1245 <row>
1246 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_192K</constant>&nbsp;</entry>
1247 <entry>192 kbit/s</entry>
1248 </row>
1249 <row>
1250 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_224K</constant>&nbsp;</entry>
1251 <entry>224 kbit/s</entry>
1252 </row>
1253 <row>
1254 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_256K</constant>&nbsp;</entry>
1255 <entry>256 kbit/s</entry>
1256 </row>
1257 <row>
1258 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_320K</constant>&nbsp;</entry>
1259 <entry>320 kbit/s</entry>
1260 </row>
1261 <row>
1262 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_384K</constant>&nbsp;</entry>
1263 <entry>384 kbit/s</entry>
1264 </row>
1265 <row>
1266 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_448K</constant>&nbsp;</entry>
1267 <entry>448 kbit/s</entry>
1268 </row>
1269 <row>
1270 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_512K</constant>&nbsp;</entry>
1271 <entry>512 kbit/s</entry>
1272 </row>
1273 <row>
1274 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_576K</constant>&nbsp;</entry>
1275 <entry>576 kbit/s</entry>
1276 </row>
1277 <row>
1278 <entry><constant>V4L2_MPEG_AUDIO_AC3_BITRATE_640K</constant>&nbsp;</entry>
1279 <entry>640 kbit/s</entry>
1280 </row>
1281 </tbody>
1282 </entrytbl>
1283 </row>
1284 <row><entry></entry></row>
1285 <row id="v4l2-mpeg-audio-mode">
1286 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE</constant>&nbsp;</entry>
1287 <entry>enum&nbsp;v4l2_mpeg_audio_mode</entry>
1288 </row><row><entry spanname="descr">MPEG Audio mode.
1289Possible values are:</entry>
1290 </row>
1291 <row>
1292 <entrytbl spanname="descr" cols="2">
1293 <tbody valign="top">
1294 <row>
1295 <entry><constant>V4L2_MPEG_AUDIO_MODE_STEREO</constant>&nbsp;</entry>
1296 <entry>Stereo</entry>
1297 </row>
1298 <row>
1299 <entry><constant>V4L2_MPEG_AUDIO_MODE_JOINT_STEREO</constant>&nbsp;</entry>
1300 <entry>Joint Stereo</entry>
1301 </row>
1302 <row>
1303 <entry><constant>V4L2_MPEG_AUDIO_MODE_DUAL</constant>&nbsp;</entry>
1304 <entry>Bilingual</entry>
1305 </row>
1306 <row>
1307 <entry><constant>V4L2_MPEG_AUDIO_MODE_MONO</constant>&nbsp;</entry>
1308 <entry>Mono</entry>
1309 </row>
1310 </tbody>
1311 </entrytbl>
1312 </row>
1313 <row><entry></entry></row>
1314 <row id="v4l2-mpeg-audio-mode-extension">
1315 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MODE_EXTENSION</constant>&nbsp;</entry>
1316 <entry>enum&nbsp;v4l2_mpeg_audio_mode_extension</entry>
1317 </row><row><entry spanname="descr">Joint Stereo
1318audio mode extension. In Layer I and II they indicate which subbands
1319are in intensity stereo. All other subbands are coded in stereo. Layer
1320III is not (yet) supported. Possible values
1321are:</entry>
1322 </row>
1323 <row>
1324 <entrytbl spanname="descr" cols="2">
1325 <tbody valign="top">
1326 <row>
1327 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_4</constant>&nbsp;</entry>
1328 <entry>Subbands 4-31 in intensity stereo</entry>
1329 </row>
1330 <row>
1331 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_8</constant>&nbsp;</entry>
1332 <entry>Subbands 8-31 in intensity stereo</entry>
1333 </row>
1334 <row>
1335 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_12</constant>&nbsp;</entry>
1336 <entry>Subbands 12-31 in intensity stereo</entry>
1337 </row>
1338 <row>
1339 <entry><constant>V4L2_MPEG_AUDIO_MODE_EXTENSION_BOUND_16</constant>&nbsp;</entry>
1340 <entry>Subbands 16-31 in intensity stereo</entry>
1341 </row>
1342 </tbody>
1343 </entrytbl>
1344 </row>
1345 <row><entry></entry></row>
1346 <row id="v4l2-mpeg-audio-emphasis">
1347 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_EMPHASIS</constant>&nbsp;</entry>
1348 <entry>enum&nbsp;v4l2_mpeg_audio_emphasis</entry>
1349 </row><row><entry spanname="descr">Audio Emphasis.
1350Possible values are:</entry>
1351 </row>
1352 <row>
1353 <entrytbl spanname="descr" cols="2">
1354 <tbody valign="top">
1355 <row>
1356 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_NONE</constant>&nbsp;</entry>
1357 <entry>None</entry>
1358 </row>
1359 <row>
1360 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_50_DIV_15_uS</constant>&nbsp;</entry>
1361 <entry>50/15 microsecond emphasis</entry>
1362 </row>
1363 <row>
1364 <entry><constant>V4L2_MPEG_AUDIO_EMPHASIS_CCITT_J17</constant>&nbsp;</entry>
1365 <entry>CCITT J.17</entry>
1366 </row>
1367 </tbody>
1368 </entrytbl>
1369 </row>
1370 <row><entry></entry></row>
1371 <row id="v4l2-mpeg-audio-crc">
1372 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_CRC</constant>&nbsp;</entry>
1373 <entry>enum&nbsp;v4l2_mpeg_audio_crc</entry>
1374 </row><row><entry spanname="descr">CRC method. Possible
1375values are:</entry>
1376 </row>
1377 <row>
1378 <entrytbl spanname="descr" cols="2">
1379 <tbody valign="top">
1380 <row>
1381 <entry><constant>V4L2_MPEG_AUDIO_CRC_NONE</constant>&nbsp;</entry>
1382 <entry>None</entry>
1383 </row>
1384 <row>
1385 <entry><constant>V4L2_MPEG_AUDIO_CRC_CRC16</constant>&nbsp;</entry>
1386 <entry>16 bit parity check</entry>
1387 </row>
1388 </tbody>
1389 </entrytbl>
1390 </row>
1391 <row><entry></entry></row>
1392 <row>
1393 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_MUTE</constant>&nbsp;</entry>
1394 <entry>boolean</entry>
1395 </row><row><entry spanname="descr">Mutes the audio when
1396capturing. This is not done by muting audio hardware, which can still
1397produce a slight hiss, but in the encoder itself, guaranteeing a fixed
1398and reproducible audio bitstream. 0 = unmuted, 1 = muted.</entry>
1399 </row>
1400 <row><entry></entry></row>
1401 <row id="v4l2-mpeg-audio-dec-playback">
1402 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK</constant>&nbsp;</entry>
1403 <entry>enum&nbsp;v4l2_mpeg_audio_dec_playback</entry>
1404 </row><row><entry spanname="descr">Determines how monolingual audio should be played back.
1405Possible values are:</entry>
1406 </row>
1407 <row>
1408 <entrytbl spanname="descr" cols="2">
1409 <tbody valign="top">
1410 <row>
1411 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_AUTO</constant>&nbsp;</entry>
1412 <entry>Automatically determines the best playback mode.</entry>
1413 </row>
1414 <row>
1415 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_STEREO</constant>&nbsp;</entry>
1416 <entry>Stereo playback.</entry>
1417 </row>
1418 <row>
1419 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_LEFT</constant>&nbsp;</entry>
1420 <entry>Left channel playback.</entry>
1421 </row>
1422 <row>
1423 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_RIGHT</constant>&nbsp;</entry>
1424 <entry>Right channel playback.</entry>
1425 </row>
1426 <row>
1427 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_MONO</constant>&nbsp;</entry>
1428 <entry>Mono playback.</entry>
1429 </row>
1430 <row>
1431 <entry><constant>V4L2_MPEG_AUDIO_DEC_PLAYBACK_SWAPPED_STEREO</constant>&nbsp;</entry>
1432 <entry>Stereo playback with swapped left and right channels.</entry>
1433 </row>
1434 </tbody>
1435 </entrytbl>
1436 </row>
1437 <row><entry></entry></row>
1438 <row id="v4l2-mpeg-audio-dec-multilingual-playback">
1439 <entry spanname="id"><constant>V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK</constant>&nbsp;</entry>
1440 <entry>enum&nbsp;v4l2_mpeg_audio_dec_playback</entry>
1441 </row><row><entry spanname="descr">Determines how multilingual audio should be played back.</entry>
1442 </row>
1443 <row><entry></entry></row>
1444 <row id="v4l2-mpeg-video-encoding">
1445 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ENCODING</constant>&nbsp;</entry>
1446 <entry>enum&nbsp;v4l2_mpeg_video_encoding</entry>
1447 </row><row><entry spanname="descr">MPEG Video encoding
1448method. This control is specific to multiplexed MPEG streams.
1449Possible values are:</entry>
1450 </row>
1451 <row>
1452 <entrytbl spanname="descr" cols="2">
1453 <tbody valign="top">
1454 <row>
1455 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_1</constant>&nbsp;</entry>
1456 <entry>MPEG-1 Video encoding</entry>
1457 </row>
1458 <row>
1459 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_2</constant>&nbsp;</entry>
1460 <entry>MPEG-2 Video encoding</entry>
1461 </row>
1462 <row>
1463 <entry><constant>V4L2_MPEG_VIDEO_ENCODING_MPEG_4_AVC</constant>&nbsp;</entry>
1464 <entry>MPEG-4 AVC (H.264) Video encoding</entry>
1465 </row>
1466 </tbody>
1467 </entrytbl>
1468 </row>
1469 <row><entry></entry></row>
1470 <row id="v4l2-mpeg-video-aspect">
1471 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_ASPECT</constant>&nbsp;</entry>
1472 <entry>enum&nbsp;v4l2_mpeg_video_aspect</entry>
1473 </row><row><entry spanname="descr">Video aspect.
1474Possible values are:</entry>
1475 </row>
1476 <row>
1477 <entrytbl spanname="descr" cols="2">
1478 <tbody valign="top">
1479 <row>
1480 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_1x1</constant>&nbsp;</entry>
1481 </row>
1482 <row>
1483 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_4x3</constant>&nbsp;</entry>
1484 </row>
1485 <row>
1486 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_16x9</constant>&nbsp;</entry>
1487 </row>
1488 <row>
1489 <entry><constant>V4L2_MPEG_VIDEO_ASPECT_221x100</constant>&nbsp;</entry>
1490 </row>
1491 </tbody>
1492 </entrytbl>
1493 </row>
1494 <row><entry></entry></row>
1495 <row>
1496 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_B_FRAMES</constant>&nbsp;</entry>
1497 <entry>integer</entry>
1498 </row><row><entry spanname="descr">Number of B-Frames
1499(default 2)</entry>
1500 </row>
1501 <row><entry></entry></row>
1502 <row>
1503 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_SIZE</constant>&nbsp;</entry>
1504 <entry>integer</entry>
1505 </row><row><entry spanname="descr">GOP size (default
150612)</entry>
1507 </row>
1508 <row><entry></entry></row>
1509 <row>
1510 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_GOP_CLOSURE</constant>&nbsp;</entry>
1511 <entry>boolean</entry>
1512 </row><row><entry spanname="descr">GOP closure (default
15131)</entry>
1514 </row>
1515 <row><entry></entry></row>
1516 <row>
1517 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_PULLDOWN</constant>&nbsp;</entry>
1518 <entry>boolean</entry>
1519 </row><row><entry spanname="descr">Enable 3:2 pulldown
1520(default 0)</entry>
1521 </row>
1522 <row><entry></entry></row>
1523 <row id="v4l2-mpeg-video-bitrate-mode">
1524 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_MODE</constant>&nbsp;</entry>
1525 <entry>enum&nbsp;v4l2_mpeg_video_bitrate_mode</entry>
1526 </row><row><entry spanname="descr">Video bitrate mode.
1527Possible values are:</entry>
1528 </row>
1529 <row>
1530 <entrytbl spanname="descr" cols="2">
1531 <tbody valign="top">
1532 <row>
1533 <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_VBR</constant>&nbsp;</entry>
1534 <entry>Variable bitrate</entry>
1535 </row>
1536 <row>
1537 <entry><constant>V4L2_MPEG_VIDEO_BITRATE_MODE_CBR</constant>&nbsp;</entry>
1538 <entry>Constant bitrate</entry>
1539 </row>
1540 </tbody>
1541 </entrytbl>
1542 </row>
1543 <row><entry></entry></row>
1544 <row>
1545 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE</constant>&nbsp;</entry>
1546 <entry>integer</entry>
1547 </row><row><entry spanname="descr">Video bitrate in bits
1548per second.</entry>
1549 </row>
1550 <row><entry></entry></row>
1551 <row>
1552 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_BITRATE_PEAK</constant>&nbsp;</entry>
1553 <entry>integer</entry>
1554 </row><row><entry spanname="descr">Peak video bitrate in
1555bits per second. Must be larger or equal to the average video bitrate.
1556It is ignored if the video bitrate mode is set to constant
1557bitrate.</entry>
1558 </row>
1559 <row><entry></entry></row>
1560 <row>
1561 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_TEMPORAL_DECIMATION</constant>&nbsp;</entry>
1562 <entry>integer</entry>
1563 </row><row><entry spanname="descr">For every captured
1564frame, skip this many subsequent frames (default 0).</entry>
1565 </row>
1566 <row><entry></entry></row>
1567 <row>
1568 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE</constant>&nbsp;</entry>
1569 <entry>boolean</entry>
1570 </row>
1571 <row><entry spanname="descr">"Mutes" the video to a
1572fixed color when capturing. This is useful for testing, to produce a
1573fixed video bitstream. 0 = unmuted, 1 = muted.</entry>
1574 </row>
1575 <row><entry></entry></row>
1576 <row>
1577 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MUTE_YUV</constant>&nbsp;</entry>
1578 <entry>integer</entry>
1579 </row><row><entry spanname="descr">Sets the "mute" color
1580of the video. The supplied 32-bit integer is interpreted as follows (bit
15810 = least significant bit):</entry>
1582 </row>
1583 <row>
1584 <entrytbl spanname="descr" cols="2">
1585 <tbody valign="top">
1586 <row>
1587 <entry>Bit 0:7</entry>
1588 <entry>V chrominance information</entry>
1589 </row>
1590 <row>
1591 <entry>Bit 8:15</entry>
1592 <entry>U chrominance information</entry>
1593 </row>
1594 <row>
1595 <entry>Bit 16:23</entry>
1596 <entry>Y luminance information</entry>
1597 </row>
1598 <row>
1599 <entry>Bit 24:31</entry>
1600 <entry>Must be zero.</entry>
1601 </row>
1602 </tbody>
1603 </entrytbl>
1604 </row>
1605 <row><entry></entry></row>
1606 <row id="v4l2-mpeg-video-dec-pts">
1607 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DEC_PTS</constant>&nbsp;</entry>
1608 <entry>integer64</entry>
1609 </row><row><entry spanname="descr">This read-only control returns the
161033-bit video Presentation Time Stamp as defined in ITU T-REC-H.222.0 and ISO/IEC 13818-1 of
1611the currently displayed frame. This is the same PTS as is used in &VIDIOC-DECODER-CMD;.</entry>
1612 </row>
1613 <row><entry></entry></row>
1614 <row id="v4l2-mpeg-video-dec-frame">
1615 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DEC_FRAME</constant>&nbsp;</entry>
1616 <entry>integer64</entry>
1617 </row><row><entry spanname="descr">This read-only control returns the
1618frame counter of the frame that is currently displayed (decoded). This value is reset to 0 whenever
1619the decoder is started.</entry>
1620 </row>
1621
1622 <row><entry></entry></row>
1623 <row>
1624 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_SLICE_INTERFACE</constant>&nbsp;</entry>
1625 <entry>boolean</entry>
1626 </row>
1627 <row><entry spanname="descr">If enabled the decoder expects to receive a single slice per buffer, otherwise
1628the decoder expects a single frame in per buffer. Applicable to the decoder, all codecs.
1629</entry>
1630 </row>
1631
1632 <row><entry></entry></row>
1633 <row>
1634 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_ENABLE</constant>&nbsp;</entry>
1635 <entry>boolean</entry>
1636 </row>
1637 <row><entry spanname="descr">Enable writing sample aspect ratio in the Video Usability Information.
1638Applicable to the H264 encoder.</entry>
1639 </row>
1640
1641 <row><entry></entry></row>
1642 <row id="v4l2-mpeg-video-h264-vui-sar-idc">
1643 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_SAR_IDC</constant>&nbsp;</entry>
1644 <entry>enum&nbsp;v4l2_mpeg_video_h264_vui_sar_idc</entry>
1645 </row>
1646 <row><entry spanname="descr">VUI sample aspect ratio indicator for H.264 encoding. The value
1647is defined in the table E-1 in the standard. Applicable to the H264 encoder.</entry>
1648 </row>
1649 <row>
1650 <entrytbl spanname="descr" cols="2">
1651 <tbody valign="top">
1652
1653 <row>
1654 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_UNSPECIFIED</constant>&nbsp;</entry>
1655 <entry>Unspecified</entry>
1656 </row>
1657 <row>
1658 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_1x1</constant>&nbsp;</entry>
1659 <entry>1x1</entry>
1660 </row>
1661 <row>
1662 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_12x11</constant>&nbsp;</entry>
1663 <entry>12x11</entry>
1664 </row>
1665 <row>
1666 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_10x11</constant>&nbsp;</entry>
1667 <entry>10x11</entry>
1668 </row>
1669 <row>
1670 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_16x11</constant>&nbsp;</entry>
1671 <entry>16x11</entry>
1672 </row>
1673 <row>
1674 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_40x33</constant>&nbsp;</entry>
1675 <entry>40x33</entry>
1676 </row>
1677 <row>
1678 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_24x11</constant>&nbsp;</entry>
1679 <entry>24x11</entry>
1680 </row>
1681 <row>
1682 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_20x11</constant>&nbsp;</entry>
1683 <entry>20x11</entry>
1684 </row>
1685 <row>
1686 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_32x11</constant>&nbsp;</entry>
1687 <entry>32x11</entry>
1688 </row>
1689 <row>
1690 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_80x33</constant>&nbsp;</entry>
1691 <entry>80x33</entry>
1692 </row>
1693 <row>
1694 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_18x11</constant>&nbsp;</entry>
1695 <entry>18x11</entry>
1696 </row>
1697 <row>
1698 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_15x11</constant>&nbsp;</entry>
1699 <entry>15x11</entry>
1700 </row>
1701 <row>
1702 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_64x33</constant>&nbsp;</entry>
1703 <entry>64x33</entry>
1704 </row>
1705 <row>
1706 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_160x99</constant>&nbsp;</entry>
1707 <entry>160x99</entry>
1708 </row>
1709 <row>
1710 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_4x3</constant>&nbsp;</entry>
1711 <entry>4x3</entry>
1712 </row>
1713 <row>
1714 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_3x2</constant>&nbsp;</entry>
1715 <entry>3x2</entry>
1716 </row>
1717 <row>
1718 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_2x1</constant>&nbsp;</entry>
1719 <entry>2x1</entry>
1720 </row>
1721 <row>
1722 <entry><constant>V4L2_MPEG_VIDEO_H264_VUI_SAR_IDC_EXTENDED</constant>&nbsp;</entry>
1723 <entry>Extended SAR</entry>
1724 </row>
1725 </tbody>
1726 </entrytbl>
1727 </row>
1728
1729 <row><entry></entry></row>
1730 <row>
1731 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH</constant>&nbsp;</entry>
1732 <entry>integer</entry>
1733 </row>
1734 <row><entry spanname="descr">Extended sample aspect ratio width for H.264 VUI encoding.
1735Applicable to the H264 encoder.</entry>
1736 </row>
1737
1738 <row><entry></entry></row>
1739 <row>
1740 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT</constant>&nbsp;</entry>
1741 <entry>integer</entry>
1742 </row>
1743 <row><entry spanname="descr">Extended sample aspect ratio height for H.264 VUI encoding.
1744Applicable to the H264 encoder.</entry>
1745 </row>
1746
1747 <row><entry></entry></row>
1748 <row id="v4l2-mpeg-video-h264-level">
1749 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LEVEL</constant>&nbsp;</entry>
1750 <entry>enum&nbsp;v4l2_mpeg_video_h264_level</entry>
1751 </row>
1752 <row><entry spanname="descr">The level information for the H264 video elementary stream.
1753Applicable to the H264 encoder.
1754Possible values are:</entry>
1755 </row>
1756 <row>
1757 <entrytbl spanname="descr" cols="2">
1758 <tbody valign="top">
1759 <row>
1760 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_0</constant>&nbsp;</entry>
1761 <entry>Level 1.0</entry>
1762 </row>
1763 <row>
1764 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1B</constant>&nbsp;</entry>
1765 <entry>Level 1B</entry>
1766 </row>
1767 <row>
1768 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_1</constant>&nbsp;</entry>
1769 <entry>Level 1.1</entry>
1770 </row>
1771 <row>
1772 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_2</constant>&nbsp;</entry>
1773 <entry>Level 1.2</entry>
1774 </row>
1775 <row>
1776 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_1_3</constant>&nbsp;</entry>
1777 <entry>Level 1.3</entry>
1778 </row>
1779 <row>
1780 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_0</constant>&nbsp;</entry>
1781 <entry>Level 2.0</entry>
1782 </row>
1783 <row>
1784 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_1</constant>&nbsp;</entry>
1785 <entry>Level 2.1</entry>
1786 </row>
1787 <row>
1788 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_2_2</constant>&nbsp;</entry>
1789 <entry>Level 2.2</entry>
1790 </row>
1791 <row>
1792 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_0</constant>&nbsp;</entry>
1793 <entry>Level 3.0</entry>
1794 </row>
1795 <row>
1796 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_1</constant>&nbsp;</entry>
1797 <entry>Level 3.1</entry>
1798 </row>
1799 <row>
1800 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_3_2</constant>&nbsp;</entry>
1801 <entry>Level 3.2</entry>
1802 </row>
1803 <row>
1804 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_0</constant>&nbsp;</entry>
1805 <entry>Level 4.0</entry>
1806 </row>
1807 <row>
1808 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_1</constant>&nbsp;</entry>
1809 <entry>Level 4.1</entry>
1810 </row>
1811 <row>
1812 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_4_2</constant>&nbsp;</entry>
1813 <entry>Level 4.2</entry>
1814 </row>
1815 <row>
1816 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_5_0</constant>&nbsp;</entry>
1817 <entry>Level 5.0</entry>
1818 </row>
1819 <row>
1820 <entry><constant>V4L2_MPEG_VIDEO_H264_LEVEL_5_1</constant>&nbsp;</entry>
1821 <entry>Level 5.1</entry>
1822 </row>
1823 </tbody>
1824 </entrytbl>
1825 </row>
1826
1827 <row><entry></entry></row>
1828 <row id="v4l2-mpeg-video-mpeg4-level">
1829 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_LEVEL</constant>&nbsp;</entry>
1830 <entry>enum&nbsp;v4l2_mpeg_video_mpeg4_level</entry>
1831 </row>
1832 <row><entry spanname="descr">The level information for the MPEG4 elementary stream.
1833Applicable to the MPEG4 encoder.
1834Possible values are:</entry>
1835 </row>
1836 <row>
1837 <entrytbl spanname="descr" cols="2">
1838 <tbody valign="top">
1839 <row>
1840 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0</constant>&nbsp;</entry>
1841 <entry>Level 0</entry>
1842 </row>
1843 <row>
1844 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_0B</constant>&nbsp;</entry>
1845 <entry>Level 0b</entry>
1846 </row>
1847 <row>
1848 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_1</constant>&nbsp;</entry>
1849 <entry>Level 1</entry>
1850 </row>
1851 <row>
1852 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_2</constant>&nbsp;</entry>
1853 <entry>Level 2</entry>
1854 </row>
1855 <row>
1856 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3</constant>&nbsp;</entry>
1857 <entry>Level 3</entry>
1858 </row>
1859 <row>
1860 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_3B</constant>&nbsp;</entry>
1861 <entry>Level 3b</entry>
1862 </row>
1863 <row>
1864 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_4</constant>&nbsp;</entry>
1865 <entry>Level 4</entry>
1866 </row>
1867 <row>
1868 <entry><constant>V4L2_MPEG_VIDEO_LEVEL_5</constant>&nbsp;</entry>
1869 <entry>Level 5</entry>
1870 </row>
1871 </tbody>
1872 </entrytbl>
1873 </row>
1874
1875 <row><entry></entry></row>
1876 <row id="v4l2-mpeg-video-h264-profile">
1877 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_PROFILE</constant>&nbsp;</entry>
1878 <entry>enum&nbsp;v4l2_mpeg_video_h264_profile</entry>
1879 </row>
1880 <row><entry spanname="descr">The profile information for H264.
1881Applicable to the H264 encoder.
1882Possible values are:</entry>
1883 </row>
1884 <row>
1885 <entrytbl spanname="descr" cols="2">
1886 <tbody valign="top">
1887 <row>
1888 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_BASELINE</constant>&nbsp;</entry>
1889 <entry>Baseline profile</entry>
1890 </row>
1891 <row>
1892 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_BASELINE</constant>&nbsp;</entry>
1893 <entry>Constrained Baseline profile</entry>
1894 </row>
1895 <row>
1896 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MAIN</constant>&nbsp;</entry>
1897 <entry>Main profile</entry>
1898 </row>
1899 <row>
1900 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_EXTENDED</constant>&nbsp;</entry>
1901 <entry>Extended profile</entry>
1902 </row>
1903 <row>
1904 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH</constant>&nbsp;</entry>
1905 <entry>High profile</entry>
1906 </row>
1907 <row>
1908 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10</constant>&nbsp;</entry>
1909 <entry>High 10 profile</entry>
1910 </row>
1911 <row>
1912 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422</constant>&nbsp;</entry>
1913 <entry>High 422 profile</entry>
1914 </row>
1915 <row>
1916 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_PREDICTIVE</constant>&nbsp;</entry>
1917 <entry>High 444 Predictive profile</entry>
1918 </row>
1919 <row>
1920 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_10_INTRA</constant>&nbsp;</entry>
1921 <entry>High 10 Intra profile</entry>
1922 </row>
1923 <row>
1924 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_422_INTRA</constant>&nbsp;</entry>
1925 <entry>High 422 Intra profile</entry>
1926 </row>
1927 <row>
1928 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_HIGH_444_INTRA</constant>&nbsp;</entry>
1929 <entry>High 444 Intra profile</entry>
1930 </row>
1931 <row>
1932 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_CAVLC_444_INTRA</constant>&nbsp;</entry>
1933 <entry>CAVLC 444 Intra profile</entry>
1934 </row>
1935 <row>
1936 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_BASELINE</constant>&nbsp;</entry>
1937 <entry>Scalable Baseline profile</entry>
1938 </row>
1939 <row>
1940 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH</constant>&nbsp;</entry>
1941 <entry>Scalable High profile</entry>
1942 </row>
1943 <row>
1944 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA</constant>&nbsp;</entry>
1945 <entry>Scalable High Intra profile</entry>
1946 </row>
1947 <row>
1948 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH</constant>&nbsp;</entry>
1949 <entry>Stereo High profile</entry>
1950 </row>
1951 <row>
1952 <entry><constant>V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH</constant>&nbsp;</entry>
1953 <entry>Multiview High profile</entry>
1954 </row>
1955
1956 </tbody>
1957 </entrytbl>
1958 </row>
1959
1960 <row><entry></entry></row>
1961 <row id="v4l2-mpeg-video-mpeg4-profile">
1962 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_PROFILE</constant>&nbsp;</entry>
1963 <entry>enum&nbsp;v4l2_mpeg_video_mpeg4_profile</entry>
1964 </row>
1965 <row><entry spanname="descr">The profile information for MPEG4.
1966Applicable to the MPEG4 encoder.
1967Possible values are:</entry>
1968 </row>
1969 <row>
1970 <entrytbl spanname="descr" cols="2">
1971 <tbody valign="top">
1972 <row>
1973 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE</constant>&nbsp;</entry>
1974 <entry>Simple profile</entry>
1975 </row>
1976 <row>
1977 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_SIMPLE</constant>&nbsp;</entry>
1978 <entry>Advanced Simple profile</entry>
1979 </row>
1980 <row>
1981 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_CORE</constant>&nbsp;</entry>
1982 <entry>Core profile</entry>
1983 </row>
1984 <row>
1985 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_SIMPLE_SCALABLE</constant>&nbsp;</entry>
1986 <entry>Simple Scalable profile</entry>
1987 </row>
1988 <row>
1989 <entry><constant>V4L2_MPEG_VIDEO_PROFILE_ADVANCED_CODING_EFFICIENCY</constant>&nbsp;</entry>
1990 <entry></entry>
1991 </row>
1992 </tbody>
1993 </entrytbl>
1994 </row>
1995
1996 <row><entry></entry></row>
1997 <row>
1998 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MAX_REF_PIC</constant>&nbsp;</entry>
1999 <entry>integer</entry>
2000 </row>
2001 <row><entry spanname="descr">The maximum number of reference pictures used for encoding.
2002Applicable to the encoder.
2003</entry>
2004 </row>
2005
2006 <row><entry></entry></row>
2007 <row id="v4l2-mpeg-video-multi-slice-mode">
2008 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant>&nbsp;</entry>
2009 <entry>enum&nbsp;v4l2_mpeg_video_multi_slice_mode</entry>
2010 </row>
2011 <row><entry spanname="descr">Determines how the encoder should handle division of frame into slices.
2012Applicable to the encoder.
2013Possible values are:</entry>
2014 </row>
2015 <row>
2016 <entrytbl spanname="descr" cols="2">
2017 <tbody valign="top">
2018 <row>
2019 <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_SINGLE</constant>&nbsp;</entry>
2020 <entry>Single slice per frame.</entry>
2021 </row>
2022 <row>
2023 <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant>&nbsp;</entry>
2024 <entry>Multiple slices with set maximum number of macroblocks per slice.</entry>
2025 </row>
2026 <row>
2027 <entry><constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES</constant>&nbsp;</entry>
2028 <entry>Multiple slice with set maximum size in bytes per slice.</entry>
2029 </row>
2030 </tbody>
2031 </entrytbl>
2032 </row>
2033
2034 <row><entry></entry></row>
2035 <row>
2036 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_MB</constant>&nbsp;</entry>
2037 <entry>integer</entry>
2038 </row>
2039 <row><entry spanname="descr">The maximum number of macroblocks in a slice. Used when
2040<constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> is set to <constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_MB</constant>.
2041Applicable to the encoder.</entry>
2042 </row>
2043
2044 <row><entry></entry></row>
2045 <row>
2046 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MAX_BYTES</constant>&nbsp;</entry>
2047 <entry>integer</entry>
2048 </row>
2049 <row><entry spanname="descr">The maximum size of a slice in bytes. Used when
2050<constant>V4L2_CID_MPEG_VIDEO_MULTI_SLICE_MODE</constant> is set to <constant>V4L2_MPEG_VIDEO_MULTI_SLICE_MODE_MAX_BYTES</constant>.
2051Applicable to the encoder.</entry>
2052 </row>
2053
2054 <row><entry></entry></row>
2055 <row id="v4l2-mpeg-video-h264-loop-filter-mode">
2056 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_MODE</constant>&nbsp;</entry>
2057 <entry>enum&nbsp;v4l2_mpeg_video_h264_loop_filter_mode</entry>
2058 </row>
2059 <row><entry spanname="descr">Loop filter mode for H264 encoder.
2060Possible values are:</entry>
2061 </row>
2062 <row>
2063 <entrytbl spanname="descr" cols="2">
2064 <tbody valign="top">
2065 <row>
2066 <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_ENABLED</constant>&nbsp;</entry>
2067 <entry>Loop filter is enabled.</entry>
2068 </row>
2069 <row>
2070 <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED</constant>&nbsp;</entry>
2071 <entry>Loop filter is disabled.</entry>
2072 </row>
2073 <row>
2074 <entry><constant>V4L2_MPEG_VIDEO_H264_LOOP_FILTER_MODE_DISABLED_AT_SLICE_BOUNDARY</constant>&nbsp;</entry>
2075 <entry>Loop filter is disabled at the slice boundary.</entry>
2076 </row>
2077 </tbody>
2078 </entrytbl>
2079 </row>
2080
2081 <row><entry></entry></row>
2082 <row>
2083 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA</constant>&nbsp;</entry>
2084 <entry>integer</entry>
2085 </row>
2086 <row><entry spanname="descr">Loop filter alpha coefficient, defined in the H264 standard.
2087Applicable to the H264 encoder.</entry>
2088 </row>
2089
2090 <row><entry></entry></row>
2091 <row>
2092 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA</constant>&nbsp;</entry>
2093 <entry>integer</entry>
2094 </row>
2095 <row><entry spanname="descr">Loop filter beta coefficient, defined in the H264 standard.
2096Applicable to the H264 encoder.</entry>
2097 </row>
2098
2099 <row><entry></entry></row>
2100 <row id="v4l2-mpeg-video-h264-entropy-mode">
2101 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ENTROPY_MODE</constant>&nbsp;</entry>
2102 <entry>enum&nbsp;v4l2_mpeg_video_h264_entropy_mode</entry>
2103 </row>
2104 <row><entry spanname="descr">Entropy coding mode for H264 - CABAC/CAVALC.
2105Applicable to the H264 encoder.
2106Possible values are:</entry>
2107 </row>
2108 <row>
2109 <entrytbl spanname="descr" cols="2">
2110 <tbody valign="top">
2111 <row>
2112 <entry><constant>V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CAVLC</constant>&nbsp;</entry>
2113 <entry>Use CAVLC entropy coding.</entry>
2114 </row>
2115 <row>
2116 <entry><constant>V4L2_MPEG_VIDEO_H264_ENTROPY_MODE_CABAC</constant>&nbsp;</entry>
2117 <entry>Use CABAC entropy coding.</entry>
2118 </row>
2119 </tbody>
2120 </entrytbl>
2121 </row>
2122
2123 <row><entry></entry></row>
2124 <row>
2125 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_8X8_TRANSFORM</constant>&nbsp;</entry>
2126 <entry>boolean</entry>
2127 </row>
2128 <row><entry spanname="descr">Enable 8X8 transform for H264. Applicable to the H264 encoder.</entry>
2129 </row>
2130
2131 <row><entry></entry></row>
2132 <row>
2133 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_CYCLIC_INTRA_REFRESH_MB</constant>&nbsp;</entry>
2134 <entry>integer</entry>
2135 </row>
2136 <row><entry spanname="descr">Cyclic intra macroblock refresh. This is the number of continuous macroblocks
2137refreshed every frame. Each frame a successive set of macroblocks is refreshed until the cycle completes and starts from the
2138top of the frame. Applicable to H264, H263 and MPEG4 encoder.</entry>
2139 </row>
2140
2141 <row><entry></entry></row>
2142 <row>
2143 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FRAME_RC_ENABLE</constant>&nbsp;</entry>
2144 <entry>boolean</entry>
2145 </row>
2146 <row><entry spanname="descr">Frame level rate control enable.
2147If this control is disabled then the quantization parameter for each frame type is constant and set with appropriate controls
2148(e.g. <constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant>).
2149If frame rate control is enabled then quantization parameter is adjusted to meet the chosen bitrate. Minimum and maximum value
2150for the quantization parameter can be set with appropriate controls (e.g. <constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant>).
2151Applicable to encoders.</entry>
2152 </row>
2153
2154 <row><entry></entry></row>
2155 <row>
2156 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>&nbsp;</entry>
2157 <entry>boolean</entry>
2158 </row>
2159 <row><entry spanname="descr">Macroblock level rate control enable.
2160Applicable to the MPEG4 and H264 encoders.</entry>
2161 </row>
2162
2163 <row><entry></entry></row>
2164 <row>
2165 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_QPEL</constant>&nbsp;</entry>
2166 <entry>boolean</entry>
2167 </row>
2168 <row><entry spanname="descr">Quarter pixel motion estimation for MPEG4. Applicable to the MPEG4 encoder.</entry>
2169 </row>
2170
2171 <row><entry></entry></row>
2172 <row>
2173 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_I_FRAME_QP</constant>&nbsp;</entry>
2174 <entry>integer</entry>
2175 </row>
2176 <row><entry spanname="descr">Quantization parameter for an I frame for H263. Valid range: from 1 to 31.</entry>
2177 </row>
2178
2179 <row><entry></entry></row>
2180 <row>
2181 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MIN_QP</constant>&nbsp;</entry>
2182 <entry>integer</entry>
2183 </row>
2184 <row><entry spanname="descr">Minimum quantization parameter for H263. Valid range: from 1 to 31.</entry>
2185 </row>
2186
2187 <row><entry></entry></row>
2188 <row>
2189 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_MAX_QP</constant>&nbsp;</entry>
2190 <entry>integer</entry>
2191 </row>
2192 <row><entry spanname="descr">Maximum quantization parameter for H263. Valid range: from 1 to 31.</entry>
2193 </row>
2194
2195 <row><entry></entry></row>
2196 <row>
2197 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_P_FRAME_QP</constant>&nbsp;</entry>
2198 <entry>integer</entry>
2199 </row>
2200 <row><entry spanname="descr">Quantization parameter for an P frame for H263. Valid range: from 1 to 31.</entry>
2201 </row>
2202
2203 <row><entry></entry></row>
2204 <row>
2205 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H263_B_FRAME_QP</constant>&nbsp;</entry>
2206 <entry>integer</entry>
2207 </row>
2208 <row><entry spanname="descr">Quantization parameter for an B frame for H263. Valid range: from 1 to 31.</entry>
2209 </row>
2210
2211 <row><entry></entry></row>
2212 <row>
2213 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_FRAME_QP</constant>&nbsp;</entry>
2214 <entry>integer</entry>
2215 </row>
2216 <row><entry spanname="descr">Quantization parameter for an I frame for H264. Valid range: from 0 to 51.</entry>
2217 </row>
2218
2219 <row><entry></entry></row>
2220 <row>
2221 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MIN_QP</constant>&nbsp;</entry>
2222 <entry>integer</entry>
2223 </row>
2224 <row><entry spanname="descr">Minimum quantization parameter for H264. Valid range: from 0 to 51.</entry>
2225 </row>
2226
2227 <row><entry></entry></row>
2228 <row>
2229 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_MAX_QP</constant>&nbsp;</entry>
2230 <entry>integer</entry>
2231 </row>
2232 <row><entry spanname="descr">Maximum quantization parameter for H264. Valid range: from 0 to 51.</entry>
2233 </row>
2234
2235 <row><entry></entry></row>
2236 <row>
2237 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_P_FRAME_QP</constant>&nbsp;</entry>
2238 <entry>integer</entry>
2239 </row>
2240 <row><entry spanname="descr">Quantization parameter for an P frame for H264. Valid range: from 0 to 51.</entry>
2241 </row>
2242
2243 <row><entry></entry></row>
2244 <row>
2245 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_B_FRAME_QP</constant>&nbsp;</entry>
2246 <entry>integer</entry>
2247 </row>
2248 <row><entry spanname="descr">Quantization parameter for an B frame for H264. Valid range: from 0 to 51.</entry>
2249 </row>
2250
2251 <row><entry></entry></row>
2252 <row>
2253 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_I_FRAME_QP</constant>&nbsp;</entry>
2254 <entry>integer</entry>
2255 </row>
2256 <row><entry spanname="descr">Quantization parameter for an I frame for MPEG4. Valid range: from 1 to 31.</entry>
2257 </row>
2258
2259 <row><entry></entry></row>
2260 <row>
2261 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MIN_QP</constant>&nbsp;</entry>
2262 <entry>integer</entry>
2263 </row>
2264 <row><entry spanname="descr">Minimum quantization parameter for MPEG4. Valid range: from 1 to 31.</entry>
2265 </row>
2266
2267 <row><entry></entry></row>
2268 <row>
2269 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_MAX_QP</constant>&nbsp;</entry>
2270 <entry>integer</entry>
2271 </row>
2272 <row><entry spanname="descr">Maximum quantization parameter for MPEG4. Valid range: from 1 to 31.</entry>
2273 </row>
2274
2275 <row><entry></entry></row>
2276 <row>
2277 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_P_FRAME_QP</constant>&nbsp;</entry>
2278 <entry>integer</entry>
2279 </row>
2280 <row><entry spanname="descr">Quantization parameter for an P frame for MPEG4. Valid range: from 1 to 31.</entry>
2281 </row>
2282
2283 <row><entry></entry></row>
2284 <row>
2285 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_B_FRAME_QP</constant>&nbsp;</entry>
2286 <entry>integer</entry>
2287 </row>
2288 <row><entry spanname="descr">Quantization parameter for an B frame for MPEG4. Valid range: from 1 to 31.</entry>
2289 </row>
2290
2291 <row><entry></entry></row>
2292 <row>
2293 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_SIZE</constant>&nbsp;</entry>
2294 <entry>integer</entry>
2295 </row>
2296 <row><entry spanname="descr">The Video Buffer Verifier size in kilobytes, it is used as a limitation of frame skip.
2297The VBV is defined in the standard as a mean to verify that the produced stream will be successfully decoded.
2298The standard describes it as "Part of a hypothetical decoder that is conceptually connected to the
2299output of the encoder. Its purpose is to provide a constraint on the variability of the data rate that an
2300encoder or editing process may produce.".
2301Applicable to the MPEG1, MPEG2, MPEG4 encoders.</entry>
2302 </row>
2303
2304 <row><entry></entry></row>
2305 <row id="v4l2-mpeg-video-vbv-delay">
2306 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VBV_DELAY</constant>&nbsp;</entry>
2307 <entry>integer</entry>
2308 </row><row><entry spanname="descr">Sets the initial delay in milliseconds for
2309VBV buffer control.</entry>
2310 </row>
2311
2312 <row><entry></entry></row>
2313 <row id="v4l2-mpeg-video-hor-search-range">
2314 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MV_H_SEARCH_RANGE</constant>&nbsp;</entry>
2315 <entry>integer</entry>
2316 </row>
2317 <row><entry spanname="descr">Horizontal search range defines maximum horizontal search area in pixels
2318to search and match for the present Macroblock (MB) in the reference picture. This V4L2 control macro is used to set
2319horizontal search range for motion estimation module in video encoder.</entry>
2320 </row>
2321
2322 <row><entry></entry></row>
2323 <row id="v4l2-mpeg-video-vert-search-range">
2324 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MV_V_SEARCH_RANGE</constant>&nbsp;</entry>
2325 <entry>integer</entry>
2326 </row>
2327 <row><entry spanname="descr">Vertical search range defines maximum vertical search area in pixels
2328to search and match for the present Macroblock (MB) in the reference picture. This V4L2 control macro is used to set
2329vertical search range for motion estimation module in video encoder.</entry>
2330 </row>
2331
2332 <row><entry></entry></row>
2333 <row id="v4l2-mpeg-video-force-key-frame">
2334 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME</constant>&nbsp;</entry>
2335 <entry>button</entry>
2336 </row><row><entry spanname="descr">Force a key frame for the next queued buffer. Applicable to encoders.
2337This is a general, codec-agnostic keyframe control.</entry>
2338 </row>
2339
2340 <row><entry></entry></row>
2341 <row>
2342 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_CPB_SIZE</constant>&nbsp;</entry>
2343 <entry>integer</entry>
2344 </row>
2345 <row><entry spanname="descr">The Coded Picture Buffer size in kilobytes, it is used as a limitation of frame skip.
2346The CPB is defined in the H264 standard as a mean to verify that the produced stream will be successfully decoded.
2347Applicable to the H264 encoder.</entry>
2348 </row>
2349
2350 <row><entry></entry></row>
2351 <row>
2352 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_I_PERIOD</constant>&nbsp;</entry>
2353 <entry>integer</entry>
2354 </row>
2355 <row><entry spanname="descr">Period between I-frames in the open GOP for H264. In case of an open GOP
2356this is the period between two I-frames. The period between IDR (Instantaneous Decoding Refresh) frames is taken from the GOP_SIZE control.
2357An IDR frame, which stands for Instantaneous Decoding Refresh is an I-frame after which no prior frames are
2358referenced. This means that a stream can be restarted from an IDR frame without the need to store or decode any
2359previous frames. Applicable to the H264 encoder.</entry>
2360 </row>
2361
2362 <row><entry></entry></row>
2363 <row id="v4l2-mpeg-video-header-mode">
2364 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_HEADER_MODE</constant>&nbsp;</entry>
2365 <entry>enum&nbsp;v4l2_mpeg_video_header_mode</entry>
2366 </row>
2367 <row><entry spanname="descr">Determines whether the header is returned as the first buffer or is
2368it returned together with the first frame. Applicable to encoders.
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_HEADER_MODE_SEPARATE</constant>&nbsp;</entry>
2376 <entry>The stream header is returned separately in the first buffer.</entry>
2377 </row>
2378 <row>
2379 <entry><constant>V4L2_MPEG_VIDEO_HEADER_MODE_JOINED_WITH_1ST_FRAME</constant>&nbsp;</entry>
2380 <entry>The stream header is returned together with the first encoded frame.</entry>
2381 </row>
2382 </tbody>
2383 </entrytbl>
2384 </row>
2385 <row><entry></entry></row>
2386 <row>
2387 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_REPEAT_SEQ_HEADER</constant>&nbsp;</entry>
2388 <entry>boolean</entry>
2389 </row><row><entry spanname="descr">Repeat the video sequence headers. Repeating these
2390headers makes random access to the video stream easier. Applicable to the MPEG1, 2 and 4 encoder.</entry>
2391 </row>
2392 <row>
2393 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_DECODER_MPEG4_DEBLOCK_FILTER</constant>&nbsp;</entry>
2394 <entry>boolean</entry>
2395 </row><row><entry spanname="descr">Enabled the deblocking post processing filter for MPEG4 decoder.
2396Applicable to the MPEG4 decoder.</entry>
2397 </row>
2398 <row><entry></entry></row>
2399 <row>
2400 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_RES</constant>&nbsp;</entry>
2401 <entry>integer</entry>
2402 </row><row><entry spanname="descr">vop_time_increment_resolution value for MPEG4. Applicable to the MPEG4 encoder.</entry>
2403 </row>
2404 <row><entry></entry></row>
2405 <row>
2406 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_MPEG4_VOP_TIME_INC</constant>&nbsp;</entry>
2407 <entry>integer</entry>
2408 </row><row><entry spanname="descr">vop_time_increment value for MPEG4. Applicable to the MPEG4 encoder.</entry>
2409 </row>
2410
2411 <row><entry></entry></row>
2412 <row>
2413 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FRAME_PACKING</constant>&nbsp;</entry>
2414 <entry>boolean</entry>
2415 </row>
2416 <row><entry spanname="descr">Enable generation of frame packing supplemental enhancement information in the encoded bitstream.
2417The frame packing SEI message contains the arrangement of L and R planes for 3D viewing. Applicable to the H264 encoder.</entry>
2418 </row>
2419
2420 <row><entry></entry></row>
2421 <row>
2422 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FP_CURRENT_FRAME_0</constant>&nbsp;</entry>
2423 <entry>boolean</entry>
2424 </row>
2425 <row><entry spanname="descr">Sets current frame as frame0 in frame packing SEI.
2426Applicable to the H264 encoder.</entry>
2427 </row>
2428
2429 <row><entry></entry></row>
2430 <row id="v4l2-mpeg-video-h264-sei-fp-arrangement-type">
2431 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE</constant>&nbsp;</entry>
2432 <entry>enum&nbsp;v4l2_mpeg_video_h264_sei_fp_arrangement_type</entry>
2433 </row>
2434 <row><entry spanname="descr">Frame packing arrangement type for H264 SEI.
2435Applicable to the H264 encoder.
2436Possible values are:</entry>
2437 </row>
2438 <row>
2439 <entrytbl spanname="descr" cols="2">
2440 <tbody valign="top">
2441 <row>
2442 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_CHEKERBOARD</constant>&nbsp;</entry>
2443 <entry>Pixels are alternatively from L and R.</entry>
2444 </row>
2445 <row>
2446 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_COLUMN</constant>&nbsp;</entry>
2447 <entry>L and R are interlaced by column.</entry>
2448 </row>
2449 <row>
2450 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_ROW</constant>&nbsp;</entry>
2451 <entry>L and R are interlaced by row.</entry>
2452 </row>
2453 <row>
2454 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_SIDE_BY_SIDE</constant>&nbsp;</entry>
2455 <entry>L is on the left, R on the right.</entry>
2456 </row>
2457 <row>
2458 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TOP_BOTTOM</constant>&nbsp;</entry>
2459 <entry>L is on top, R on bottom.</entry>
2460 </row>
2461 <row>
2462 <entry><constant>V4L2_MPEG_VIDEO_H264_SEI_FP_ARRANGEMENT_TYPE_TEMPORAL</constant>&nbsp;</entry>
2463 <entry>One view per frame.</entry>
2464 </row>
2465 </tbody>
2466 </entrytbl>
2467 </row>
2468
2469 <row><entry></entry></row>
2470 <row>
2471 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO</constant>&nbsp;</entry>
2472 <entry>boolean</entry>
2473 </row>
2474 <row><entry spanname="descr">Enables flexible macroblock ordering in the encoded bitstream. It is a technique
2475used for restructuring the ordering of macroblocks in pictures. Applicable to the H264 encoder.</entry>
2476 </row>
2477
2478 <row><entry></entry></row>
2479 <row id="v4l2-mpeg-video-h264-fmo-map-type">
2480 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_MAP_TYPE</constant>&nbsp;</entry>
2481 <entry>enum&nbsp;v4l2_mpeg_video_h264_fmo_map_type</entry>
2482 </row>
2483 <row><entry spanname="descr">When using FMO, the map type divides the image in different scan patterns of macroblocks.
2484Applicable to the H264 encoder.
2485Possible values are:</entry>
2486 </row>
2487 <row>
2488 <entrytbl spanname="descr" cols="2">
2489 <tbody valign="top">
2490 <row>
2491 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_INTERLEAVED_SLICES</constant>&nbsp;</entry>
2492 <entry>Slices are interleaved one after other with macroblocks in run length order.</entry>
2493 </row>
2494 <row>
2495 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_SCATTERED_SLICES</constant>&nbsp;</entry>
2496 <entry>Scatters the macroblocks based on a mathematical function known to both encoder and decoder.</entry>
2497 </row>
2498 <row>
2499 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_FOREGROUND_WITH_LEFT_OVER</constant>&nbsp;</entry>
2500 <entry>Macroblocks arranged in rectangular areas or regions of interest.</entry>
2501 </row>
2502 <row>
2503 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_BOX_OUT</constant>&nbsp;</entry>
2504 <entry>Slice groups grow in a cyclic way from centre to outwards.</entry>
2505 </row>
2506 <row>
2507 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_RASTER_SCAN</constant>&nbsp;</entry>
2508 <entry>Slice groups grow in raster scan pattern from left to right.</entry>
2509 </row>
2510 <row>
2511 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_WIPE_SCAN</constant>&nbsp;</entry>
2512 <entry>Slice groups grow in wipe scan pattern from top to bottom.</entry>
2513 </row>
2514 <row>
2515 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_MAP_TYPE_EXPLICIT</constant>&nbsp;</entry>
2516 <entry>User defined map type.</entry>
2517 </row>
2518 </tbody>
2519 </entrytbl>
2520 </row>
2521
2522 <row><entry></entry></row>
2523 <row>
2524 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_SLICE_GROUP</constant>&nbsp;</entry>
2525 <entry>integer</entry>
2526 </row>
2527 <row><entry spanname="descr">Number of slice groups in FMO.
2528Applicable to the H264 encoder.</entry>
2529 </row>
2530
2531 <row><entry></entry></row>
2532 <row id="v4l2-mpeg-video-h264-fmo-change-direction">
2533 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_DIRECTION</constant>&nbsp;</entry>
2534 <entry>enum&nbsp;v4l2_mpeg_video_h264_fmo_change_dir</entry>
2535 </row>
2536 <row><entry spanname="descr">Specifies a direction of the slice group change for raster and wipe maps.
2537Applicable to the H264 encoder.
2538Possible values are:</entry>
2539 </row>
2540 <row>
2541 <entrytbl spanname="descr" cols="2">
2542 <tbody valign="top">
2543 <row>
2544 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_RIGHT</constant>&nbsp;</entry>
2545 <entry>Raster scan or wipe right.</entry>
2546 </row>
2547 <row>
2548 <entry><constant>V4L2_MPEG_VIDEO_H264_FMO_CHANGE_DIR_LEFT</constant>&nbsp;</entry>
2549 <entry>Reverse raster scan or wipe left.</entry>
2550 </row>
2551 </tbody>
2552 </entrytbl>
2553 </row>
2554
2555 <row><entry></entry></row>
2556 <row>
2557 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_CHANGE_RATE</constant>&nbsp;</entry>
2558 <entry>integer</entry>
2559 </row>
2560 <row><entry spanname="descr">Specifies the size of the first slice group for raster and wipe map.
2561Applicable to the H264 encoder.</entry>
2562 </row>
2563
2564 <row><entry></entry></row>
2565 <row>
2566 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_FMO_RUN_LENGTH</constant>&nbsp;</entry>
2567 <entry>integer</entry>
2568 </row>
2569 <row><entry spanname="descr">Specifies the number of consecutive macroblocks for the interleaved map.
2570Applicable to the H264 encoder.</entry>
2571 </row>
2572
2573 <row><entry></entry></row>
2574 <row>
2575 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ASO</constant>&nbsp;</entry>
2576 <entry>boolean</entry>
2577 </row>
2578 <row><entry spanname="descr">Enables arbitrary slice ordering in encoded bitstream.
2579Applicable to the H264 encoder.</entry>
2580 </row>
2581
2582 <row><entry></entry></row>
2583 <row>
2584 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_ASO_SLICE_ORDER</constant>&nbsp;</entry>
2585 <entry>integer</entry>
2586 </row><row><entry spanname="descr">Specifies the slice order in ASO. Applicable to the H264 encoder.
2587The supplied 32-bit integer is interpreted as follows (bit
25880 = least significant bit):</entry>
2589 </row>
2590 <row>
2591 <entrytbl spanname="descr" cols="2">
2592 <tbody valign="top">
2593 <row>
2594 <entry>Bit 0:15</entry>
2595 <entry>Slice ID</entry>
2596 </row>
2597 <row>
2598 <entry>Bit 16:32</entry>
2599 <entry>Slice position or order</entry>
2600 </row>
2601 </tbody>
2602 </entrytbl>
2603 </row>
2604
2605 <row><entry></entry></row>
2606 <row>
2607 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING</constant>&nbsp;</entry>
2608 <entry>boolean</entry>
2609 </row>
2610 <row><entry spanname="descr">Enables H264 hierarchical coding.
2611Applicable to the H264 encoder.</entry>
2612 </row>
2613
2614 <row><entry></entry></row>
2615 <row id="v4l2-mpeg-video-h264-hierarchical-coding-type">
2616 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_TYPE</constant>&nbsp;</entry>
2617 <entry>enum&nbsp;v4l2_mpeg_video_h264_hierarchical_coding_type</entry>
2618 </row>
2619 <row><entry spanname="descr">Specifies the hierarchical coding type.
2620Applicable to the H264 encoder.
2621Possible values are:</entry>
2622 </row>
2623 <row>
2624 <entrytbl spanname="descr" cols="2">
2625 <tbody valign="top">
2626 <row>
2627 <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_B</constant>&nbsp;</entry>
2628 <entry>Hierarchical B coding.</entry>
2629 </row>
2630 <row>
2631 <entry><constant>V4L2_MPEG_VIDEO_H264_HIERARCHICAL_CODING_P</constant>&nbsp;</entry>
2632 <entry>Hierarchical P coding.</entry>
2633 </row>
2634 </tbody>
2635 </entrytbl>
2636 </row>
2637
2638 <row><entry></entry></row>
2639 <row>
2640 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER</constant>&nbsp;</entry>
2641 <entry>integer</entry>
2642 </row>
2643 <row><entry spanname="descr">Specifies the number of hierarchical coding layers.
2644Applicable to the H264 encoder.</entry>
2645 </row>
2646
2647 <row><entry></entry></row>
2648 <row>
2649 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_H264_HIERARCHICAL_CODING_LAYER_QP</constant>&nbsp;</entry>
2650 <entry>integer</entry>
2651 </row><row><entry spanname="descr">Specifies a user defined QP for each layer. Applicable to the H264 encoder.
2652The supplied 32-bit integer is interpreted as follows (bit
26530 = least significant bit):</entry>
2654 </row>
2655 <row>
2656 <entrytbl spanname="descr" cols="2">
2657 <tbody valign="top">
2658 <row>
2659 <entry>Bit 0:15</entry>
2660 <entry>QP value</entry>
2661 </row>
2662 <row>
2663 <entry>Bit 16:32</entry>
2664 <entry>Layer number</entry>
2665 </row>
2666 </tbody>
2667 </entrytbl>
2668 </row>
2669
2670 </tbody>
2671 </tgroup>
2672 </table>
2673 </section>
2674
2675 <section>
2676 <title>MFC 5.1 MPEG Controls</title>
2677
2678 <para>The following MPEG class controls deal with MPEG
2679decoding and encoding settings that are specific to the Multi Format Codec 5.1 device present
2680in the S5P family of SoCs by Samsung.
2681</para>
2682
2683 <table pgwide="1" frame="none" id="mfc51-control-id">
2684 <title>MFC 5.1 Control IDs</title>
2685 <tgroup cols="4">
2686 <colspec colname="c1" colwidth="1*" />
2687 <colspec colname="c2" colwidth="6*" />
2688 <colspec colname="c3" colwidth="2*" />
2689 <colspec colname="c4" colwidth="6*" />
2690 <spanspec namest="c1" nameend="c2" spanname="id" />
2691 <spanspec namest="c2" nameend="c4" spanname="descr" />
2692 <thead>
2693 <row>
2694 <entry spanname="id" align="left">ID</entry>
2695 <entry align="left">Type</entry>
2696 </row><row><entry spanname="descr" align="left">Description</entry>
2697 </row>
2698 </thead>
2699 <tbody valign="top">
2700 <row><entry></entry></row>
2701 <row>
2702 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY_ENABLE</constant>&nbsp;</entry>
2703 <entry>boolean</entry>
2704 </row><row><entry spanname="descr">If the display delay is enabled then the decoder is forced to return a
2705CAPTURE buffer (decoded frame) after processing a certain number of OUTPUT buffers. The delay can be set through
2706<constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>. This feature can be used for example
2707for generating thumbnails of videos. Applicable to the H264 decoder.
2708 </entry>
2709 </row>
2710 <row><entry></entry></row>
2711 <row>
2712 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_DECODER_H264_DISPLAY_DELAY</constant>&nbsp;</entry>
2713 <entry>integer</entry>
2714 </row><row><entry spanname="descr">Display delay value for H264 decoder.
2715The decoder is forced to return a decoded frame after the set 'display delay' number of frames. If this number is
2716low it may result in frames returned out of dispaly order, in addition the hardware may still be using the returned buffer
2717as a reference picture for subsequent frames.
2718</entry>
2719 </row>
2720 <row><entry></entry></row>
2721 <row>
2722 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_NUM_REF_PIC_FOR_P</constant>&nbsp;</entry>
2723 <entry>integer</entry>
2724 </row><row><entry spanname="descr">The number of reference pictures used for encoding a P picture.
2725Applicable to the H264 encoder.</entry>
2726 </row>
2727 <row><entry></entry></row>
2728 <row>
2729 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING</constant>&nbsp;</entry>
2730 <entry>boolean</entry>
2731 </row><row><entry spanname="descr">Padding enable in the encoder - use a color instead of repeating border pixels.
2732Applicable to encoders.</entry>
2733 </row>
2734 <row><entry></entry></row>
2735 <row>
2736 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_PADDING_YUV</constant>&nbsp;</entry>
2737 <entry>integer</entry>
2738 </row><row><entry spanname="descr">Padding color in the encoder. Applicable to encoders. The supplied 32-bit integer is interpreted as follows (bit
27390 = least significant bit):</entry>
2740 </row>
2741 <row>
2742 <entrytbl spanname="descr" cols="2">
2743 <tbody valign="top">
2744 <row>
2745 <entry>Bit 0:7</entry>
2746 <entry>V chrominance information</entry>
2747 </row>
2748 <row>
2749 <entry>Bit 8:15</entry>
2750 <entry>U chrominance information</entry>
2751 </row>
2752 <row>
2753 <entry>Bit 16:23</entry>
2754 <entry>Y luminance information</entry>
2755 </row>
2756 <row>
2757 <entry>Bit 24:31</entry>
2758 <entry>Must be zero.</entry>
2759 </row>
2760 </tbody>
2761 </entrytbl>
2762 </row>
2763 <row><entry></entry></row>
2764 <row>
2765 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_REACTION_COEFF</constant>&nbsp;</entry>
2766 <entry>integer</entry>
2767 </row><row><entry spanname="descr">Reaction coefficient for MFC rate control. Applicable to encoders.
2768<para>Note 1: Valid only when the frame level RC is enabled.</para>
2769<para>Note 2: For tight CBR, this field must be small (ex. 2 ~ 10).
2770For VBR, this field must be large (ex. 100 ~ 1000).</para>
2771<para>Note 3: It is not recommended to use the greater number than FRAME_RATE * (10^9 / BIT_RATE).</para>
2772</entry>
2773 </row>
2774 <row><entry></entry></row>
2775 <row>
2776 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_DARK</constant>&nbsp;</entry>
2777 <entry>boolean</entry>
2778 </row><row><entry spanname="descr">Adaptive rate control for dark region.
2779Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2780Applicable to the H264 encoder.</entry>
2781 </row>
2782 <row><entry></entry></row>
2783 <row>
2784 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_SMOOTH</constant>&nbsp;</entry>
2785 <entry>boolean</entry>
2786 </row><row><entry spanname="descr">Adaptive rate control for smooth region.
2787Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2788Applicable to the H264 encoder.</entry>
2789 </row>
2790 <row><entry></entry></row>
2791 <row>
2792 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_STATIC</constant>&nbsp;</entry>
2793 <entry>boolean</entry>
2794 </row><row><entry spanname="descr">Adaptive rate control for static region.
2795Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2796Applicable to the H264 encoder.</entry>
2797 </row>
2798 <row><entry></entry></row>
2799 <row>
2800 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_H264_ADAPTIVE_RC_ACTIVITY</constant>&nbsp;</entry>
2801 <entry>boolean</entry>
2802 </row><row><entry spanname="descr">Adaptive rate control for activity region.
2803Valid only when H.264 and macroblock level RC is enabled (<constant>V4L2_CID_MPEG_VIDEO_MB_RC_ENABLE</constant>).
2804Applicable to the H264 encoder.</entry>
2805 </row>
2806 <row><entry></entry></row>
2807 <row id="v4l2-mpeg-mfc51-video-frame-skip-mode">
2808 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FRAME_SKIP_MODE</constant>&nbsp;</entry>
2809 <entry>enum&nbsp;v4l2_mpeg_mfc51_video_frame_skip_mode</entry>
2810 </row>
2811 <row><entry spanname="descr">
2812Indicates in what conditions the encoder should skip frames. If encoding a frame would cause the encoded stream to be larger then
2813a chosen data limit then the frame will be skipped.
2814Possible values are:</entry>
2815 </row>
2816 <row>
2817 <entrytbl spanname="descr" cols="2">
2818 <tbody valign="top">
2819 <row>
2820 <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_DISABLED</constant>&nbsp;</entry>
2821 <entry>Frame skip mode is disabled.</entry>
2822 </row>
2823 <row>
2824 <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_LEVEL_LIMIT</constant>&nbsp;</entry>
2825 <entry>Frame skip mode enabled and buffer limit is set by the chosen level and is defined by the standard.</entry>
2826 </row>
2827 <row>
2828 <entry><constant>V4L2_MPEG_MFC51_FRAME_SKIP_MODE_BUF_LIMIT</constant>&nbsp;</entry>
2829 <entry>Frame skip mode enabled and buffer limit is set by the VBV (MPEG1/2/4) or CPB (H264) buffer size control.</entry>
2830 </row>
2831 </tbody>
2832 </entrytbl>
2833 </row>
2834 <row><entry></entry></row>
2835 <row>
2836 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_RC_FIXED_TARGET_BIT</constant>&nbsp;</entry>
2837 <entry>integer</entry>
2838 </row><row><entry spanname="descr">Enable rate-control with fixed target bit.
2839If this setting is enabled, then the rate control logic of the encoder will calculate the average bitrate
2840for a GOP and keep it below or equal the set bitrate target. Otherwise the rate control logic calculates the
2841overall average bitrate for the stream and keeps it below or equal to the set bitrate. In the first case
2842the average bitrate for the whole stream will be smaller then the set bitrate. This is caused because the
2843average is calculated for smaller number of frames, on the other hand enabling this setting will ensure that
2844the stream will meet tight bandwidth constraints. Applicable to encoders.
2845</entry>
2846 </row>
2847 <row><entry></entry></row>
2848 <row id="v4l2-mpeg-mfc51-video-force-frame-type">
2849 <entry spanname="id"><constant>V4L2_CID_MPEG_MFC51_VIDEO_FORCE_FRAME_TYPE</constant>&nbsp;</entry>
2850 <entry>enum&nbsp;v4l2_mpeg_mfc51_video_force_frame_type</entry>
2851 </row>
2852 <row><entry spanname="descr">Force a frame type for the next queued buffer. Applicable to encoders.
2853Possible values are:</entry>
2854 </row>
2855 <row>
2856 <entrytbl spanname="descr" cols="2">
2857 <tbody valign="top">
2858 <row>
2859 <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_DISABLED</constant>&nbsp;</entry>
2860 <entry>Forcing a specific frame type disabled.</entry>
2861 </row>
2862 <row>
2863 <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_I_FRAME</constant>&nbsp;</entry>
2864 <entry>Force an I-frame.</entry>
2865 </row>
2866 <row>
2867 <entry><constant>V4L2_MPEG_MFC51_FORCE_FRAME_TYPE_NOT_CODED</constant>&nbsp;</entry>
2868 <entry>Force a non-coded frame.</entry>
2869 </row>
2870 </tbody>
2871 </entrytbl>
2872 </row>
2873 </tbody>
2874 </tgroup>
2875 </table>
2876 </section>
2877
2878 <section>
2879 <title>CX2341x MPEG Controls</title>
2880
2881 <para>The following MPEG class controls deal with MPEG
2882encoding settings that are specific to the Conexant CX23415 and
2883CX23416 MPEG encoding chips.</para>
2884
2885 <table pgwide="1" frame="none" id="cx2341x-control-id">
2886 <title>CX2341x Control IDs</title>
2887 <tgroup cols="4">
2888 <colspec colname="c1" colwidth="1*" />
2889 <colspec colname="c2" colwidth="6*" />
2890 <colspec colname="c3" colwidth="2*" />
2891 <colspec colname="c4" colwidth="6*" />
2892 <spanspec namest="c1" nameend="c2" spanname="id" />
2893 <spanspec namest="c2" nameend="c4" spanname="descr" />
2894 <thead>
2895 <row>
2896 <entry spanname="id" align="left">ID</entry>
2897 <entry align="left">Type</entry>
2898 </row><row><entry spanname="descr" align="left">Description</entry>
2899 </row>
2900 </thead>
2901 <tbody valign="top">
2902 <row><entry></entry></row>
2903 <row id="v4l2-mpeg-cx2341x-video-spatial-filter-mode">
2904 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE</constant>&nbsp;</entry>
2905 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_spatial_filter_mode</entry>
2906 </row><row><entry spanname="descr">Sets the Spatial
2907Filter mode (default <constant>MANUAL</constant>). Possible values
2908are:</entry>
2909 </row>
2910 <row>
2911 <entrytbl spanname="descr" cols="2">
2912 <tbody valign="top">
2913 <row>
2914 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_MANUAL</constant>&nbsp;</entry>
2915 <entry>Choose the filter manually</entry>
2916 </row>
2917 <row>
2918 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_SPATIAL_FILTER_MODE_AUTO</constant>&nbsp;</entry>
2919 <entry>Choose the filter automatically</entry>
2920 </row>
2921 </tbody>
2922 </entrytbl>
2923 </row>
2924 <row><entry></entry></row>
2925 <row>
2926 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_SPATIAL_FILTER</constant>&nbsp;</entry>
2927 <entry>integer&nbsp;(0-15)</entry>
2928 </row><row><entry spanname="descr">The setting for the
2929Spatial Filter. 0 = off, 15 = maximum. (Default is 0.)</entry>
2930 </row>
2931 <row><entry></entry></row>
2932 <row id="luma-spatial-filter-type">
2933 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE</constant>&nbsp;</entry>
2934 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_luma_spatial_filter_type</entry>
2935 </row><row><entry spanname="descr">Select the algorithm
2936to use for the Luma Spatial Filter (default
2937<constant>1D_HOR</constant>). Possible values:</entry>
2938 </row>
2939 <row>
2940 <entrytbl spanname="descr" cols="2">
2941 <tbody valign="top">
2942 <row>
2943 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_OFF</constant>&nbsp;</entry>
2944 <entry>No filter</entry>
2945 </row>
2946 <row>
2947 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_HOR</constant>&nbsp;</entry>
2948 <entry>One-dimensional horizontal</entry>
2949 </row>
2950 <row>
2951 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_1D_VERT</constant>&nbsp;</entry>
2952 <entry>One-dimensional vertical</entry>
2953 </row>
2954 <row>
2955 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_HV_SEPARABLE</constant>&nbsp;</entry>
2956 <entry>Two-dimensional separable</entry>
2957 </row>
2958 <row>
2959 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_LUMA_SPATIAL_FILTER_TYPE_2D_SYM_NON_SEPARABLE</constant>&nbsp;</entry>
2960 <entry>Two-dimensional symmetrical
2961non-separable</entry>
2962 </row>
2963 </tbody>
2964 </entrytbl>
2965 </row>
2966 <row><entry></entry></row>
2967 <row id="chroma-spatial-filter-type">
2968 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE</constant>&nbsp;</entry>
2969 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_chroma_spatial_filter_type</entry>
2970 </row><row><entry spanname="descr">Select the algorithm
2971for the Chroma Spatial Filter (default <constant>1D_HOR</constant>).
2972Possible values are:</entry>
2973 </row>
2974 <row>
2975 <entrytbl spanname="descr" cols="2">
2976 <tbody valign="top">
2977 <row>
2978 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_OFF</constant>&nbsp;</entry>
2979 <entry>No filter</entry>
2980 </row>
2981 <row>
2982 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_CHROMA_SPATIAL_FILTER_TYPE_1D_HOR</constant>&nbsp;</entry>
2983 <entry>One-dimensional horizontal</entry>
2984 </row>
2985 </tbody>
2986 </entrytbl>
2987 </row>
2988 <row><entry></entry></row>
2989 <row id="v4l2-mpeg-cx2341x-video-temporal-filter-mode">
2990 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE</constant>&nbsp;</entry>
2991 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_temporal_filter_mode</entry>
2992 </row><row><entry spanname="descr">Sets the Temporal
2993Filter mode (default <constant>MANUAL</constant>). Possible values
2994are:</entry>
2995 </row>
2996 <row>
2997 <entrytbl spanname="descr" cols="2">
2998 <tbody valign="top">
2999 <row>
3000 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_MANUAL</constant>&nbsp;</entry>
3001 <entry>Choose the filter manually</entry>
3002 </row>
3003 <row>
3004 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER_MODE_AUTO</constant>&nbsp;</entry>
3005 <entry>Choose the filter automatically</entry>
3006 </row>
3007 </tbody>
3008 </entrytbl>
3009 </row>
3010 <row><entry></entry></row>
3011 <row>
3012 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_TEMPORAL_FILTER</constant>&nbsp;</entry>
3013 <entry>integer&nbsp;(0-31)</entry>
3014 </row><row><entry spanname="descr">The setting for the
3015Temporal Filter. 0 = off, 31 = maximum. (Default is 8 for full-scale
3016capturing and 0 for scaled capturing.)</entry>
3017 </row>
3018 <row><entry></entry></row>
3019 <row id="v4l2-mpeg-cx2341x-video-median-filter-type">
3020 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE</constant>&nbsp;</entry>
3021 <entry>enum&nbsp;v4l2_mpeg_cx2341x_video_median_filter_type</entry>
3022 </row><row><entry spanname="descr">Median Filter Type
3023(default <constant>OFF</constant>). Possible values are:</entry>
3024 </row>
3025 <row>
3026 <entrytbl spanname="descr" cols="2">
3027 <tbody valign="top">
3028 <row>
3029 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_OFF</constant>&nbsp;</entry>
3030 <entry>No filter</entry>
3031 </row>
3032 <row>
3033 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR</constant>&nbsp;</entry>
3034 <entry>Horizontal filter</entry>
3035 </row>
3036 <row>
3037 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_VERT</constant>&nbsp;</entry>
3038 <entry>Vertical filter</entry>
3039 </row>
3040 <row>
3041 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_HOR_VERT</constant>&nbsp;</entry>
3042 <entry>Horizontal and vertical filter</entry>
3043 </row>
3044 <row>
3045 <entry><constant>V4L2_MPEG_CX2341X_VIDEO_MEDIAN_FILTER_TYPE_DIAG</constant>&nbsp;</entry>
3046 <entry>Diagonal filter</entry>
3047 </row>
3048 </tbody>
3049 </entrytbl>
3050 </row>
3051 <row><entry></entry></row>
3052 <row>
3053 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_BOTTOM</constant>&nbsp;</entry>
3054 <entry>integer&nbsp;(0-255)</entry>
3055 </row><row><entry spanname="descr">Threshold above which
3056the luminance median filter is enabled (default 0)</entry>
3057 </row>
3058 <row><entry></entry></row>
3059 <row>
3060 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_LUMA_MEDIAN_FILTER_TOP</constant>&nbsp;</entry>
3061 <entry>integer&nbsp;(0-255)</entry>
3062 </row><row><entry spanname="descr">Threshold below which
3063the luminance median filter is enabled (default 255)</entry>
3064 </row>
3065 <row><entry></entry></row>
3066 <row>
3067 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_BOTTOM</constant>&nbsp;</entry>
3068 <entry>integer&nbsp;(0-255)</entry>
3069 </row><row><entry spanname="descr">Threshold above which
3070the chroma median filter is enabled (default 0)</entry>
3071 </row>
3072 <row><entry></entry></row>
3073 <row>
3074 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_VIDEO_CHROMA_MEDIAN_FILTER_TOP</constant>&nbsp;</entry>
3075 <entry>integer&nbsp;(0-255)</entry>
3076 </row><row><entry spanname="descr">Threshold below which
3077the chroma median filter is enabled (default 255)</entry>
3078 </row>
3079 <row><entry></entry></row>
3080 <row>
3081 <entry spanname="id"><constant>V4L2_CID_MPEG_CX2341X_STREAM_INSERT_NAV_PACKETS</constant>&nbsp;</entry>
3082 <entry>boolean</entry>
3083 </row>
3084 <row><entry spanname="descr">The CX2341X MPEG encoder
3085can insert one empty MPEG-2 PES packet into the stream between every
3086four video frames. The packet size is 2048 bytes, including the
3087packet_start_code_prefix and stream_id fields. The stream_id is 0xBF
3088(private stream 2). The payload consists of 0x00 bytes, to be filled
3089in by the application. 0 = do not insert, 1 = insert packets.</entry>
3090 </row>
3091 </tbody>
3092 </tgroup>
3093 </table>
3094 </section>
3095
3096 <section>
3097 <title>VPX Control Reference</title>
3098
3099 <para>The VPX controls include controls for encoding parameters
3100 of VPx video codec.</para>
3101
3102 <table pgwide="1" frame="none" id="vpx-control-id">
3103 <title>VPX Control IDs</title>
3104
3105 <tgroup cols="4">
3106 <colspec colname="c1" colwidth="1*" />
3107 <colspec colname="c2" colwidth="6*" />
3108 <colspec colname="c3" colwidth="2*" />
3109 <colspec colname="c4" colwidth="6*" />
3110 <spanspec namest="c1" nameend="c2" spanname="id" />
3111 <spanspec namest="c2" nameend="c4" spanname="descr" />
3112 <thead>
3113 <row>
3114 <entry spanname="id" align="left">ID</entry>
3115 <entry align="left">Type</entry>
3116 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
3117 </row>
3118 </thead>
3119 <tbody valign="top">
3120 <row><entry></entry></row>
3121
3122 <row><entry></entry></row>
3123 <row id="v4l2-vpx-num-partitions">
3124 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_PARTITIONS</constant></entry>
3125 <entry>enum v4l2_vp8_num_partitions</entry>
3126 </row>
3127 <row><entry spanname="descr">The number of token partitions to use in VP8 encoder.
3128Possible values are:</entry>
3129 </row>
3130 <row>
3131 <entrytbl spanname="descr" cols="2">
3132 <tbody valign="top">
3133 <row>
3134 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_PARTITION</constant></entry>
3135 <entry>1 coefficient partition</entry>
3136 </row>
3137 <row>
3138 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_PARTITIONS</constant></entry>
3139 <entry>2 coefficient partitions</entry>
3140 </row>
3141 <row>
3142 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_4_PARTITIONS</constant></entry>
3143 <entry>4 coefficient partitions</entry>
3144 </row>
3145 <row>
3146 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_8_PARTITIONS</constant></entry>
3147 <entry>8 coefficient partitions</entry>
3148 </row>
3149 </tbody>
3150 </entrytbl>
3151 </row>
3152
3153 <row><entry></entry></row>
3154 <row>
3155 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_IMD_DISABLE_4X4</constant></entry>
3156 <entry>boolean</entry>
3157 </row>
3158 <row><entry spanname="descr">Setting this prevents intra 4x4 mode in the intra mode decision.</entry>
3159 </row>
3160
3161 <row><entry></entry></row>
3162 <row id="v4l2-vpx-num-ref-frames">
3163 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_NUM_REF_FRAMES</constant></entry>
3164 <entry>enum v4l2_vp8_num_ref_frames</entry>
3165 </row>
3166 <row><entry spanname="descr">The number of reference pictures for encoding P frames.
3167Possible values are:</entry>
3168 </row>
3169 <row>
3170 <entrytbl spanname="descr" cols="2">
3171 <tbody valign="top">
3172 <row>
3173 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_1_REF_FRAME</constant></entry>
3174 <entry>Last encoded frame will be searched</entry>
3175 </row>
3176 <row>
3177 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_2_REF_FRAME</constant></entry>
3178 <entry>Two frames will be searched among the last encoded frame, the golden frame
3179and the alternate reference (altref) frame. The encoder implementation will decide which two are chosen.</entry>
3180 </row>
3181 <row>
3182 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_3_REF_FRAME</constant></entry>
3183 <entry>The last encoded frame, the golden frame and the altref frame will be searched.</entry>
3184 </row>
3185 </tbody>
3186 </entrytbl>
3187 </row>
3188
3189 <row><entry></entry></row>
3190 <row>
3191 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_LEVEL</constant></entry>
3192 <entry>integer</entry>
3193 </row>
3194 <row><entry spanname="descr">Indicates the loop filter level. The adjustment of the loop
3195filter level is done via a delta value against a baseline loop filter value.</entry>
3196 </row>
3197
3198 <row><entry></entry></row>
3199 <row>
3200 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_FILTER_SHARPNESS</constant></entry>
3201 <entry>integer</entry>
3202 </row>
3203 <row><entry spanname="descr">This parameter affects the loop filter. Anything above
3204zero weakens the deblocking effect on the loop filter.</entry>
3205 </row>
3206
3207 <row><entry></entry></row>
3208 <row>
3209 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD</constant></entry>
3210 <entry>integer</entry>
3211 </row>
3212 <row><entry spanname="descr">Sets the refresh period for the golden frame. The period is defined
3213in number of frames. For a value of 'n', every nth frame starting from the first key frame will be taken as a golden frame.
3214For eg. for encoding sequence of 0, 1, 2, 3, 4, 5, 6, 7 where the golden frame refresh period is set as 4, the frames
32150, 4, 8 etc will be taken as the golden frames as frame 0 is always a key frame.</entry>
3216 </row>
3217
3218 <row><entry></entry></row>
3219 <row id="v4l2-vpx-golden-frame-sel">
3220 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_SEL</constant></entry>
3221 <entry>enum v4l2_vp8_golden_frame_sel</entry>
3222 </row>
3223 <row><entry spanname="descr">Selects the golden frame for encoding.
3224Possible values are:</entry>
3225 </row>
3226 <row>
3227 <entrytbl spanname="descr" cols="2">
3228 <tbody valign="top">
3229 <row>
3230 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_PREV</constant></entry>
3231 <entry>Use the (n-2)th frame as a golden frame, current frame index being 'n'.</entry>
3232 </row>
3233 <row>
3234 <entry><constant>V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_USE_REF_PERIOD</constant></entry>
3235 <entry>Use the previous specific frame indicated by
3236V4L2_CID_MPEG_VIDEO_VPX_GOLDEN_FRAME_REF_PERIOD as a golden frame.</entry>
3237 </row>
3238 </tbody>
3239 </entrytbl>
3240 </row>
3241
3242 <row><entry></entry></row>
3243 <row>
3244 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_MIN_QP</constant></entry>
3245 <entry>integer</entry>
3246 </row>
3247 <row><entry spanname="descr">Minimum quantization parameter for VP8.</entry>
3248 </row>
3249
3250 <row><entry></entry></row>
3251 <row>
3252 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_MAX_QP</constant></entry>
3253 <entry>integer</entry>
3254 </row>
3255 <row><entry spanname="descr">Maximum quantization parameter for VP8.</entry>
3256 </row>
3257
3258 <row><entry></entry></row>
3259 <row>
3260 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_I_FRAME_QP</constant>&nbsp;</entry>
3261 <entry>integer</entry>
3262 </row>
3263 <row><entry spanname="descr">Quantization parameter for an I frame for VP8.</entry>
3264 </row>
3265
3266 <row><entry></entry></row>
3267 <row>
3268 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_P_FRAME_QP</constant>&nbsp;</entry>
3269 <entry>integer</entry>
3270 </row>
3271 <row><entry spanname="descr">Quantization parameter for a P frame for VP8.</entry>
3272 </row>
3273
3274 <row><entry></entry></row>
3275 <row>
3276 <entry spanname="id"><constant>V4L2_CID_MPEG_VIDEO_VPX_PROFILE</constant>&nbsp;</entry>
3277 <entry>integer</entry>
3278 </row>
3279 <row><entry spanname="descr">Select the desired profile for VPx encoder.
3280Acceptable values are 0, 1, 2 and 3 corresponding to encoder profiles 0, 1, 2 and 3.</entry>
3281 </row>
3282
3283 <row><entry></entry></row>
3284 </tbody>
3285 </tgroup>
3286 </table>
3287
3288 </section>
3289 </section>
3290
3291 <section id="camera-controls">
3292 <title>Camera Control Reference</title>
3293
3294 <para>The Camera class includes controls for mechanical (or
3295equivalent digital) features of a device such as controllable lenses
3296or sensors.</para>
3297
3298 <table pgwide="1" frame="none" id="camera-control-id">
3299 <title>Camera Control IDs</title>
3300 <tgroup cols="4">
3301 <colspec colname="c1" colwidth="1*" />
3302 <colspec colname="c2" colwidth="6*" />
3303 <colspec colname="c3" colwidth="2*" />
3304 <colspec colname="c4" colwidth="6*" />
3305 <spanspec namest="c1" nameend="c2" spanname="id" />
3306 <spanspec namest="c2" nameend="c4" spanname="descr" />
3307 <thead>
3308 <row>
3309 <entry spanname="id" align="left">ID</entry>
3310 <entry align="left">Type</entry>
3311 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
3312 </row>
3313 </thead>
3314 <tbody valign="top">
3315 <row><entry></entry></row>
3316 <row>
3317 <entry spanname="id"><constant>V4L2_CID_CAMERA_CLASS</constant>&nbsp;</entry>
3318 <entry>class</entry>
3319 </row><row><entry spanname="descr">The Camera class
3320descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
3321description of this control class.</entry>
3322 </row>
3323 <row><entry></entry></row>
3324
3325 <row id="v4l2-exposure-auto-type">
3326 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO</constant>&nbsp;</entry>
3327 <entry>enum&nbsp;v4l2_exposure_auto_type</entry>
3328 </row><row><entry spanname="descr">Enables automatic
3329adjustments of the exposure time and/or iris aperture. The effect of
3330manual changes of the exposure time or iris aperture while these
3331features are enabled is undefined, drivers should ignore such
3332requests. Possible values are:</entry>
3333 </row>
3334 <row>
3335 <entrytbl spanname="descr" cols="2">
3336 <tbody valign="top">
3337 <row>
3338 <entry><constant>V4L2_EXPOSURE_AUTO</constant>&nbsp;</entry>
3339 <entry>Automatic exposure time, automatic iris
3340aperture.</entry>
3341 </row>
3342 <row>
3343 <entry><constant>V4L2_EXPOSURE_MANUAL</constant>&nbsp;</entry>
3344 <entry>Manual exposure time, manual iris.</entry>
3345 </row>
3346 <row>
3347 <entry><constant>V4L2_EXPOSURE_SHUTTER_PRIORITY</constant>&nbsp;</entry>
3348 <entry>Manual exposure time, auto iris.</entry>
3349 </row>
3350 <row>
3351 <entry><constant>V4L2_EXPOSURE_APERTURE_PRIORITY</constant>&nbsp;</entry>
3352 <entry>Auto exposure time, manual iris.</entry>
3353 </row>
3354 </tbody>
3355 </entrytbl>
3356 </row>
3357 <row><entry></entry></row>
3358
3359 <row>
3360 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_ABSOLUTE</constant>&nbsp;</entry>
3361 <entry>integer</entry>
3362 </row><row><entry spanname="descr">Determines the exposure
3363time of the camera sensor. The exposure time is limited by the frame
3364interval. Drivers should interpret the values as 100 &micro;s units,
3365where the value 1 stands for 1/10000th of a second, 10000 for 1 second
3366and 100000 for 10 seconds.</entry>
3367 </row>
3368 <row><entry></entry></row>
3369
3370 <row>
3371 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_AUTO_PRIORITY</constant>&nbsp;</entry>
3372 <entry>boolean</entry>
3373 </row><row><entry spanname="descr">When
3374<constant>V4L2_CID_EXPOSURE_AUTO</constant> is set to
3375<constant>AUTO</constant> or <constant>APERTURE_PRIORITY</constant>,
3376this control determines if the device may dynamically vary the frame
3377rate. By default this feature is disabled (0) and the frame rate must
3378remain constant.</entry>
3379 </row>
3380 <row><entry></entry></row>
3381
3382 <row>
3383 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_BIAS</constant>&nbsp;</entry>
3384 <entry>integer menu</entry>
3385 </row><row><entry spanname="descr"> Determines the automatic
3386exposure compensation, it is effective only when <constant>V4L2_CID_EXPOSURE_AUTO</constant>
3387control is set to <constant>AUTO</constant>, <constant>SHUTTER_PRIORITY </constant>
3388or <constant>APERTURE_PRIORITY</constant>.
3389It is expressed in terms of EV, drivers should interpret the values as 0.001 EV
3390units, where the value 1000 stands for +1 EV.
3391<para>Increasing the exposure compensation value is equivalent to decreasing
3392the exposure value (EV) and will increase the amount of light at the image
3393sensor. The camera performs the exposure compensation by adjusting absolute
3394exposure time and/or aperture.</para></entry>
3395 </row>
3396 <row><entry></entry></row>
3397
3398 <row id="v4l2-exposure-metering">
3399 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant>&nbsp;</entry>
3400 <entry>enum&nbsp;v4l2_exposure_metering</entry>
3401 </row><row><entry spanname="descr">Determines how the camera measures
3402the amount of light available for the frame exposure. Possible values are:</entry>
3403 </row>
3404 <row>
3405 <entrytbl spanname="descr" cols="2">
3406 <tbody valign="top">
3407 <row>
3408 <entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant>&nbsp;</entry>
3409 <entry>Use the light information coming from the entire frame
3410and average giving no weighting to any particular portion of the metered area.
3411 </entry>
3412 </row>
3413 <row>
3414 <entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant>&nbsp;</entry>
3415 <entry>Average the light information coming from the entire frame
3416giving priority to the center of the metered area.</entry>
3417 </row>
3418 <row>
3419 <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry>
3420 <entry>Measure only very small area at the center of the frame.</entry>
3421 </row>
3422 <row>
3423 <entry><constant>V4L2_EXPOSURE_METERING_MATRIX</constant>&nbsp;</entry>
3424 <entry>A multi-zone metering. The light intensity is measured
3425in several points of the frame and the results are combined. The
3426algorithm of the zones selection and their significance in calculating the
3427final value is device dependent.</entry>
3428 </row>
3429 </tbody>
3430 </entrytbl>
3431 </row>
3432 <row><entry></entry></row>
3433
3434 <row>
3435 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry>
3436 <entry>integer</entry>
3437 </row><row><entry spanname="descr">This control turns the
3438camera horizontally by the specified amount. The unit is undefined. A
3439positive value moves the camera to the right (clockwise when viewed
3440from above), a negative value to the left. A value of zero does not
3441cause motion. This is a write-only control.</entry>
3442 </row>
3443 <row><entry></entry></row>
3444
3445 <row>
3446 <entry spanname="id"><constant>V4L2_CID_TILT_RELATIVE</constant>&nbsp;</entry>
3447 <entry>integer</entry>
3448 </row><row><entry spanname="descr">This control turns the
3449camera vertically by the specified amount. The unit is undefined. A
3450positive value moves the camera up, a negative value down. A value of
3451zero does not cause motion. This is a write-only control.</entry>
3452 </row>
3453 <row><entry></entry></row>
3454
3455 <row>
3456 <entry spanname="id"><constant>V4L2_CID_PAN_RESET</constant>&nbsp;</entry>
3457 <entry>button</entry>
3458 </row><row><entry spanname="descr">When this control is set,
3459the camera moves horizontally to the default position.</entry>
3460 </row>
3461 <row><entry></entry></row>
3462
3463 <row>
3464 <entry spanname="id"><constant>V4L2_CID_TILT_RESET</constant>&nbsp;</entry>
3465 <entry>button</entry>
3466 </row><row><entry spanname="descr">When this control is set,
3467the camera moves vertically to the default position.</entry>
3468 </row>
3469 <row><entry></entry></row>
3470
3471 <row>
3472 <entry spanname="id"><constant>V4L2_CID_PAN_ABSOLUTE</constant>&nbsp;</entry>
3473 <entry>integer</entry>
3474 </row><row><entry spanname="descr">This control
3475turns the camera horizontally to the specified position. Positive
3476values move the camera to the right (clockwise when viewed from above),
3477negative values to the left. Drivers should interpret the values as arc
3478seconds, with valid values between -180 * 3600 and +180 * 3600
3479inclusive.</entry>
3480 </row>
3481 <row><entry></entry></row>
3482
3483 <row>
3484 <entry spanname="id"><constant>V4L2_CID_TILT_ABSOLUTE</constant>&nbsp;</entry>
3485 <entry>integer</entry>
3486 </row><row><entry spanname="descr">This control
3487turns the camera vertically to the specified position. Positive values
3488move the camera up, negative values down. Drivers should interpret the
3489values as arc seconds, with valid values between -180 * 3600 and +180
3490* 3600 inclusive.</entry>
3491 </row>
3492 <row><entry></entry></row>
3493
3494 <row>
3495 <entry spanname="id"><constant>V4L2_CID_FOCUS_ABSOLUTE</constant>&nbsp;</entry>
3496 <entry>integer</entry>
3497 </row><row><entry spanname="descr">This control sets the
3498focal point of the camera to the specified position. The unit is
3499undefined. Positive values set the focus closer to the camera,
3500negative values towards infinity.</entry>
3501 </row>
3502 <row><entry></entry></row>
3503
3504 <row>
3505 <entry spanname="id"><constant>V4L2_CID_FOCUS_RELATIVE</constant>&nbsp;</entry>
3506 <entry>integer</entry>
3507 </row><row><entry spanname="descr">This control moves the
3508focal point of the camera by the specified amount. The unit is
3509undefined. Positive values move the focus closer to the camera,
3510negative values towards infinity. This is a write-only control.</entry>
3511 </row>
3512 <row><entry></entry></row>
3513
3514 <row>
3515 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry>
3516 <entry>boolean</entry>
3517 </row><row><entry spanname="descr">Enables continuous automatic
3518focus adjustments. The effect of manual focus adjustments while this feature
3519is enabled is undefined, drivers should ignore such requests.</entry>
3520 </row>
3521 <row><entry></entry></row>
3522
3523 <row>
3524 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_START</constant>&nbsp;</entry>
3525 <entry>button</entry>
3526 </row><row><entry spanname="descr">Starts single auto focus process.
3527The effect of setting this control when <constant>V4L2_CID_FOCUS_AUTO</constant>
3528is set to <constant>TRUE</constant> (1) is undefined, drivers should ignore
3529such requests.</entry>
3530 </row>
3531 <row><entry></entry></row>
3532
3533 <row>
3534 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_STOP</constant>&nbsp;</entry>
3535 <entry>button</entry>
3536 </row><row><entry spanname="descr">Aborts automatic focusing
3537started with <constant>V4L2_CID_AUTO_FOCUS_START</constant> control. It is
3538effective only when the continuous autofocus is disabled, that is when
3539<constant>V4L2_CID_FOCUS_AUTO</constant> control is set to <constant>FALSE
3540</constant> (0).</entry>
3541 </row>
3542 <row><entry></entry></row>
3543
3544 <row id="v4l2-auto-focus-status">
3545 <entry spanname="id">
3546 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>&nbsp;</entry>
3547 <entry>bitmask</entry>
3548 </row>
3549 <row><entry spanname="descr">The automatic focus status. This is a read-only
3550 control.</entry>
3551 </row>
3552 <row>
3553 <entrytbl spanname="descr" cols="2">
3554 <tbody valign="top">
3555 <row>
3556 <entry><constant>V4L2_AUTO_FOCUS_STATUS_IDLE</constant>&nbsp;</entry>
3557 <entry>Automatic focus is not active.</entry>
3558 </row>
3559 <row>
3560 <entry><constant>V4L2_AUTO_FOCUS_STATUS_BUSY</constant>&nbsp;</entry>
3561 <entry>Automatic focusing is in progress.</entry>
3562 </row>
3563 <row>
3564 <entry><constant>V4L2_AUTO_FOCUS_STATUS_REACHED</constant>&nbsp;</entry>
3565 <entry>Focus has been reached.</entry>
3566 </row>
3567 <row>
3568 <entry><constant>V4L2_AUTO_FOCUS_STATUS_FAILED</constant>&nbsp;</entry>
3569 <entry>Automatic focus has failed, the driver will not
3570 transition from this state until another action is
3571 performed by an application.</entry>
3572 </row>
3573 </tbody>
3574 </entrytbl>
3575 </row>
3576 <row><entry spanname="descr">
3577Setting <constant>V4L2_LOCK_FOCUS</constant> lock bit of the <constant>V4L2_CID_3A_LOCK
3578</constant> control may stop updates of the <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>
3579control value.</entry>
3580 </row>
3581 <row><entry></entry></row>
3582
3583 <row id="v4l2-auto-focus-range">
3584 <entry spanname="id">
3585 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>&nbsp;</entry>
3586 <entry>enum&nbsp;v4l2_auto_focus_range</entry>
3587 </row>
3588 <row><entry spanname="descr">Determines auto focus distance range
3589for which lens may be adjusted. </entry>
3590 </row>
3591 <row>
3592 <entrytbl spanname="descr" cols="2">
3593 <tbody valign="top">
3594 <row>
3595 <entry><constant>V4L2_AUTO_FOCUS_RANGE_AUTO</constant>&nbsp;</entry>
3596 <entry>The camera automatically selects the focus range.</entry>
3597 </row>
3598 <row>
3599 <entry><constant>V4L2_AUTO_FOCUS_RANGE_NORMAL</constant>&nbsp;</entry>
3600 <entry>Normal distance range, limited for best automatic focus
3601performance.</entry>
3602 </row>
3603 <row>
3604 <entry><constant>V4L2_AUTO_FOCUS_RANGE_MACRO</constant>&nbsp;</entry>
3605 <entry>Macro (close-up) auto focus. The camera will
3606use its minimum possible distance for auto focus.</entry>
3607 </row>
3608 <row>
3609 <entry><constant>V4L2_AUTO_FOCUS_RANGE_INFINITY</constant>&nbsp;</entry>
3610 <entry>The lens is set to focus on an object at infinite distance.</entry>
3611 </row>
3612 </tbody>
3613 </entrytbl>
3614 </row>
3615 <row><entry></entry></row>
3616
3617 <row>
3618 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry>
3619 <entry>integer</entry>
3620 </row><row><entry spanname="descr">Specify the objective lens
3621focal length as an absolute value. The zoom unit is driver-specific and its
3622value should be a positive integer.</entry>
3623 </row>
3624 <row><entry></entry></row>
3625
3626 <row>
3627 <entry spanname="id"><constant>V4L2_CID_ZOOM_RELATIVE</constant>&nbsp;</entry>
3628 <entry>integer</entry>
3629 </row><row><entry spanname="descr">Specify the objective lens
3630focal length relatively to the current value. Positive values move the zoom
3631lens group towards the telephoto direction, negative values towards the
3632wide-angle direction. The zoom unit is driver-specific. This is a write-only control.</entry>
3633 </row>
3634 <row><entry></entry></row>
3635
3636 <row>
3637 <entry spanname="id"><constant>V4L2_CID_ZOOM_CONTINUOUS</constant>&nbsp;</entry>
3638 <entry>integer</entry>
3639 </row><row><entry spanname="descr">Move the objective lens group
3640at the specified speed until it reaches physical device limits or until an
3641explicit request to stop the movement. A positive value moves the zoom lens
3642group towards the telephoto direction. A value of zero stops the zoom lens
3643group movement. A negative value moves the zoom lens group towards the
3644wide-angle direction. The zoom speed unit is driver-specific.</entry>
3645 </row>
3646 <row><entry></entry></row>
3647
3648 <row>
3649 <entry spanname="id"><constant>V4L2_CID_IRIS_ABSOLUTE</constant>&nbsp;</entry>
3650 <entry>integer</entry>
3651 </row><row><entry spanname="descr">This control sets the
3652camera's aperture to the specified value. The unit is undefined.
3653Larger values open the iris wider, smaller values close it.</entry>
3654 </row>
3655 <row><entry></entry></row>
3656
3657 <row>
3658 <entry spanname="id"><constant>V4L2_CID_IRIS_RELATIVE</constant>&nbsp;</entry>
3659 <entry>integer</entry>
3660 </row><row><entry spanname="descr">This control modifies the
3661camera's aperture by the specified amount. The unit is undefined.
3662Positive values open the iris one step further, negative values close
3663it one step further. This is a write-only control.</entry>
3664 </row>
3665 <row><entry></entry></row>
3666
3667 <row>
3668 <entry spanname="id"><constant>V4L2_CID_PRIVACY</constant>&nbsp;</entry>
3669 <entry>boolean</entry>
3670 </row><row><entry spanname="descr">Prevent video from being acquired
3671by the camera. When this control is set to <constant>TRUE</constant> (1), no
3672image can be captured by the camera. Common means to enforce privacy are
3673mechanical obturation of the sensor and firmware image processing, but the
3674device is not restricted to these methods. Devices that implement the privacy
3675control must support read access and may support write access.</entry>
3676 </row>
3677
3678 <row>
3679 <entry spanname="id"><constant>V4L2_CID_BAND_STOP_FILTER</constant>&nbsp;</entry>
3680 <entry>integer</entry>
3681 </row><row><entry spanname="descr">Switch the band-stop filter of a
3682camera sensor on or off, or specify its strength. Such band-stop filters can
3683be used, for example, to filter out the fluorescent light component.</entry>
3684 </row>
3685 <row><entry></entry></row>
3686
3687 <row id="v4l2-auto-n-preset-white-balance">
3688 <entry spanname="id"><constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>&nbsp;</entry>
3689 <entry>enum&nbsp;v4l2_auto_n_preset_white_balance</entry>
3690 </row><row><entry spanname="descr">Sets white balance to automatic,
3691manual or a preset. The presets determine color temperature of the light as
3692a hint to the camera for white balance adjustments resulting in most accurate
3693color representation. The following white balance presets are listed in order
3694of increasing color temperature.</entry>
3695 </row>
3696 <row>
3697 <entrytbl spanname="descr" cols="2">
3698 <tbody valign="top">
3699 <row>
3700 <entry><constant>V4L2_WHITE_BALANCE_MANUAL</constant>&nbsp;</entry>
3701 <entry>Manual white balance.</entry>
3702 </row>
3703 <row>
3704 <entry><constant>V4L2_WHITE_BALANCE_AUTO</constant>&nbsp;</entry>
3705 <entry>Automatic white balance adjustments.</entry>
3706 </row>
3707 <row>
3708 <entry><constant>V4L2_WHITE_BALANCE_INCANDESCENT</constant>&nbsp;</entry>
3709 <entry>White balance setting for incandescent (tungsten) lighting.
3710It generally cools down the colors and corresponds approximately to 2500...3500 K
3711color temperature range.</entry>
3712 </row>
3713 <row>
3714 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT</constant>&nbsp;</entry>
3715 <entry>White balance preset for fluorescent lighting.
3716It corresponds approximately to 4000...5000 K color temperature.</entry>
3717 </row>
3718 <row>
3719 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT_H</constant>&nbsp;</entry>
3720 <entry>With this setting the camera will compensate for
3721fluorescent H lighting.</entry>
3722 </row>
3723 <row>
3724 <entry><constant>V4L2_WHITE_BALANCE_HORIZON</constant>&nbsp;</entry>
3725 <entry>White balance setting for horizon daylight.
3726It corresponds approximately to 5000 K color temperature.</entry>
3727 </row>
3728 <row>
3729 <entry><constant>V4L2_WHITE_BALANCE_DAYLIGHT</constant>&nbsp;</entry>
3730 <entry>White balance preset for daylight (with clear sky).
3731It corresponds approximately to 5000...6500 K color temperature.</entry>
3732 </row>
3733 <row>
3734 <entry><constant>V4L2_WHITE_BALANCE_FLASH</constant>&nbsp;</entry>
3735 <entry>With this setting the camera will compensate for the flash
3736light. It slightly warms up the colors and corresponds roughly to 5000...5500 K
3737color temperature.</entry>
3738 </row>
3739 <row>
3740 <entry><constant>V4L2_WHITE_BALANCE_CLOUDY</constant>&nbsp;</entry>
3741 <entry>White balance preset for moderately overcast sky.
3742This option corresponds approximately to 6500...8000 K color temperature
3743range.</entry>
3744 </row>
3745 <row>
3746 <entry><constant>V4L2_WHITE_BALANCE_SHADE</constant>&nbsp;</entry>
3747 <entry>White balance preset for shade or heavily overcast
3748sky. It corresponds approximately to 9000...10000 K color temperature.
3749</entry>
3750 </row>
3751 </tbody>
3752 </entrytbl>
3753 </row>
3754 <row><entry></entry></row>
3755
3756 <row id="v4l2-wide-dynamic-range">
3757 <entry spanname="id"><constant>V4L2_CID_WIDE_DYNAMIC_RANGE</constant></entry>
3758 <entry>boolean</entry>
3759 </row>
3760 <row>
3761 <entry spanname="descr">Enables or disables the camera's wide dynamic
3762range feature. This feature allows to obtain clear images in situations where
3763intensity of the illumination varies significantly throughout the scene, i.e.
3764there are simultaneously very dark and very bright areas. It is most commonly
3765realized in cameras by combining two subsequent frames with different exposure
3766times. <footnote id="ctypeconv"><para> This control may be changed to a menu
3767control in the future, if more options are required.</para></footnote></entry>
3768 </row>
3769 <row><entry></entry></row>
3770
3771 <row id="v4l2-image-stabilization">
3772 <entry spanname="id"><constant>V4L2_CID_IMAGE_STABILIZATION</constant></entry>
3773 <entry>boolean</entry>
3774 </row>
3775 <row>
3776 <entry spanname="descr">Enables or disables image stabilization.
3777 <footnoteref linkend="ctypeconv"/></entry>
3778 </row>
3779 <row><entry></entry></row>
3780
3781 <row>
3782 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant>&nbsp;</entry>
3783 <entry>integer menu</entry>
3784 </row><row><entry spanname="descr">Determines ISO equivalent of an
3785image sensor indicating the sensor's sensitivity to light. The numbers are
3786expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard,
3787where doubling the sensor sensitivity is represented by doubling the numerical
3788ISO value. Applications should interpret the values as standard ISO values
3789multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
3790usually support only a subset of standard ISO values. The effect of setting
3791this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>
3792control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL
3793</constant> is undefined, drivers should ignore such requests.</entry>
3794 </row>
3795 <row><entry></entry></row>
3796
3797 <row id="v4l2-iso-sensitivity-auto-type">
3798 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3799 <entry>enum&nbsp;v4l2_iso_sensitivity_type</entry>
3800 </row><row><entry spanname="descr">Enables or disables automatic ISO
3801sensitivity adjustments.</entry>
3802 </row>
3803 <row>
3804 <entrytbl spanname="descr" cols="2">
3805 <tbody valign="top">
3806 <row>
3807 <entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant>&nbsp;</entry>
3808 <entry>Manual ISO sensitivity.</entry>
3809 </row>
3810 <row>
3811 <entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3812 <entry>Automatic ISO sensitivity adjustments.</entry>
3813 </row>
3814 </tbody>
3815 </entrytbl>
3816 </row>
3817 <row><entry></entry></row>
3818
3819 <row id="v4l2-scene-mode">
3820 <entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant>&nbsp;</entry>
3821 <entry>enum&nbsp;v4l2_scene_mode</entry>
3822 </row><row><entry spanname="descr">This control allows to select
3823scene programs as the camera automatic modes optimized for common shooting
3824scenes. Within these modes the camera determines best exposure, aperture,
3825focusing, light metering, white balance and equivalent sensitivity. The
3826controls of those parameters are influenced by the scene mode control.
3827An exact behavior in each mode is subject to the camera specification.
3828
3829<para>When the scene mode feature is not used, this control should be set to
3830<constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly
3831related controls are accessible. The following scene programs are defined:
3832</para>
3833</entry>
3834 </row>
3835 <row>
3836 <entrytbl spanname="descr" cols="2">
3837 <tbody valign="top">
3838 <row>
3839 <entry><constant>V4L2_SCENE_MODE_NONE</constant>&nbsp;</entry>
3840 <entry>The scene mode feature is disabled.</entry>
3841 </row>
3842 <row>
3843 <entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant>&nbsp;</entry>
3844 <entry>Backlight. Compensates for dark shadows when light is
3845 coming from behind a subject, also by automatically turning
3846 on the flash.</entry>
3847 </row>
3848 <row>
3849 <entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant>&nbsp;</entry>
3850 <entry>Beach and snow. This mode compensates for all-white or
3851bright scenes, which tend to look gray and low contrast, when camera's automatic
3852exposure is based on an average scene brightness. To compensate, this mode
3853automatically slightly overexposes the frames. The white balance may also be
3854adjusted to compensate for the fact that reflected snow looks bluish rather
3855than white.</entry>
3856 </row>
3857 <row>
3858 <entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant>&nbsp;</entry>
3859 <entry>Candle light. The camera generally raises the ISO
3860sensitivity and lowers the shutter speed. This mode compensates for relatively
3861close subject in the scene. The flash is disabled in order to preserve the
3862ambiance of the light.</entry>
3863 </row>
3864 <row>
3865 <entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant>&nbsp;</entry>
3866 <entry>Dawn and dusk. Preserves the colors seen in low
3867natural light before dusk and after down. The camera may turn off the flash,
3868and automatically focus at infinity. It will usually boost saturation and
3869lower the shutter speed.</entry>
3870 </row>
3871 <row>
3872 <entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant>&nbsp;</entry>
3873 <entry>Fall colors. Increases saturation and adjusts white
3874balance for color enhancement. Pictures of autumn leaves get saturated reds
3875and yellows.</entry>
3876 </row>
3877 <row>
3878 <entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant>&nbsp;</entry>
3879 <entry>Fireworks. Long exposure times are used to capture
3880the expanding burst of light from a firework. The camera may invoke image
3881stabilization.</entry>
3882 </row>
3883 <row>
3884 <entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant>&nbsp;</entry>
3885 <entry>Landscape. The camera may choose a small aperture to
3886provide deep depth of field and long exposure duration to help capture detail
3887in dim light conditions. The focus is fixed at infinity. Suitable for distant
3888and wide scenery.</entry>
3889 </row>
3890 <row>
3891 <entry><constant>V4L2_SCENE_MODE_NIGHT</constant>&nbsp;</entry>
3892 <entry>Night, also known as Night Landscape. Designed for low
3893light conditions, it preserves detail in the dark areas without blowing out bright
3894objects. The camera generally sets itself to a medium-to-high ISO sensitivity,
3895with a relatively long exposure time, and turns flash off. As such, there will be
3896increased image noise and the possibility of blurred image.</entry>
3897 </row>
3898 <row>
3899 <entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant>&nbsp;</entry>
3900 <entry>Party and indoor. Designed to capture indoor scenes
3901that are lit by indoor background lighting as well as the flash. The camera
3902usually increases ISO sensitivity, and adjusts exposure for the low light
3903conditions.</entry>
3904 </row>
3905 <row>
3906 <entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant>&nbsp;</entry>
3907 <entry>Portrait. The camera adjusts the aperture so that the
3908depth of field is reduced, which helps to isolate the subject against a smooth
3909background. Most cameras recognize the presence of faces in the scene and focus
3910on them. The color hue is adjusted to enhance skin tones. The intensity of the
3911flash is often reduced.</entry>
3912 </row>
3913 <row>
3914 <entry><constant>V4L2_SCENE_MODE_SPORTS</constant>&nbsp;</entry>
3915 <entry>Sports. Significantly increases ISO and uses a fast
3916shutter speed to freeze motion of rapidly-moving subjects. Increased image
3917noise may be seen in this mode.</entry>
3918 </row>
3919 <row>
3920 <entry><constant>V4L2_SCENE_MODE_SUNSET</constant>&nbsp;</entry>
3921 <entry>Sunset. Preserves deep hues seen in sunsets and
3922sunrises. It bumps up the saturation.</entry>
3923 </row>
3924 <row>
3925 <entry><constant>V4L2_SCENE_MODE_TEXT</constant>&nbsp;</entry>
3926 <entry>Text. It applies extra contrast and sharpness, it is
3927typically a black-and-white mode optimized for readability. Automatic focus
3928may be switched to close-up mode and this setting may also involve some
3929lens-distortion correction.</entry>
3930 </row>
3931 </tbody>
3932 </entrytbl>
3933 </row>
3934 <row><entry></entry></row>
3935
3936 <row>
3937 <entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
3938 <entry>bitmask</entry>
3939 </row>
3940 <row>
3941 <entry spanname="descr">This control locks or unlocks the automatic
3942focus, exposure and white balance. The automatic adjustments can be paused
3943independently by setting the corresponding lock bit to 1. The camera then retains
3944the settings until the lock bit is cleared. The following lock bits are defined:
3945</entry>
3946 </row>
3947 <row>
3948 <entrytbl spanname="descr" cols="2">
3949 <tbody valign="top">
3950 <row>
3951 <entry><constant>V4L2_LOCK_EXPOSURE</constant></entry>
3952 <entry>Automatic exposure adjustments lock.</entry>
3953 </row>
3954 <row>
3955 <entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry>
3956 <entry>Automatic white balance adjustments lock.</entry>
3957 </row>
3958 <row>
3959 <entry><constant>V4L2_LOCK_FOCUS</constant></entry>
3960 <entry>Automatic focus lock.</entry>
3961 </row>
3962 </tbody>
3963 </entrytbl>
3964 </row>
3965 <row><entry spanname="descr">
3966When a given algorithm is not enabled, drivers should ignore requests
3967to lock it and should return no error. An example might be an application
3968setting bit <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the
3969<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
3970<constant>FALSE</constant>. The value of this control may be changed
3971by exposure, white balance or focus controls.</entry>
3972 </row>
3973 <row><entry></entry></row>
3974
3975 <row>
3976 <entry spanname="id"><constant>V4L2_CID_PAN_SPEED</constant>&nbsp;</entry>
3977 <entry>integer</entry>
3978 </row><row><entry spanname="descr">This control turns the
3979camera horizontally at the specific speed. The unit is undefined. A
3980positive value moves the camera to the right (clockwise when viewed
3981from above), a negative value to the left. A value of zero stops the motion
3982if one is in progress and has no effect otherwise.</entry>
3983 </row>
3984 <row><entry></entry></row>
3985
3986 <row>
3987 <entry spanname="id"><constant>V4L2_CID_TILT_SPEED</constant>&nbsp;</entry>
3988 <entry>integer</entry>
3989 </row><row><entry spanname="descr">This control turns the
3990camera vertically at the specified speed. The unit is undefined. A
3991positive value moves the camera up, a negative value down. A value of zero
3992stops the motion if one is in progress and has no effect otherwise.</entry>
3993 </row>
3994 <row><entry></entry></row>
3995
3996 </tbody>
3997 </tgroup>
3998 </table>
3999 </section>
4000
4001 <section id="fm-tx-controls">
4002 <title>FM Transmitter Control Reference</title>
4003
4004 <para>The FM Transmitter (FM_TX) class includes controls for common features of
4005FM transmissions capable devices. Currently this class includes parameters for audio
4006compression, pilot tone generation, audio deviation limiter, RDS transmission and
4007tuning power features.</para>
4008
4009 <table pgwide="1" frame="none" id="fm-tx-control-id">
4010 <title>FM_TX Control IDs</title>
4011
4012 <tgroup cols="4">
4013 <colspec colname="c1" colwidth="1*" />
4014 <colspec colname="c2" colwidth="6*" />
4015 <colspec colname="c3" colwidth="2*" />
4016 <colspec colname="c4" colwidth="6*" />
4017 <spanspec namest="c1" nameend="c2" spanname="id" />
4018 <spanspec namest="c2" nameend="c4" spanname="descr" />
4019 <thead>
4020 <row>
4021 <entry spanname="id" align="left">ID</entry>
4022 <entry align="left">Type</entry>
4023 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4024 </row>
4025 </thead>
4026 <tbody valign="top">
4027 <row><entry></entry></row>
4028 <row>
4029 <entry spanname="id"><constant>V4L2_CID_FM_TX_CLASS</constant>&nbsp;</entry>
4030 <entry>class</entry>
4031 </row><row><entry spanname="descr">The FM_TX class
4032descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
4033description of this control class.</entry>
4034 </row>
4035 <row>
4036 <entry spanname="id"><constant>V4L2_CID_RDS_TX_DEVIATION</constant>&nbsp;</entry>
4037 <entry>integer</entry>
4038 </row>
4039 <row><entry spanname="descr">Configures RDS signal frequency deviation level in Hz.
4040The range and step are driver-specific.</entry>
4041 </row>
4042 <row>
4043 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PI</constant>&nbsp;</entry>
4044 <entry>integer</entry>
4045 </row>
4046 <row><entry spanname="descr">Sets the RDS Programme Identification field
4047for transmission.</entry>
4048 </row>
4049 <row>
4050 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PTY</constant>&nbsp;</entry>
4051 <entry>integer</entry>
4052 </row>
4053 <row><entry spanname="descr">Sets the RDS Programme Type field for transmission.
4054This encodes up to 31 pre-defined programme types.</entry>
4055 </row>
4056 <row>
4057 <entry spanname="id"><constant>V4L2_CID_RDS_TX_PS_NAME</constant>&nbsp;</entry>
4058 <entry>string</entry>
4059 </row>
4060 <row><entry spanname="descr">Sets the Programme Service name (PS_NAME) for transmission.
4061It is intended for static display on a receiver. It is the primary aid to listeners in programme service
4062identification and selection. In Annex E of <xref linkend="iec62106" />, the RDS specification,
4063there is a full description of the correct character encoding for Programme Service name strings.
4064Also from RDS specification, PS is usually a single eight character text. However, it is also possible
4065to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured
4066with steps of 8 characters. The result is it must always contain a string with size multiple of 8.</entry>
4067 </row>
4068 <row>
4069 <entry spanname="id"><constant>V4L2_CID_RDS_TX_RADIO_TEXT</constant>&nbsp;</entry>
4070 <entry>string</entry>
4071 </row>
4072 <row><entry spanname="descr">Sets the Radio Text info for transmission. It is a textual description of
4073what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names,
4074programme-related information or any other text. In these cases, RadioText should be used in addition to
4075<constant>V4L2_CID_RDS_TX_PS_NAME</constant>. The encoding for Radio Text strings is also fully described
4076in Annex E of <xref linkend="iec62106" />. The length of Radio Text strings depends on which RDS Block is being
4077used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible
4078to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured
4079with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry>
4080 </row>
4081 <row>
4082 <entry spanname="id"><constant>V4L2_CID_RDS_TX_MONO_STEREO</constant>&nbsp;</entry>
4083 <entry>boolean</entry>
4084 </row>
4085 <row><entry spanname="descr">Sets the Mono/Stereo bit of the Decoder Identification code. If set,
4086then the audio was recorded as stereo.</entry>
4087 </row>
4088 <row>
4089 <entry spanname="id"><constant>V4L2_CID_RDS_TX_ARTIFICIAL_HEAD</constant>&nbsp;</entry>
4090 <entry>boolean</entry>
4091 </row>
4092 <row><entry spanname="descr">Sets the
4093<ulink url="http://en.wikipedia.org/wiki/Artificial_head">Artificial Head</ulink> bit of the Decoder
4094Identification code. If set, then the audio was recorded using an artificial head.</entry>
4095 </row>
4096 <row>
4097 <entry spanname="id"><constant>V4L2_CID_RDS_TX_COMPRESSED</constant>&nbsp;</entry>
4098 <entry>boolean</entry>
4099 </row>
4100 <row><entry spanname="descr">Sets the Compressed bit of the Decoder Identification code. If set,
4101then the audio is compressed.</entry>
4102 </row>
4103 <row>
4104 <entry spanname="id"><constant>V4L2_CID_RDS_TX_DYNAMIC_PTY</constant>&nbsp;</entry>
4105 <entry>boolean</entry>
4106 </row>
4107 <row><entry spanname="descr">Sets the Dynamic PTY bit of the Decoder Identification code. If set,
4108then the PTY code is dynamically switched.</entry>
4109 </row>
4110 <row>
4111 <entry spanname="id"><constant>V4L2_CID_RDS_TX_TRAFFIC_ANNOUNCEMENT</constant>&nbsp;</entry>
4112 <entry>boolean</entry>
4113 </row>
4114 <row><entry spanname="descr">If set, then a traffic announcement is in progress.</entry>
4115 </row>
4116 <row>
4117 <entry spanname="id"><constant>V4L2_CID_RDS_TX_TRAFFIC_PROGRAM</constant>&nbsp;</entry>
4118 <entry>boolean</entry>
4119 </row>
4120 <row><entry spanname="descr">If set, then the tuned programme carries traffic announcements.</entry>
4121 </row>
4122 <row>
4123 <entry spanname="id"><constant>V4L2_CID_RDS_TX_MUSIC_SPEECH</constant>&nbsp;</entry>
4124 <entry>boolean</entry>
4125 </row>
4126 <row><entry spanname="descr">If set, then this channel broadcasts music. If cleared, then it
4127broadcasts speech. If the transmitter doesn't make this distinction, then it should be set.</entry>
4128 </row>
4129 <row>
4130 <entry spanname="id"><constant>V4L2_CID_RDS_TX_ALT_FREQS_ENABLE</constant>&nbsp;</entry>
4131 <entry>boolean</entry>
4132 </row>
4133 <row><entry spanname="descr">If set, then transmit alternate frequencies.</entry>
4134 </row>
4135 <row>
4136 <entry spanname="id"><constant>V4L2_CID_RDS_TX_ALT_FREQS</constant>&nbsp;</entry>
4137 <entry>__u32 array</entry>
4138 </row>
4139 <row><entry spanname="descr">The alternate frequencies in kHz units. The RDS standard allows
4140for up to 25 frequencies to be defined. Drivers may support fewer frequencies so check
4141the array size.</entry>
4142 </row>
4143 <row>
4144 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_ENABLED</constant>&nbsp;</entry>
4145 <entry>boolean</entry>
4146 </row>
4147 <row><entry spanname="descr">Enables or disables the audio deviation limiter feature.
4148The limiter is useful when trying to maximize the audio volume, minimize receiver-generated
4149distortion and prevent overmodulation.
4150</entry>
4151 </row>
4152 <row>
4153 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_RELEASE_TIME</constant>&nbsp;</entry>
4154 <entry>integer</entry>
4155 </row>
4156 <row><entry spanname="descr">Sets the audio deviation limiter feature release time.
4157Unit is in useconds. Step and range are driver-specific.</entry>
4158 </row>
4159 <row>
4160 <entry spanname="id"><constant>V4L2_CID_AUDIO_LIMITER_DEVIATION</constant>&nbsp;</entry>
4161 <entry>integer</entry>
4162 </row>
4163 <row><entry spanname="descr">Configures audio frequency deviation level in Hz.
4164The range and step are driver-specific.</entry>
4165 </row>
4166 <row>
4167 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ENABLED</constant>&nbsp;</entry>
4168 <entry>boolean</entry>
4169 </row>
4170 <row><entry spanname="descr">Enables or disables the audio compression feature.
4171This feature amplifies signals below the threshold by a fixed gain and compresses audio
4172signals above the threshold by the ratio of Threshold/(Gain + Threshold).</entry>
4173 </row>
4174 <row>
4175 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_GAIN</constant>&nbsp;</entry>
4176 <entry>integer</entry>
4177 </row>
4178 <row><entry spanname="descr">Sets the gain for audio compression feature. It is
4179a dB value. The range and step are driver-specific.</entry>
4180 </row>
4181 <row>
4182 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_THRESHOLD</constant>&nbsp;</entry>
4183 <entry>integer</entry>
4184 </row>
4185 <row><entry spanname="descr">Sets the threshold level for audio compression freature.
4186It is a dB value. The range and step are driver-specific.</entry>
4187 </row>
4188 <row>
4189 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME</constant>&nbsp;</entry>
4190 <entry>integer</entry>
4191 </row>
4192 <row><entry spanname="descr">Sets the attack time for audio compression feature.
4193It is a useconds value. The range and step are driver-specific.</entry>
4194 </row>
4195 <row>
4196 <entry spanname="id"><constant>V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME</constant>&nbsp;</entry>
4197 <entry>integer</entry>
4198 </row>
4199 <row><entry spanname="descr">Sets the release time for audio compression feature.
4200It is a useconds value. The range and step are driver-specific.</entry>
4201 </row>
4202 <row>
4203 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_ENABLED</constant>&nbsp;</entry>
4204 <entry>boolean</entry>
4205 </row>
4206 <row><entry spanname="descr">Enables or disables the pilot tone generation feature.</entry>
4207 </row>
4208 <row>
4209 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_DEVIATION</constant>&nbsp;</entry>
4210 <entry>integer</entry>
4211 </row>
4212 <row><entry spanname="descr">Configures pilot tone frequency deviation level. Unit is
4213in Hz. The range and step are driver-specific.</entry>
4214 </row>
4215 <row>
4216 <entry spanname="id"><constant>V4L2_CID_PILOT_TONE_FREQUENCY</constant>&nbsp;</entry>
4217 <entry>integer</entry>
4218 </row>
4219 <row><entry spanname="descr">Configures pilot tone frequency value. Unit is
4220in Hz. The range and step are driver-specific.</entry>
4221 </row>
4222 <row>
4223 <entry spanname="id"><constant>V4L2_CID_TUNE_PREEMPHASIS</constant>&nbsp;</entry>
4224 <entry>enum v4l2_preemphasis</entry>
4225 </row>
4226 <row id="v4l2-preemphasis"><entry spanname="descr">Configures the pre-emphasis value for broadcasting.
4227A pre-emphasis filter is applied to the broadcast to accentuate the high audio frequencies.
4228Depending on the region, a time constant of either 50 or 75 useconds is used. The enum&nbsp;v4l2_preemphasis
4229defines possible values for pre-emphasis. Here they are:</entry>
4230 </row><row>
4231 <entrytbl spanname="descr" cols="2">
4232 <tbody valign="top">
4233 <row>
4234 <entry><constant>V4L2_PREEMPHASIS_DISABLED</constant>&nbsp;</entry>
4235 <entry>No pre-emphasis is applied.</entry>
4236 </row>
4237 <row>
4238 <entry><constant>V4L2_PREEMPHASIS_50_uS</constant>&nbsp;</entry>
4239 <entry>A pre-emphasis of 50 uS is used.</entry>
4240 </row>
4241 <row>
4242 <entry><constant>V4L2_PREEMPHASIS_75_uS</constant>&nbsp;</entry>
4243 <entry>A pre-emphasis of 75 uS is used.</entry>
4244 </row>
4245 </tbody>
4246 </entrytbl>
4247
4248 </row>
4249 <row>
4250 <entry spanname="id"><constant>V4L2_CID_TUNE_POWER_LEVEL</constant>&nbsp;</entry>
4251 <entry>integer</entry>
4252 </row>
4253 <row><entry spanname="descr">Sets the output power level for signal transmission.
4254Unit is in dBuV. Range and step are driver-specific.</entry>
4255 </row>
4256 <row>
4257 <entry spanname="id"><constant>V4L2_CID_TUNE_ANTENNA_CAPACITOR</constant>&nbsp;</entry>
4258 <entry>integer</entry>
4259 </row>
4260 <row><entry spanname="descr">This selects the value of antenna tuning capacitor
4261manually or automatically if set to zero. Unit, range and step are driver-specific.</entry>
4262 </row>
4263 <row><entry></entry></row>
4264 </tbody>
4265 </tgroup>
4266 </table>
4267
4268<para>For more details about RDS specification, refer to
4269<xref linkend="iec62106" /> document, from CENELEC.</para>
4270 </section>
4271
4272 <section id="flash-controls">
4273 <title>Flash Control Reference</title>
4274
4275 <para>
4276 The V4L2 flash controls are intended to provide generic access
4277 to flash controller devices. Flash controller devices are
4278 typically used in digital cameras.
4279 </para>
4280
4281 <para>
4282 The interface can support both LED and xenon flash devices. As
4283 of writing this, there is no xenon flash driver using this
4284 interface.
4285 </para>
4286
4287 <section id="flash-controls-use-cases">
4288 <title>Supported use cases</title>
4289
4290 <section>
4291 <title>Unsynchronised LED flash (software strobe)</title>
4292
4293 <para>
4294 Unsynchronised LED flash is controlled directly by the
4295 host as the sensor. The flash must be enabled by the host
4296 before the exposure of the image starts and disabled once
4297 it ends. The host is fully responsible for the timing of
4298 the flash.
4299 </para>
4300
4301 <para>Example of such device: Nokia N900.</para>
4302 </section>
4303
4304 <section>
4305 <title>Synchronised LED flash (hardware strobe)</title>
4306
4307 <para>
4308 The synchronised LED flash is pre-programmed by the host
4309 (power and timeout) but controlled by the sensor through a
4310 strobe signal from the sensor to the flash.
4311 </para>
4312
4313 <para>
4314 The sensor controls the flash duration and timing. This
4315 information typically must be made available to the
4316 sensor.
4317 </para>
4318
4319 </section>
4320
4321 <section>
4322 <title>LED flash as torch</title>
4323
4324 <para>
4325 LED flash may be used as torch in conjunction with another
4326 use case involving camera or individually.
4327 </para>
4328
4329
4330 <table pgwide="1" frame="none" id="flash-control-id">
4331 <title>Flash Control IDs</title>
4332
4333 <tgroup cols="4">
4334 <colspec colname="c1" colwidth="1*" />
4335 <colspec colname="c2" colwidth="6*" />
4336 <colspec colname="c3" colwidth="2*" />
4337 <colspec colname="c4" colwidth="6*" />
4338 <spanspec namest="c1" nameend="c2" spanname="id" />
4339 <spanspec namest="c2" nameend="c4" spanname="descr" />
4340 <thead>
4341 <row>
4342 <entry spanname="id" align="left">ID</entry>
4343 <entry align="left">Type</entry>
4344 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4345 </row>
4346 </thead>
4347 <tbody valign="top">
4348 <row><entry></entry></row>
4349 <row>
4350 <entry spanname="id"><constant>V4L2_CID_FLASH_CLASS</constant></entry>
4351 <entry>class</entry>
4352 </row>
4353 <row>
4354 <entry spanname="descr">The FLASH class descriptor.</entry>
4355 </row>
4356 <row>
4357 <entry spanname="id"><constant>V4L2_CID_FLASH_LED_MODE</constant></entry>
4358 <entry>menu</entry>
4359 </row>
4360 <row id="v4l2-flash-led-mode">
4361 <entry spanname="descr">Defines the mode of the flash LED,
4362 the high-power white LED attached to the flash controller.
4363 Setting this control may not be possible in presence of
4364 some faults. See V4L2_CID_FLASH_FAULT.</entry>
4365 </row>
4366 <row>
4367 <entrytbl spanname="descr" cols="2">
4368 <tbody valign="top">
4369 <row>
4370 <entry><constant>V4L2_FLASH_LED_MODE_NONE</constant></entry>
4371 <entry>Off.</entry>
4372 </row>
4373 <row>
4374 <entry><constant>V4L2_FLASH_LED_MODE_FLASH</constant></entry>
4375 <entry>Flash mode.</entry>
4376 </row>
4377 <row>
4378 <entry><constant>V4L2_FLASH_LED_MODE_TORCH</constant></entry>
4379 <entry>Torch mode. See V4L2_CID_FLASH_TORCH_INTENSITY.</entry>
4380 </row>
4381 </tbody>
4382 </entrytbl>
4383 </row>
4384 <row>
4385 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_SOURCE</constant></entry>
4386 <entry>menu</entry>
4387 </row>
4388 <row id="v4l2-flash-strobe-source"><entry
4389 spanname="descr">Defines the source of the flash LED
4390 strobe.</entry>
4391 </row>
4392 <row>
4393 <entrytbl spanname="descr" cols="2">
4394 <tbody valign="top">
4395 <row>
4396 <entry><constant>V4L2_FLASH_STROBE_SOURCE_SOFTWARE</constant></entry>
4397 <entry>The flash strobe is triggered by using
4398 the V4L2_CID_FLASH_STROBE control.</entry>
4399 </row>
4400 <row>
4401 <entry><constant>V4L2_FLASH_STROBE_SOURCE_EXTERNAL</constant></entry>
4402 <entry>The flash strobe is triggered by an
4403 external source. Typically this is a sensor,
4404 which makes it possible to synchronises the
4405 flash strobe start to exposure start.</entry>
4406 </row>
4407 </tbody>
4408 </entrytbl>
4409 </row>
4410 <row>
4411 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE</constant></entry>
4412 <entry>button</entry>
4413 </row>
4414 <row>
4415 <entry spanname="descr">Strobe flash. Valid when
4416 V4L2_CID_FLASH_LED_MODE is set to
4417 V4L2_FLASH_LED_MODE_FLASH and V4L2_CID_FLASH_STROBE_SOURCE
4418 is set to V4L2_FLASH_STROBE_SOURCE_SOFTWARE. Setting this
4419 control may not be possible in presence of some faults.
4420 See V4L2_CID_FLASH_FAULT.</entry>
4421 </row>
4422 <row>
4423 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_STOP</constant></entry>
4424 <entry>button</entry>
4425 </row>
4426 <row><entry spanname="descr">Stop flash strobe immediately.</entry>
4427 </row>
4428 <row>
4429 <entry spanname="id"><constant>V4L2_CID_FLASH_STROBE_STATUS</constant></entry>
4430 <entry>boolean</entry>
4431 </row>
4432 <row>
4433 <entry spanname="descr">Strobe status: whether the flash
4434 is strobing at the moment or not. This is a read-only
4435 control.</entry>
4436 </row>
4437 <row>
4438 <entry spanname="id"><constant>V4L2_CID_FLASH_TIMEOUT</constant></entry>
4439 <entry>integer</entry>
4440 </row>
4441 <row>
4442 <entry spanname="descr">Hardware timeout for flash. The
4443 flash strobe is stopped after this period of time has
4444 passed from the start of the strobe.</entry>
4445 </row>
4446 <row>
4447 <entry spanname="id"><constant>V4L2_CID_FLASH_INTENSITY</constant></entry>
4448 <entry>integer</entry>
4449 </row>
4450 <row>
4451 <entry spanname="descr">Intensity of the flash strobe when
4452 the flash LED is in flash mode
4453 (V4L2_FLASH_LED_MODE_FLASH). The unit should be milliamps
4454 (mA) if possible.</entry>
4455 </row>
4456 <row>
4457 <entry spanname="id"><constant>V4L2_CID_FLASH_TORCH_INTENSITY</constant></entry>
4458 <entry>integer</entry>
4459 </row>
4460 <row>
4461 <entry spanname="descr">Intensity of the flash LED in
4462 torch mode (V4L2_FLASH_LED_MODE_TORCH). The unit should be
4463 milliamps (mA) if possible. Setting this control may not
4464 be possible in presence of some faults. See
4465 V4L2_CID_FLASH_FAULT.</entry>
4466 </row>
4467 <row>
4468 <entry spanname="id"><constant>V4L2_CID_FLASH_INDICATOR_INTENSITY</constant></entry>
4469 <entry>integer</entry>
4470 </row>
4471 <row>
4472 <entry spanname="descr">Intensity of the indicator LED.
4473 The indicator LED may be fully independent of the flash
4474 LED. The unit should be microamps (uA) if possible.</entry>
4475 </row>
4476 <row>
4477 <entry spanname="id"><constant>V4L2_CID_FLASH_FAULT</constant></entry>
4478 <entry>bitmask</entry>
4479 </row>
4480 <row>
4481 <entry spanname="descr">Faults related to the flash. The
4482 faults tell about specific problems in the flash chip
4483 itself or the LEDs attached to it. Faults may prevent
4484 further use of some of the flash controls. In particular,
4485 V4L2_CID_FLASH_LED_MODE is set to V4L2_FLASH_LED_MODE_NONE
4486 if the fault affects the flash LED. Exactly which faults
4487 have such an effect is chip dependent. Reading the faults
4488 resets the control and returns the chip to a usable state
4489 if possible.</entry>
4490 </row>
4491 <row>
4492 <entrytbl spanname="descr" cols="2">
4493 <tbody valign="top">
4494 <row>
4495 <entry><constant>V4L2_FLASH_FAULT_OVER_VOLTAGE</constant></entry>
4496 <entry>Flash controller voltage to the flash LED
4497 has exceeded the limit specific to the flash
4498 controller.</entry>
4499 </row>
4500 <row>
4501 <entry><constant>V4L2_FLASH_FAULT_TIMEOUT</constant></entry>
4502 <entry>The flash strobe was still on when
4503 the timeout set by the user ---
4504 V4L2_CID_FLASH_TIMEOUT control --- has expired.
4505 Not all flash controllers may set this in all
4506 such conditions.</entry>
4507 </row>
4508 <row>
4509 <entry><constant>V4L2_FLASH_FAULT_OVER_TEMPERATURE</constant></entry>
4510 <entry>The flash controller has overheated.</entry>
4511 </row>
4512 <row>
4513 <entry><constant>V4L2_FLASH_FAULT_SHORT_CIRCUIT</constant></entry>
4514 <entry>The short circuit protection of the flash
4515 controller has been triggered.</entry>
4516 </row>
4517 <row>
4518 <entry><constant>V4L2_FLASH_FAULT_OVER_CURRENT</constant></entry>
4519 <entry>Current in the LED power supply has exceeded the limit
4520 specific to the flash controller.</entry>
4521 </row>
4522 <row>
4523 <entry><constant>V4L2_FLASH_FAULT_INDICATOR</constant></entry>
4524 <entry>The flash controller has detected a short or open
4525 circuit condition on the indicator LED.</entry>
4526 </row>
4527 <row>
4528 <entry><constant>V4L2_FLASH_FAULT_UNDER_VOLTAGE</constant></entry>
4529 <entry>Flash controller voltage to the flash LED
4530 has been below the minimum limit specific to the flash
4531 controller.</entry>
4532 </row>
4533 <row>
4534 <entry><constant>V4L2_FLASH_FAULT_INPUT_VOLTAGE</constant></entry>
4535 <entry>The input voltage of the flash controller is below
4536 the limit under which strobing the flash at full current
4537 will not be possible.The condition persists until this flag
4538 is no longer set.</entry>
4539 </row>
4540 <row>
4541 <entry><constant>V4L2_FLASH_FAULT_LED_OVER_TEMPERATURE</constant></entry>
4542 <entry>The temperature of the LED has exceeded its
4543 allowed upper limit.</entry>
4544 </row>
4545 </tbody>
4546 </entrytbl>
4547 </row>
4548 <row>
4549 <entry spanname="id"><constant>V4L2_CID_FLASH_CHARGE</constant></entry>
4550 <entry>boolean</entry>
4551 </row>
4552 <row><entry spanname="descr">Enable or disable charging of the xenon
4553 flash capacitor.</entry>
4554 </row>
4555 <row>
4556 <entry spanname="id"><constant>V4L2_CID_FLASH_READY</constant></entry>
4557 <entry>boolean</entry>
4558 </row>
4559 <row>
4560 <entry spanname="descr">Is the flash ready to strobe?
4561 Xenon flashes require their capacitors charged before
4562 strobing. LED flashes often require a cooldown period
4563 after strobe during which another strobe will not be
4564 possible. This is a read-only control.</entry>
4565 </row>
4566 <row><entry></entry></row>
4567 </tbody>
4568 </tgroup>
4569 </table>
4570 </section>
4571 </section>
4572 </section>
4573
4574 <section id="jpeg-controls">
4575 <title>JPEG Control Reference</title>
4576 <para>The JPEG class includes controls for common features of JPEG
4577 encoders and decoders. Currently it includes features for codecs
4578 implementing progressive baseline DCT compression process with
4579 Huffman entrophy coding.</para>
4580 <table pgwide="1" frame="none" id="jpeg-control-id">
4581 <title>JPEG Control IDs</title>
4582
4583 <tgroup cols="4">
4584 <colspec colname="c1" colwidth="1*" />
4585 <colspec colname="c2" colwidth="6*" />
4586 <colspec colname="c3" colwidth="2*" />
4587 <colspec colname="c4" colwidth="6*" />
4588 <spanspec namest="c1" nameend="c2" spanname="id" />
4589 <spanspec namest="c2" nameend="c4" spanname="descr" />
4590 <thead>
4591 <row>
4592 <entry spanname="id" align="left">ID</entry>
4593 <entry align="left">Type</entry>
4594 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4595 </row>
4596 </thead>
4597 <tbody valign="top">
4598 <row><entry></entry></row>
4599 <row>
4600 <entry spanname="id"><constant>V4L2_CID_JPEG_CLASS</constant>&nbsp;</entry>
4601 <entry>class</entry>
4602 </row><row><entry spanname="descr">The JPEG class descriptor. Calling
4603 &VIDIOC-QUERYCTRL; for this control will return a description of this
4604 control class.
4605
4606 </entry>
4607 </row>
4608 <row>
4609 <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry>
4610 <entry>menu</entry>
4611 </row>
4612 <row id="v4l2-jpeg-chroma-subsampling">
4613 <entry spanname="descr">The chroma subsampling factors describe how
4614 each component of an input image is sampled, in respect to maximum
4615 sample rate in each spatial dimension. See <xref linkend="itu-t81"/>,
4616 clause A.1.1. for more details. The <constant>
4617 V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant> control determines how
4618 Cb and Cr components are downsampled after coverting an input image
4619 from RGB to Y'CbCr color space.
4620 </entry>
4621 </row>
4622 <row>
4623 <entrytbl spanname="descr" cols="2">
4624 <tbody valign="top">
4625 <row>
4626 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_444</constant>
4627 </entry><entry>No chroma subsampling, each pixel has
4628 Y, Cr and Cb values.</entry>
4629 </row>
4630 <row>
4631 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_422</constant>
4632 </entry><entry>Horizontally subsample Cr, Cb components
4633 by a factor of 2.</entry>
4634 </row>
4635 <row>
4636 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_420</constant>
4637 </entry><entry>Subsample Cr, Cb components horizontally
4638 and vertically by 2.</entry>
4639 </row>
4640 <row>
4641 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_411</constant>
4642 </entry><entry>Horizontally subsample Cr, Cb components
4643 by a factor of 4.</entry>
4644 </row>
4645 <row>
4646 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_410</constant>
4647 </entry><entry>Subsample Cr, Cb components horizontally
4648 by 4 and vertically by 2.</entry>
4649 </row>
4650 <row>
4651 <entry><constant>V4L2_JPEG_CHROMA_SUBSAMPLING_GRAY</constant>
4652 </entry><entry>Use only luminance component.</entry>
4653 </row>
4654 </tbody>
4655 </entrytbl>
4656 </row>
4657 <row>
4658 <entry spanname="id"><constant>V4L2_CID_JPEG_RESTART_INTERVAL</constant>
4659 </entry><entry>integer</entry>
4660 </row>
4661 <row><entry spanname="descr">
4662 The restart interval determines an interval of inserting RSTm
4663 markers (m = 0..7). The purpose of these markers is to additionally
4664 reinitialize the encoder process, in order to process blocks of
4665 an image independently.
4666 For the lossy compression processes the restart interval unit is
4667 MCU (Minimum Coded Unit) and its value is contained in DRI
4668 (Define Restart Interval) marker. If <constant>
4669 V4L2_CID_JPEG_RESTART_INTERVAL</constant> control is set to 0,
4670 DRI and RSTm markers will not be inserted.
4671 </entry>
4672 </row>
4673 <row id="jpeg-quality-control">
4674 <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></entry>
4675 <entry>integer</entry>
4676 </row>
4677 <row>
4678 <entry spanname="descr">
4679 <constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control
4680 determines trade-off between image quality and size.
4681 It provides simpler method for applications to control image quality,
4682 without a need for direct reconfiguration of luminance and chrominance
4683 quantization tables.
4684
4685 In cases where a driver uses quantization tables configured directly
4686 by an application, using interfaces defined elsewhere, <constant>
4687 V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control should be set
4688 by driver to 0.
4689
4690 <para>The value range of this control is driver-specific. Only
4691 positive, non-zero values are meaningful. The recommended range
4692 is 1 - 100, where larger values correspond to better image quality.
4693 </para>
4694 </entry>
4695 </row>
4696 <row id="jpeg-active-marker-control">
4697 <entry spanname="id"><constant>V4L2_CID_JPEG_ACTIVE_MARKER</constant></entry>
4698 <entry>bitmask</entry>
4699 </row>
4700 <row>
4701 <entry spanname="descr">Specify which JPEG markers are included
4702 in compressed stream. This control is valid only for encoders.
4703 </entry>
4704 </row>
4705 <row>
4706 <entrytbl spanname="descr" cols="2">
4707 <tbody valign="top">
4708 <row>
4709 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_APP0</constant></entry>
4710 <entry>Application data segment APP<subscript>0</subscript>.</entry>
4711 </row><row>
4712 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_APP1</constant></entry>
4713 <entry>Application data segment APP<subscript>1</subscript>.</entry>
4714 </row><row>
4715 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_COM</constant></entry>
4716 <entry>Comment segment.</entry>
4717 </row><row>
4718 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_DQT</constant></entry>
4719 <entry>Quantization tables segment.</entry>
4720 </row><row>
4721 <entry><constant>V4L2_JPEG_ACTIVE_MARKER_DHT</constant></entry>
4722 <entry>Huffman tables segment.</entry>
4723 </row>
4724 </tbody>
4725 </entrytbl>
4726 </row>
4727 <row><entry></entry></row>
4728 </tbody>
4729 </tgroup>
4730 </table>
4731 <para>For more details about JPEG specification, refer
4732 to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>,
4733 <xref linkend="w3c-jpeg-jfif"/>.</para>
4734 </section>
4735
4736 <section id="image-source-controls">
4737 <title>Image Source Control Reference</title>
4738
4739 <para>
4740 The Image Source control class is intended for low-level
4741 control of image source devices such as image sensors. The
4742 devices feature an analogue to digital converter and a bus
4743 transmitter to transmit the image data out of the device.
4744 </para>
4745
4746 <table pgwide="1" frame="none" id="image-source-control-id">
4747 <title>Image Source Control IDs</title>
4748
4749 <tgroup cols="4">
4750 <colspec colname="c1" colwidth="1*" />
4751 <colspec colname="c2" colwidth="6*" />
4752 <colspec colname="c3" colwidth="2*" />
4753 <colspec colname="c4" colwidth="6*" />
4754 <spanspec namest="c1" nameend="c2" spanname="id" />
4755 <spanspec namest="c2" nameend="c4" spanname="descr" />
4756 <thead>
4757 <row>
4758 <entry spanname="id" align="left">ID</entry>
4759 <entry align="left">Type</entry>
4760 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4761 </row>
4762 </thead>
4763 <tbody valign="top">
4764 <row><entry></entry></row>
4765 <row>
4766 <entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry>
4767 <entry>class</entry>
4768 </row>
4769 <row>
4770 <entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry>
4771 </row>
4772 <row>
4773 <entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry>
4774 <entry>integer</entry>
4775 </row>
4776 <row>
4777 <entry spanname="descr">Vertical blanking. The idle period
4778 after every frame during which no image data is produced.
4779 The unit of vertical blanking is a line. Every line has
4780 length of the image width plus horizontal blanking at the
4781 pixel rate defined by
4782 <constant>V4L2_CID_PIXEL_RATE</constant> control in the
4783 same sub-device.</entry>
4784 </row>
4785 <row>
4786 <entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry>
4787 <entry>integer</entry>
4788 </row>
4789 <row>
4790 <entry spanname="descr">Horizontal blanking. The idle
4791 period after every line of image data during which no
4792 image data is produced. The unit of horizontal blanking is
4793 pixels.</entry>
4794 </row>
4795 <row>
4796 <entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry>
4797 <entry>integer</entry>
4798 </row>
4799 <row>
4800 <entry spanname="descr">Analogue gain is gain affecting
4801 all colour components in the pixel matrix. The gain
4802 operation is performed in the analogue domain before A/D
4803 conversion.
4804 </entry>
4805 </row>
4806 <row>
4807 <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN_RED</constant></entry>
4808 <entry>integer</entry>
4809 </row>
4810 <row>
4811 <entry spanname="descr">Test pattern red colour component.
4812 </entry>
4813 </row>
4814 <row>
4815 <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN_GREENR</constant></entry>
4816 <entry>integer</entry>
4817 </row>
4818 <row>
4819 <entry spanname="descr">Test pattern green (next to red)
4820 colour component.
4821 </entry>
4822 </row>
4823 <row>
4824 <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN_BLUE</constant></entry>
4825 <entry>integer</entry>
4826 </row>
4827 <row>
4828 <entry spanname="descr">Test pattern blue colour component.
4829 </entry>
4830 </row>
4831 <row>
4832 <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN_GREENB</constant></entry>
4833 <entry>integer</entry>
4834 </row>
4835 <row>
4836 <entry spanname="descr">Test pattern green (next to blue)
4837 colour component.
4838 </entry>
4839 </row>
4840 <row><entry></entry></row>
4841 </tbody>
4842 </tgroup>
4843 </table>
4844
4845 </section>
4846
4847 <section id="image-process-controls">
4848 <title>Image Process Control Reference</title>
4849
4850 <para>
4851 The Image Process control class is intended for low-level control of
4852 image processing functions. Unlike
4853 <constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in
4854 this class affect processing the image, and do not control capturing
4855 of it.
4856 </para>
4857
4858 <table pgwide="1" frame="none" id="image-process-control-id">
4859 <title>Image Process Control IDs</title>
4860
4861 <tgroup cols="4">
4862 <colspec colname="c1" colwidth="1*" />
4863 <colspec colname="c2" colwidth="6*" />
4864 <colspec colname="c3" colwidth="2*" />
4865 <colspec colname="c4" colwidth="6*" />
4866 <spanspec namest="c1" nameend="c2" spanname="id" />
4867 <spanspec namest="c2" nameend="c4" spanname="descr" />
4868 <thead>
4869 <row>
4870 <entry spanname="id" align="left">ID</entry>
4871 <entry align="left">Type</entry>
4872 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4873 </row>
4874 </thead>
4875 <tbody valign="top">
4876 <row><entry></entry></row>
4877 <row>
4878 <entry spanname="id"><constant>V4L2_CID_IMAGE_PROC_CLASS</constant></entry>
4879 <entry>class</entry>
4880 </row>
4881 <row>
4882 <entry spanname="descr">The IMAGE_PROC class descriptor.</entry>
4883 </row>
4884 <row>
4885 <entry spanname="id"><constant>V4L2_CID_LINK_FREQ</constant></entry>
4886 <entry>integer menu</entry>
4887 </row>
4888 <row>
4889 <entry spanname="descr">Data bus frequency. Together with the
4890 media bus pixel code, bus type (clock cycles per sample), the
4891 data bus frequency defines the pixel rate
4892 (<constant>V4L2_CID_PIXEL_RATE</constant>) in the
4893 pixel array (or possibly elsewhere, if the device is not an
4894 image sensor). The frame rate can be calculated from the pixel
4895 clock, image width and height and horizontal and vertical
4896 blanking. While the pixel rate control may be defined elsewhere
4897 than in the subdev containing the pixel array, the frame rate
4898 cannot be obtained from that information. This is because only
4899 on the pixel array it can be assumed that the vertical and
4900 horizontal blanking information is exact: no other blanking is
4901 allowed in the pixel array. The selection of frame rate is
4902 performed by selecting the desired horizontal and vertical
4903 blanking. The unit of this control is Hz. </entry>
4904 </row>
4905 <row>
4906 <entry spanname="id"><constant>V4L2_CID_PIXEL_RATE</constant></entry>
4907 <entry>64-bit integer</entry>
4908 </row>
4909 <row>
4910 <entry spanname="descr">Pixel rate in the source pads of
4911 the subdev. This control is read-only and its unit is
4912 pixels / second.
4913 </entry>
4914 </row>
4915 <row>
4916 <entry spanname="id"><constant>V4L2_CID_TEST_PATTERN</constant></entry>
4917 <entry>menu</entry>
4918 </row>
4919 <row id="v4l2-test-pattern">
4920 <entry spanname="descr"> Some capture/display/sensor devices have
4921 the capability to generate test pattern images. These hardware
4922 specific test patterns can be used to test if a device is working
4923 properly.</entry>
4924 </row>
4925 <row><entry></entry></row>
4926 </tbody>
4927 </tgroup>
4928 </table>
4929
4930 </section>
4931
4932 <section id="dv-controls">
4933 <title>Digital Video Control Reference</title>
4934
4935 <para>
4936 The Digital Video control class is intended to control receivers
4937 and transmitters for <ulink url="http://en.wikipedia.org/wiki/Vga">VGA</ulink>,
4938 <ulink url="http://en.wikipedia.org/wiki/Digital_Visual_Interface">DVI</ulink>
4939 (Digital Visual Interface), HDMI (<xref linkend="hdmi" />) and DisplayPort (<xref linkend="dp" />).
4940 These controls are generally expected to be private to the receiver or transmitter
4941 subdevice that implements them, so they are only exposed on the
4942 <filename>/dev/v4l-subdev*</filename> device node.
4943 </para>
4944
4945 <para>Note that these devices can have multiple input or output pads which are
4946 hooked up to e.g. HDMI connectors. Even though the subdevice will receive or
4947 transmit video from/to only one of those pads, the other pads can still be
4948 active when it comes to EDID (Extended Display Identification Data,
4949 <xref linkend="vesaedid" />) and HDCP (High-bandwidth Digital Content
4950 Protection System, <xref linkend="hdcp" />) processing, allowing the device
4951 to do the fairly slow EDID/HDCP handling in advance. This allows for quick
4952 switching between connectors.</para>
4953
4954 <para>These pads appear in several of the controls in this section as
4955 bitmasks, one bit for each pad. Bit 0 corresponds to pad 0, bit 1 to pad 1,
4956 etc. The maximum value of the control is the set of valid pads.</para>
4957
4958 <table pgwide="1" frame="none" id="dv-control-id">
4959 <title>Digital Video Control IDs</title>
4960
4961 <tgroup cols="4">
4962 <colspec colname="c1" colwidth="1*" />
4963 <colspec colname="c2" colwidth="6*" />
4964 <colspec colname="c3" colwidth="2*" />
4965 <colspec colname="c4" colwidth="6*" />
4966 <spanspec namest="c1" nameend="c2" spanname="id" />
4967 <spanspec namest="c2" nameend="c4" spanname="descr" />
4968 <thead>
4969 <row>
4970 <entry spanname="id" align="left">ID</entry>
4971 <entry align="left">Type</entry>
4972 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4973 </row>
4974 </thead>
4975 <tbody valign="top">
4976 <row><entry></entry></row>
4977 <row>
4978 <entry spanname="id"><constant>V4L2_CID_DV_CLASS</constant></entry>
4979 <entry>class</entry>
4980 </row>
4981 <row>
4982 <entry spanname="descr">The Digital Video class descriptor.</entry>
4983 </row>
4984 <row>
4985 <entry spanname="id"><constant>V4L2_CID_DV_TX_HOTPLUG</constant></entry>
4986 <entry>bitmask</entry>
4987 </row>
4988 <row>
4989 <entry spanname="descr">Many connectors have a hotplug pin which is high
4990 if EDID information is available from the source. This control shows the
4991 state of the hotplug pin as seen by the transmitter.
4992 Each bit corresponds to an output pad on the transmitter. If an output pad
4993 does not have an associated hotplug pin, then the bit for that pad will be 0.
4994 This read-only control is applicable to DVI-D, HDMI and DisplayPort connectors.
4995 </entry>
4996 </row>
4997 <row>
4998 <entry spanname="id"><constant>V4L2_CID_DV_TX_RXSENSE</constant></entry>
4999 <entry>bitmask</entry>
5000 </row>
5001 <row>
5002 <entry spanname="descr">Rx Sense is the detection of pull-ups on the TMDS
5003 clock lines. This normally means that the sink has left/entered standby (i.e.
5004 the transmitter can sense that the receiver is ready to receive video).
5005 Each bit corresponds to an output pad on the transmitter. If an output pad
5006 does not have an associated Rx Sense, then the bit for that pad will be 0.
5007 This read-only control is applicable to DVI-D and HDMI devices.
5008 </entry>
5009 </row>
5010 <row>
5011 <entry spanname="id"><constant>V4L2_CID_DV_TX_EDID_PRESENT</constant></entry>
5012 <entry>bitmask</entry>
5013 </row>
5014 <row>
5015 <entry spanname="descr">When the transmitter sees the hotplug signal from the
5016 receiver it will attempt to read the EDID. If set, then the transmitter has read
5017 at least the first block (= 128 bytes).
5018 Each bit corresponds to an output pad on the transmitter. If an output pad
5019 does not support EDIDs, then the bit for that pad will be 0.
5020 This read-only control is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
5021 </entry>
5022 </row>
5023 <row>
5024 <entry spanname="id"><constant>V4L2_CID_DV_TX_MODE</constant></entry>
5025 <entry id="v4l2-dv-tx-mode">enum v4l2_dv_tx_mode</entry>
5026 </row>
5027 <row>
5028 <entry spanname="descr">HDMI transmitters can transmit in DVI-D mode (just video)
5029 or in HDMI mode (video + audio + auxiliary data). This control selects which mode
5030 to use: V4L2_DV_TX_MODE_DVI_D or V4L2_DV_TX_MODE_HDMI.
5031 This control is applicable to HDMI connectors.
5032 </entry>
5033 </row>
5034 <row>
5035 <entry spanname="id"><constant>V4L2_CID_DV_TX_RGB_RANGE</constant></entry>
5036 <entry id="v4l2-dv-rgb-range">enum v4l2_dv_rgb_range</entry>
5037 </row>
5038 <row>
5039 <entry spanname="descr">Select the quantization range for RGB output. V4L2_DV_RANGE_AUTO
5040 follows the RGB quantization range specified in the standard for the video interface
5041 (ie. <xref linkend="cea861" /> for HDMI). V4L2_DV_RANGE_LIMITED and V4L2_DV_RANGE_FULL override the standard
5042 to be compatible with sinks that have not implemented the standard correctly
5043 (unfortunately quite common for HDMI and DVI-D). Full range allows all possible values to be
5044 used whereas limited range sets the range to (16 &lt;&lt; (N-8)) - (235 &lt;&lt; (N-8))
5045 where N is the number of bits per component.
5046 This control is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
5047 </entry>
5048 </row>
5049 <row>
5050 <entry spanname="id"><constant>V4L2_CID_DV_TX_IT_CONTENT_TYPE</constant></entry>
5051 <entry id="v4l2-dv-content-type">enum v4l2_dv_it_content_type</entry>
5052 </row>
5053 <row><entry spanname="descr">Configures the IT Content Type
5054 of the transmitted video. This information is sent over HDMI and DisplayPort connectors
5055 as part of the AVI InfoFrame. The term 'IT Content' is used for content that originates
5056 from a computer as opposed to content from a TV broadcast or an analog source. The
5057 enum&nbsp;v4l2_dv_it_content_type defines the possible content types:</entry>
5058 </row>
5059 <row>
5060 <entrytbl spanname="descr" cols="2">
5061 <tbody valign="top">
5062 <row>
5063 <entry><constant>V4L2_DV_IT_CONTENT_TYPE_GRAPHICS</constant>&nbsp;</entry>
5064 <entry>Graphics content. Pixel data should be passed unfiltered and without
5065 analog reconstruction.</entry>
5066 </row>
5067 <row>
5068 <entry><constant>V4L2_DV_IT_CONTENT_TYPE_PHOTO</constant>&nbsp;</entry>
5069 <entry>Photo content. The content is derived from digital still pictures.
5070 The content should be passed through with minimal scaling and picture
5071 enhancements.</entry>
5072 </row>
5073 <row>
5074 <entry><constant>V4L2_DV_IT_CONTENT_TYPE_CINEMA</constant>&nbsp;</entry>
5075 <entry>Cinema content.</entry>
5076 </row>
5077 <row>
5078 <entry><constant>V4L2_DV_IT_CONTENT_TYPE_GAME</constant>&nbsp;</entry>
5079 <entry>Game content. Audio and video latency should be minimized.</entry>
5080 </row>
5081 <row>
5082 <entry><constant>V4L2_DV_IT_CONTENT_TYPE_NO_ITC</constant>&nbsp;</entry>
5083 <entry>No IT Content information is available and the ITC bit in the AVI
5084 InfoFrame is set to 0.</entry>
5085 </row>
5086 </tbody>
5087 </entrytbl>
5088 </row>
5089 <row>
5090 <entry spanname="id"><constant>V4L2_CID_DV_RX_POWER_PRESENT</constant></entry>
5091 <entry>bitmask</entry>
5092 </row>
5093 <row>
5094 <entry spanname="descr">Detects whether the receiver receives power from the source
5095 (e.g. HDMI carries 5V on one of the pins). This is often used to power an eeprom
5096 which contains EDID information, such that the source can read the EDID even if
5097 the sink is in standby/power off.
5098 Each bit corresponds to an input pad on the transmitter. If an input pad
5099 cannot detect whether power is present, then the bit for that pad will be 0.
5100 This read-only control is applicable to DVI-D, HDMI and DisplayPort connectors.
5101 </entry>
5102 </row>
5103 <row>
5104 <entry spanname="id"><constant>V4L2_CID_DV_RX_RGB_RANGE</constant></entry>
5105 <entry>enum v4l2_dv_rgb_range</entry>
5106 </row>
5107 <row>
5108 <entry spanname="descr">Select the quantization range for RGB input. V4L2_DV_RANGE_AUTO
5109 follows the RGB quantization range specified in the standard for the video interface
5110 (ie. <xref linkend="cea861" /> for HDMI). V4L2_DV_RANGE_LIMITED and V4L2_DV_RANGE_FULL override the standard
5111 to be compatible with sources that have not implemented the standard correctly
5112 (unfortunately quite common for HDMI and DVI-D). Full range allows all possible values to be
5113 used whereas limited range sets the range to (16 &lt;&lt; (N-8)) - (235 &lt;&lt; (N-8))
5114 where N is the number of bits per component.
5115 This control is applicable to VGA, DVI-A/D, HDMI and DisplayPort connectors.
5116 </entry>
5117 </row>
5118 <row>
5119 <entry spanname="id"><constant>V4L2_CID_DV_RX_IT_CONTENT_TYPE</constant></entry>
5120 <entry>enum v4l2_dv_it_content_type</entry>
5121 </row>
5122 <row><entry spanname="descr">Reads the IT Content Type
5123 of the received video. This information is sent over HDMI and DisplayPort connectors
5124 as part of the AVI InfoFrame. The term 'IT Content' is used for content that originates
5125 from a computer as opposed to content from a TV broadcast or an analog source. See
5126 <constant>V4L2_CID_DV_TX_IT_CONTENT_TYPE</constant> for the available content types.</entry>
5127 </row>
5128 <row><entry></entry></row>
5129 </tbody>
5130 </tgroup>
5131 </table>
5132
5133 </section>
5134
5135 <section id="fm-rx-controls">
5136 <title>FM Receiver Control Reference</title>
5137
5138 <para>The FM Receiver (FM_RX) class includes controls for common features of
5139 FM Reception capable devices.</para>
5140
5141 <table pgwide="1" frame="none" id="fm-rx-control-id">
5142 <title>FM_RX Control IDs</title>
5143
5144 <tgroup cols="4">
5145 <colspec colname="c1" colwidth="1*" />
5146 <colspec colname="c2" colwidth="6*" />
5147 <colspec colname="c3" colwidth="2*" />
5148 <colspec colname="c4" colwidth="6*" />
5149 <spanspec namest="c1" nameend="c2" spanname="id" />
5150 <spanspec namest="c2" nameend="c4" spanname="descr" />
5151 <thead>
5152 <row>
5153 <entry spanname="id" align="left">ID</entry>
5154 <entry align="left">Type</entry>
5155 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
5156 </row>
5157 </thead>
5158 <tbody valign="top">
5159 <row><entry></entry></row>
5160 <row>
5161 <entry spanname="id"><constant>V4L2_CID_FM_RX_CLASS</constant>&nbsp;</entry>
5162 <entry>class</entry>
5163 </row><row><entry spanname="descr">The FM_RX class
5164descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
5165description of this control class.</entry>
5166 </row>
5167 <row>
5168 <entry spanname="id"><constant>V4L2_CID_RDS_RECEPTION</constant>&nbsp;</entry>
5169 <entry>boolean</entry>
5170 </row><row><entry spanname="descr">Enables/disables RDS
5171 reception by the radio tuner</entry>
5172 </row>
5173 <row>
5174 <entry spanname="id"><constant>V4L2_CID_RDS_RX_PTY</constant>&nbsp;</entry>
5175 <entry>integer</entry>
5176 </row>
5177 <row><entry spanname="descr">Gets RDS Programme Type field.
5178This encodes up to 31 pre-defined programme types.</entry>
5179 </row>
5180 <row>
5181 <entry spanname="id"><constant>V4L2_CID_RDS_RX_PS_NAME</constant>&nbsp;</entry>
5182 <entry>string</entry>
5183 </row>
5184 <row><entry spanname="descr">Gets the Programme Service name (PS_NAME).
5185It is intended for static display on a receiver. It is the primary aid to listeners in programme service
5186identification and selection. In Annex E of <xref linkend="iec62106" />, the RDS specification,
5187there is a full description of the correct character encoding for Programme Service name strings.
5188Also from RDS specification, PS is usually a single eight character text. However, it is also possible
5189to find receivers which can scroll strings sized as 8 x N characters. So, this control must be configured
5190with steps of 8 characters. The result is it must always contain a string with size multiple of 8.</entry>
5191 </row>
5192 <row>
5193 <entry spanname="id"><constant>V4L2_CID_RDS_RX_RADIO_TEXT</constant>&nbsp;</entry>
5194 <entry>string</entry>
5195 </row>
5196 <row><entry spanname="descr">Gets the Radio Text info. It is a textual description of
5197what is being broadcasted. RDS Radio Text can be applied when broadcaster wishes to transmit longer PS names,
5198programme-related information or any other text. In these cases, RadioText can be used in addition to
5199<constant>V4L2_CID_RDS_RX_PS_NAME</constant>. The encoding for Radio Text strings is also fully described
5200in Annex E of <xref linkend="iec62106" />. The length of Radio Text strings depends on which RDS Block is being
5201used to transmit it, either 32 (2A block) or 64 (2B block). However, it is also possible
5202to find receivers which can scroll strings sized as 32 x N or 64 x N characters. So, this control must be configured
5203with steps of 32 or 64 characters. The result is it must always contain a string with size multiple of 32 or 64. </entry>
5204 </row>
5205 <row>
5206 <entry spanname="id"><constant>V4L2_CID_RDS_RX_TRAFFIC_ANNOUNCEMENT</constant>&nbsp;</entry>
5207 <entry>boolean</entry>
5208 </row>
5209 <row><entry spanname="descr">If set, then a traffic announcement is in progress.</entry>
5210 </row>
5211 <row>
5212 <entry spanname="id"><constant>V4L2_CID_RDS_RX_TRAFFIC_PROGRAM</constant>&nbsp;</entry>
5213 <entry>boolean</entry>
5214 </row>
5215 <row><entry spanname="descr">If set, then the tuned programme carries traffic announcements.</entry>
5216 </row>
5217 <row>
5218 <entry spanname="id"><constant>V4L2_CID_RDS_RX_MUSIC_SPEECH</constant>&nbsp;</entry>
5219 <entry>boolean</entry>
5220 </row>
5221 <row><entry spanname="descr">If set, then this channel broadcasts music. If cleared, then it
5222broadcasts speech. If the transmitter doesn't make this distinction, then it will be set.</entry>
5223 </row>
5224 <row>
5225 <entry spanname="id"><constant>V4L2_CID_TUNE_DEEMPHASIS</constant>&nbsp;</entry>
5226 <entry>enum v4l2_deemphasis</entry>
5227 </row>
5228 <row id="v4l2-deemphasis"><entry spanname="descr">Configures the de-emphasis value for reception.
5229A de-emphasis filter is applied to the broadcast to accentuate the high audio frequencies.
5230Depending on the region, a time constant of either 50 or 75 useconds is used. The enum&nbsp;v4l2_deemphasis
5231defines possible values for de-emphasis. Here they are:</entry>
5232 </row><row>
5233 <entrytbl spanname="descr" cols="2">
5234 <tbody valign="top">
5235 <row>
5236 <entry><constant>V4L2_DEEMPHASIS_DISABLED</constant>&nbsp;</entry>
5237 <entry>No de-emphasis is applied.</entry>
5238 </row>
5239 <row>
5240 <entry><constant>V4L2_DEEMPHASIS_50_uS</constant>&nbsp;</entry>
5241 <entry>A de-emphasis of 50 uS is used.</entry>
5242 </row>
5243 <row>
5244 <entry><constant>V4L2_DEEMPHASIS_75_uS</constant>&nbsp;</entry>
5245 <entry>A de-emphasis of 75 uS is used.</entry>
5246 </row>
5247 </tbody>
5248 </entrytbl>
5249
5250 </row>
5251 <row><entry></entry></row>
5252 </tbody>
5253 </tgroup>
5254 </table>
5255 </section>
5256
5257 <section id="detect-controls">
5258 <title>Detect Control Reference</title>
5259
5260 <para>The Detect class includes controls for common features of
5261 various motion or object detection capable devices.</para>
5262
5263 <table pgwide="1" frame="none" id="detect-control-id">
5264 <title>Detect Control IDs</title>
5265
5266 <tgroup cols="4">
5267 <colspec colname="c1" colwidth="1*" />
5268 <colspec colname="c2" colwidth="6*" />
5269 <colspec colname="c3" colwidth="2*" />
5270 <colspec colname="c4" colwidth="6*" />
5271 <spanspec namest="c1" nameend="c2" spanname="id" />
5272 <spanspec namest="c2" nameend="c4" spanname="descr" />
5273 <thead>
5274 <row>
5275 <entry spanname="id" align="left">ID</entry>
5276 <entry align="left">Type</entry>
5277 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
5278 </row>
5279 </thead>
5280 <tbody valign="top">
5281 <row><entry></entry></row>
5282 <row>
5283 <entry spanname="id"><constant>V4L2_CID_DETECT_CLASS</constant>&nbsp;</entry>
5284 <entry>class</entry>
5285 </row><row><entry spanname="descr">The Detect class
5286descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
5287description of this control class.</entry>
5288 </row>
5289 <row>
5290 <entry spanname="id"><constant>V4L2_CID_DETECT_MD_MODE</constant>&nbsp;</entry>
5291 <entry>menu</entry>
5292 </row><row><entry spanname="descr">Sets the motion detection mode.</entry>
5293 </row>
5294 <row>
5295 <entrytbl spanname="descr" cols="2">
5296 <tbody valign="top">
5297 <row>
5298 <entry><constant>V4L2_DETECT_MD_MODE_DISABLED</constant>
5299 </entry><entry>Disable motion detection.</entry>
5300 </row>
5301 <row>
5302 <entry><constant>V4L2_DETECT_MD_MODE_GLOBAL</constant>
5303 </entry><entry>Use a single motion detection threshold.</entry>
5304 </row>
5305 <row>
5306 <entry><constant>V4L2_DETECT_MD_MODE_THRESHOLD_GRID</constant>
5307 </entry><entry>The image is divided into a grid, each cell with its own
5308 motion detection threshold. These thresholds are set through the
5309 <constant>V4L2_CID_DETECT_MD_THRESHOLD_GRID</constant> matrix control.</entry>
5310 </row>
5311 <row>
5312 <entry><constant>V4L2_DETECT_MD_MODE_REGION_GRID</constant>
5313 </entry><entry>The image is divided into a grid, each cell with its own
5314 region value that specifies which per-region motion detection thresholds
5315 should be used. Each region has its own thresholds. How these per-region
5316 thresholds are set up is driver-specific. The region values for the grid are set
5317 through the <constant>V4L2_CID_DETECT_MD_REGION_GRID</constant> matrix
5318 control.</entry>
5319 </row>
5320 </tbody>
5321 </entrytbl>
5322 </row>
5323 <row>
5324 <entry spanname="id"><constant>V4L2_CID_DETECT_MD_GLOBAL_THRESHOLD</constant>&nbsp;</entry>
5325 <entry>integer</entry>
5326 </row>
5327 <row><entry spanname="descr">Sets the global motion detection threshold to be
5328 used with the <constant>V4L2_DETECT_MD_MODE_GLOBAL</constant> motion detection mode.</entry>
5329 </row>
5330 <row>
5331 <entry spanname="id"><constant>V4L2_CID_DETECT_MD_THRESHOLD_GRID</constant>&nbsp;</entry>
5332 <entry>__u16 matrix</entry>
5333 </row>
5334 <row><entry spanname="descr">Sets the motion detection thresholds for each cell in the grid.
5335 To be used with the <constant>V4L2_DETECT_MD_MODE_THRESHOLD_GRID</constant>
5336 motion detection mode. Matrix element (0, 0) represents the cell at the top-left of the
5337 grid.</entry>
5338 </row>
5339 <row>
5340 <entry spanname="id"><constant>V4L2_CID_DETECT_MD_REGION_GRID</constant>&nbsp;</entry>
5341 <entry>__u8 matrix</entry>
5342 </row>
5343 <row><entry spanname="descr">Sets the motion detection region value for each cell in the grid.
5344 To be used with the <constant>V4L2_DETECT_MD_MODE_REGION_GRID</constant>
5345 motion detection mode. Matrix element (0, 0) represents the cell at the top-left of the
5346 grid.</entry>
5347 </row>
5348 </tbody>
5349 </tgroup>
5350 </table>
5351
5352 </section>
5353
5354 <section id="rf-tuner-controls">
5355 <title>RF Tuner Control Reference</title>
5356
5357 <para>
5358The RF Tuner (RF_TUNER) class includes controls for common features of devices
5359having RF tuner.
5360 </para>
5361 <para>
5362In this context, RF tuner is radio receiver circuit between antenna and
5363demodulator. It receives radio frequency (RF) from the antenna and converts that
5364received signal to lower intermediate frequency (IF) or baseband frequency (BB).
5365Tuners that could do baseband output are often called Zero-IF tuners. Older
5366tuners were typically simple PLL tuners inside a metal box, whilst newer ones
5367are highly integrated chips without a metal box "silicon tuners". These controls
5368are mostly applicable for new feature rich silicon tuners, just because older
5369tuners does not have much adjustable features.
5370 </para>
5371 <para>
5372For more information about RF tuners see
5373<ulink url="http://en.wikipedia.org/wiki/Tuner_%28radio%29">Tuner (radio)</ulink>
5374and
5375<ulink url="http://en.wikipedia.org/wiki/RF_front_end">RF front end</ulink>
5376from Wikipedia.
5377 </para>
5378
5379 <table pgwide="1" frame="none" id="rf-tuner-control-id">
5380 <title>RF_TUNER Control IDs</title>
5381
5382 <tgroup cols="4">
5383 <colspec colname="c1" colwidth="1*" />
5384 <colspec colname="c2" colwidth="6*" />
5385 <colspec colname="c3" colwidth="2*" />
5386 <colspec colname="c4" colwidth="6*" />
5387 <spanspec namest="c1" nameend="c2" spanname="id" />
5388 <spanspec namest="c2" nameend="c4" spanname="descr" />
5389 <thead>
5390 <row>
5391 <entry spanname="id" align="left">ID</entry>
5392 <entry align="left">Type</entry>
5393 </row>
5394 <row rowsep="1">
5395 <entry spanname="descr" align="left">Description</entry>
5396 </row>
5397 </thead>
5398 <tbody valign="top">
5399 <row><entry></entry></row>
5400 <row>
5401 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_CLASS</constant>&nbsp;</entry>
5402 <entry>class</entry>
5403 </row><row><entry spanname="descr">The RF_TUNER class
5404descriptor. Calling &VIDIOC-QUERYCTRL; for this control will return a
5405description of this control class.</entry>
5406 </row>
5407 <row>
5408 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_BANDWIDTH_AUTO</constant>&nbsp;</entry>
5409 <entry>boolean</entry>
5410 </row>
5411 <row>
5412 <entry spanname="descr">Enables/disables tuner radio channel
5413bandwidth configuration. In automatic mode bandwidth configuration is performed
5414by the driver.</entry>
5415 </row>
5416 <row>
5417 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_BANDWIDTH</constant>&nbsp;</entry>
5418 <entry>integer</entry>
5419 </row>
5420 <row>
5421 <entry spanname="descr">Filter(s) on tuner signal path are used to
5422filter signal according to receiving party needs. Driver configures filters to
5423fulfill desired bandwidth requirement. Used when V4L2_CID_RF_TUNER_BANDWIDTH_AUTO is not
5424set. Unit is in Hz. The range and step are driver-specific.</entry>
5425 </row>
5426 <row>
5427 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_LNA_GAIN_AUTO</constant>&nbsp;</entry>
5428 <entry>boolean</entry>
5429 </row>
5430 <row>
5431 <entry spanname="descr">Enables/disables LNA automatic gain control (AGC)</entry>
5432 </row>
5433 <row>
5434 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO</constant>&nbsp;</entry>
5435 <entry>boolean</entry>
5436 </row>
5437 <row>
5438 <entry spanname="descr">Enables/disables mixer automatic gain control (AGC)</entry>
5439 </row>
5440 <row>
5441 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_IF_GAIN_AUTO</constant>&nbsp;</entry>
5442 <entry>boolean</entry>
5443 </row>
5444 <row>
5445 <entry spanname="descr">Enables/disables IF automatic gain control (AGC)</entry>
5446 </row>
5447 <row>
5448 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_RF_GAIN</constant>&nbsp;</entry>
5449 <entry>integer</entry>
5450 </row>
5451 <row>
5452 <entry spanname="descr">The RF amplifier is the very first
5453amplifier on the receiver signal path, just right after the antenna input.
5454The difference between the LNA gain and the RF gain in this document is that
5455the LNA gain is integrated in the tuner chip while the RF gain is a separate
5456chip. There may be both RF and LNA gain controls in the same device.
5457The range and step are driver-specific.</entry>
5458 </row>
5459 <row>
5460 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_LNA_GAIN</constant>&nbsp;</entry>
5461 <entry>integer</entry>
5462 </row>
5463 <row>
5464 <entry spanname="descr">LNA (low noise amplifier) gain is first
5465gain stage on the RF tuner signal path. It is located very close to tuner
5466antenna input. Used when <constant>V4L2_CID_RF_TUNER_LNA_GAIN_AUTO</constant> is not set.
5467See <constant>V4L2_CID_RF_TUNER_RF_GAIN</constant> to understand how RF gain
5468and LNA gain differs from the each others.
5469The range and step are driver-specific.</entry>
5470 </row>
5471 <row>
5472 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_MIXER_GAIN</constant>&nbsp;</entry>
5473 <entry>integer</entry>
5474 </row>
5475 <row>
5476 <entry spanname="descr">Mixer gain is second gain stage on the RF
5477tuner signal path. It is located inside mixer block, where RF signal is
5478down-converted by the mixer. Used when <constant>V4L2_CID_RF_TUNER_MIXER_GAIN_AUTO</constant>
5479is not set. The range and step are driver-specific.</entry>
5480 </row>
5481 <row>
5482 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_IF_GAIN</constant>&nbsp;</entry>
5483 <entry>integer</entry>
5484 </row>
5485 <row>
5486 <entry spanname="descr">IF gain is last gain stage on the RF tuner
5487signal path. It is located on output of RF tuner. It controls signal level of
5488intermediate frequency output or baseband output. Used when
5489<constant>V4L2_CID_RF_TUNER_IF_GAIN_AUTO</constant> is not set. The range and step are
5490driver-specific.</entry>
5491 </row>
5492 <row>
5493 <entry spanname="id"><constant>V4L2_CID_RF_TUNER_PLL_LOCK</constant>&nbsp;</entry>
5494 <entry>boolean</entry>
5495 </row>
5496 <row>
5497 <entry spanname="descr">Is synthesizer PLL locked? RF tuner is
5498receiving given frequency when that control is set. This is a read-only control.
5499</entry>
5500 </row>
5501 </tbody>
5502 </tgroup>
5503 </table>
5504 </section>
5505</section>
diff --git a/Documentation/DocBook/media/v4l/crop.pdf b/Documentation/DocBook/media/v4l/crop.pdf
deleted file mode 100644
index c9fb81cd32f3..000000000000
--- a/Documentation/DocBook/media/v4l/crop.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/dev-capture.xml b/Documentation/DocBook/media/v4l/dev-capture.xml
deleted file mode 100644
index e1c5f9406d6a..000000000000
--- a/Documentation/DocBook/media/v4l/dev-capture.xml
+++ /dev/null
@@ -1,110 +0,0 @@
1 <title>Video Capture Interface</title>
2
3 <para>Video capture devices sample an analog video signal and store
4the digitized images in memory. Today nearly all devices can capture
5at full 25 or 30 frames/second. With this interface applications can
6control the capture process and move images from the driver into user
7space.</para>
8
9 <para>Conventionally V4L2 video capture devices are accessed through
10character device special files named <filename>/dev/video</filename>
11and <filename>/dev/video0</filename> to
12<filename>/dev/video63</filename> with major number 81 and minor
13numbers 0 to 63. <filename>/dev/video</filename> is typically a
14symbolic link to the preferred video device. Note the same device
15files are used for video output devices.</para>
16
17 <section>
18 <title>Querying Capabilities</title>
19
20 <para>Devices supporting the video capture interface set the
21<constant>V4L2_CAP_VIDEO_CAPTURE</constant> or
22<constant>V4L2_CAP_VIDEO_CAPTURE_MPLANE</constant> flag in the
23<structfield>capabilities</structfield> field of &v4l2-capability;
24returned by the &VIDIOC-QUERYCAP; ioctl. As secondary device functions
25they may also support the <link linkend="overlay">video overlay</link>
26(<constant>V4L2_CAP_VIDEO_OVERLAY</constant>) and the <link
27linkend="raw-vbi">raw VBI capture</link>
28(<constant>V4L2_CAP_VBI_CAPTURE</constant>) interface. At least one of
29the read/write or streaming I/O methods must be supported. Tuners and
30audio inputs are optional.</para>
31 </section>
32
33 <section>
34 <title>Supplemental Functions</title>
35
36 <para>Video capture devices shall support <link
37linkend="audio">audio input</link>, <link
38linkend="tuner">tuner</link>, <link linkend="control">controls</link>,
39<link linkend="crop">cropping and scaling</link> and <link
40linkend="streaming-par">streaming parameter</link> ioctls as needed.
41The <link linkend="video">video input</link> and <link
42linkend="standard">video standard</link> ioctls must be supported by
43all video capture devices.</para>
44 </section>
45
46 <section>
47 <title>Image Format Negotiation</title>
48
49 <para>The result of a capture operation is determined by
50cropping and image format parameters. The former select an area of the
51video picture to capture, the latter how images are stored in memory,
52&ie; in RGB or YUV format, the number of bits per pixel or width and
53height. Together they also define how images are scaled in the
54process.</para>
55
56 <para>As usual these parameters are <emphasis>not</emphasis> reset
57at &func-open; time to permit Unix tool chains, programming a device
58and then reading from it as if it was a plain file. Well written V4L2
59applications ensure they really get what they want, including cropping
60and scaling.</para>
61
62 <para>Cropping initialization at minimum requires to reset the
63parameters to defaults. An example is given in <xref
64linkend="crop" />.</para>
65
66 <para>To query the current image format applications set the
67<structfield>type</structfield> field of a &v4l2-format; to
68<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> or
69<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant> and call the
70&VIDIOC-G-FMT; ioctl with a pointer to this structure. Drivers fill
71the &v4l2-pix-format; <structfield>pix</structfield> or the
72&v4l2-pix-format-mplane; <structfield>pix_mp</structfield> member of the
73<structfield>fmt</structfield> union.</para>
74
75 <para>To request different parameters applications set the
76<structfield>type</structfield> field of a &v4l2-format; as above and
77initialize all fields of the &v4l2-pix-format;
78<structfield>vbi</structfield> member of the
79<structfield>fmt</structfield> union, or better just modify the
80results of <constant>VIDIOC_G_FMT</constant>, and call the
81&VIDIOC-S-FMT; ioctl with a pointer to this structure. Drivers may
82adjust the parameters and finally return the actual parameters as
83<constant>VIDIOC_G_FMT</constant> does.</para>
84
85 <para>Like <constant>VIDIOC_S_FMT</constant> the
86&VIDIOC-TRY-FMT; ioctl can be used to learn about hardware limitations
87without disabling I/O or possibly time consuming hardware
88preparations.</para>
89
90 <para>The contents of &v4l2-pix-format; and &v4l2-pix-format-mplane;
91are discussed in <xref linkend="pixfmt" />. See also the specification of the
92<constant>VIDIOC_G_FMT</constant>, <constant>VIDIOC_S_FMT</constant>
93and <constant>VIDIOC_TRY_FMT</constant> ioctls for details. Video
94capture devices must implement both the
95<constant>VIDIOC_G_FMT</constant> and
96<constant>VIDIOC_S_FMT</constant> ioctl, even if
97<constant>VIDIOC_S_FMT</constant> ignores all requests and always
98returns default parameters as <constant>VIDIOC_G_FMT</constant> does.
99<constant>VIDIOC_TRY_FMT</constant> is optional.</para>
100 </section>
101
102 <section>
103 <title>Reading Images</title>
104
105 <para>A video capture device may support the <link
106linkend="rw">read() function</link> and/or streaming (<link
107linkend="mmap">memory mapping</link> or <link
108linkend="userp">user pointer</link>) I/O. See <xref
109linkend="io" /> for details.</para>
110 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-codec.xml b/Documentation/DocBook/media/v4l/dev-codec.xml
deleted file mode 100644
index ff44c16fc080..000000000000
--- a/Documentation/DocBook/media/v4l/dev-codec.xml
+++ /dev/null
@@ -1,27 +0,0 @@
1 <title>Codec Interface</title>
2
3 <para>A V4L2 codec can compress, decompress, transform, or otherwise
4convert video data from one format into another format, in memory. Typically
5such devices are memory-to-memory devices (i.e. devices with the
6<constant>V4L2_CAP_VIDEO_M2M</constant> or <constant>V4L2_CAP_VIDEO_M2M_MPLANE</constant>
7capability set).
8</para>
9
10 <para>A memory-to-memory video node acts just like a normal video node, but it
11supports both output (sending frames from memory to the codec hardware) and
12capture (receiving the processed frames from the codec hardware into memory)
13stream I/O. An application will have to setup the stream
14I/O for both sides and finally call &VIDIOC-STREAMON; for both capture and output
15to start the codec.</para>
16
17 <para>Video compression codecs use the MPEG controls to setup their codec parameters
18(note that the MPEG controls actually support many more codecs than just MPEG).
19See <xref linkend="mpeg-controls"></xref>.</para>
20
21 <para>Memory-to-memory devices can often be used as a shared resource: you can
22open the video node multiple times, each application setting up their own codec properties
23that are local to the file handle, and each can use it independently from the others.
24The driver will arbitrate access to the codec and reprogram it whenever another file
25handler gets access. This is different from the usual video node behavior where the video properties
26are global to the device (i.e. changing something through one file handle is visible
27through another file handle).</para>
diff --git a/Documentation/DocBook/media/v4l/dev-effect.xml b/Documentation/DocBook/media/v4l/dev-effect.xml
deleted file mode 100644
index 2350a67c0710..000000000000
--- a/Documentation/DocBook/media/v4l/dev-effect.xml
+++ /dev/null
@@ -1,17 +0,0 @@
1 <title>Effect Devices Interface</title>
2
3 <note>
4 <title>Suspended</title>
5
6 <para>This interface has been be suspended from the V4L2 API
7implemented in Linux 2.6 until we have more experience with effect
8device interfaces.</para>
9 </note>
10
11 <para>A V4L2 video effect device can do image effects, filtering, or
12combine two or more images or image streams. For example video
13transitions or wipes. Applications send data to be processed and
14receive the result data either with &func-read; and &func-write;
15functions, or through the streaming I/O mechanism.</para>
16
17 <para>[to do]</para>
diff --git a/Documentation/DocBook/media/v4l/dev-event.xml b/Documentation/DocBook/media/v4l/dev-event.xml
deleted file mode 100644
index 19f4becfae34..000000000000
--- a/Documentation/DocBook/media/v4l/dev-event.xml
+++ /dev/null
@@ -1,43 +0,0 @@
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/media/v4l/dev-osd.xml b/Documentation/DocBook/media/v4l/dev-osd.xml
deleted file mode 100644
index 54853329140b..000000000000
--- a/Documentation/DocBook/media/v4l/dev-osd.xml
+++ /dev/null
@@ -1,149 +0,0 @@
1 <title>Video Output Overlay Interface</title>
2 <subtitle>Also known as On-Screen Display (OSD)</subtitle>
3
4 <para>Some video output devices can overlay a framebuffer image onto
5the outgoing video signal. Applications can set up such an overlay
6using this interface, which borrows structures and ioctls of the <link
7linkend="overlay">Video Overlay</link> interface.</para>
8
9 <para>The OSD function is accessible through the same character
10special file as the <link linkend="capture">Video Output</link> function.
11Note the default function of such a <filename>/dev/video</filename> device
12is video capturing or output. The OSD function is only available after
13calling the &VIDIOC-S-FMT; ioctl.</para>
14
15 <section>
16 <title>Querying Capabilities</title>
17
18 <para>Devices supporting the <wordasword>Video Output
19Overlay</wordasword> interface set the
20<constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant> flag in the
21<structfield>capabilities</structfield> field of &v4l2-capability;
22returned by the &VIDIOC-QUERYCAP; ioctl.</para>
23 </section>
24
25 <section>
26 <title>Framebuffer</title>
27
28 <para>Contrary to the <wordasword>Video Overlay</wordasword>
29interface the framebuffer is normally implemented on the TV card and
30not the graphics card. On Linux it is accessible as a framebuffer
31device (<filename>/dev/fbN</filename>). Given a V4L2 device,
32applications can find the corresponding framebuffer device by calling
33the &VIDIOC-G-FBUF; ioctl. It returns, amongst other information, the
34physical address of the framebuffer in the
35<structfield>base</structfield> field of &v4l2-framebuffer;. The
36framebuffer device ioctl <constant>FBIOGET_FSCREENINFO</constant>
37returns the same address in the <structfield>smem_start</structfield>
38field of struct <structname>fb_fix_screeninfo</structname>. The
39<constant>FBIOGET_FSCREENINFO</constant> ioctl and struct
40<structname>fb_fix_screeninfo</structname> are defined in the
41<filename>linux/fb.h</filename> header file.</para>
42
43 <para>The width and height of the framebuffer depends on the
44current video standard. A V4L2 driver may reject attempts to change
45the video standard (or any other ioctl which would imply a framebuffer
46size change) with an &EBUSY; until all applications closed the
47framebuffer device.</para>
48
49 <example>
50 <title>Finding a framebuffer device for OSD</title>
51
52 <programlisting>
53#include &lt;linux/fb.h&gt;
54
55&v4l2-framebuffer; fbuf;
56unsigned int i;
57int fb_fd;
58
59if (-1 == ioctl(fd, VIDIOC_G_FBUF, &amp;fbuf)) {
60 perror("VIDIOC_G_FBUF");
61 exit(EXIT_FAILURE);
62}
63
64for (i = 0; i &lt; 30; i++) {
65 char dev_name[16];
66 struct fb_fix_screeninfo si;
67
68 snprintf(dev_name, sizeof(dev_name), "/dev/fb%u", i);
69
70 fb_fd = open(dev_name, O_RDWR);
71 if (-1 == fb_fd) {
72 switch (errno) {
73 case ENOENT: /* no such file */
74 case ENXIO: /* no driver */
75 continue;
76
77 default:
78 perror("open");
79 exit(EXIT_FAILURE);
80 }
81 }
82
83 if (0 == ioctl(fb_fd, FBIOGET_FSCREENINFO, &amp;si)) {
84 if (si.smem_start == (unsigned long)fbuf.base)
85 break;
86 } else {
87 /* Apparently not a framebuffer device. */
88 }
89
90 close(fb_fd);
91 fb_fd = -1;
92}
93
94/* fb_fd is the file descriptor of the framebuffer device
95 for the video output overlay, or -1 if no device was found. */
96</programlisting>
97 </example>
98 </section>
99
100 <section>
101 <title>Overlay Window and Scaling</title>
102
103 <para>The overlay is controlled by source and target rectangles.
104The source rectangle selects a subsection of the framebuffer image to
105be overlaid, the target rectangle an area in the outgoing video signal
106where the image will appear. Drivers may or may not support scaling,
107and arbitrary sizes and positions of these rectangles. Further drivers
108may support any (or none) of the clipping/blending methods defined for
109the <link linkend="overlay">Video Overlay</link> interface.</para>
110
111 <para>A &v4l2-window; defines the size of the source rectangle,
112its position in the framebuffer and the clipping/blending method to be
113used for the overlay. To get the current parameters applications set
114the <structfield>type</structfield> field of a &v4l2-format; to
115<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant> and call the
116&VIDIOC-G-FMT; ioctl. The driver fills the
117<structname>v4l2_window</structname> substructure named
118<structfield>win</structfield>. It is not possible to retrieve a
119previously programmed clipping list or bitmap.</para>
120
121 <para>To program the source rectangle applications set the
122<structfield>type</structfield> field of a &v4l2-format; to
123<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant>, initialize
124the <structfield>win</structfield> substructure and call the
125&VIDIOC-S-FMT; ioctl. The driver adjusts the parameters against
126hardware limits and returns the actual parameters as
127<constant>VIDIOC_G_FMT</constant> does. Like
128<constant>VIDIOC_S_FMT</constant>, the &VIDIOC-TRY-FMT; ioctl can be
129used to learn about driver capabilities without actually changing
130driver state. Unlike <constant>VIDIOC_S_FMT</constant> this also works
131after the overlay has been enabled.</para>
132
133 <para>A &v4l2-crop; defines the size and position of the target
134rectangle. The scaling factor of the overlay is implied by the width
135and height given in &v4l2-window; and &v4l2-crop;. The cropping API
136applies to <wordasword>Video Output</wordasword> and <wordasword>Video
137Output Overlay</wordasword> devices in the same way as to
138<wordasword>Video Capture</wordasword> and <wordasword>Video
139Overlay</wordasword> devices, merely reversing the direction of the
140data flow. For more information see <xref linkend="crop" />.</para>
141 </section>
142
143 <section>
144 <title>Enabling Overlay</title>
145
146 <para>There is no V4L2 ioctl to enable or disable the overlay,
147however the framebuffer interface of the driver may support the
148<constant>FBIOBLANK</constant> ioctl.</para>
149 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-output.xml b/Documentation/DocBook/media/v4l/dev-output.xml
deleted file mode 100644
index 9130a3dc7880..000000000000
--- a/Documentation/DocBook/media/v4l/dev-output.xml
+++ /dev/null
@@ -1,106 +0,0 @@
1 <title>Video Output Interface</title>
2
3 <para>Video output devices encode stills or image sequences as
4analog video signal. With this interface applications can
5control the encoding process and move images from user space to
6the driver.</para>
7
8 <para>Conventionally V4L2 video output devices are accessed through
9character device special files named <filename>/dev/video</filename>
10and <filename>/dev/video0</filename> to
11<filename>/dev/video63</filename> with major number 81 and minor
12numbers 0 to 63. <filename>/dev/video</filename> is typically a
13symbolic link to the preferred video device. Note the same device
14files are used for video capture devices.</para>
15
16 <section>
17 <title>Querying Capabilities</title>
18
19 <para>Devices supporting the video output interface set the
20<constant>V4L2_CAP_VIDEO_OUTPUT</constant> or
21<constant>V4L2_CAP_VIDEO_OUTPUT_MPLANE</constant> flag in the
22<structfield>capabilities</structfield> field of &v4l2-capability;
23returned by the &VIDIOC-QUERYCAP; ioctl. As secondary device functions
24they may also support the <link linkend="raw-vbi">raw VBI
25output</link> (<constant>V4L2_CAP_VBI_OUTPUT</constant>) interface. At
26least one of the read/write or streaming I/O methods must be
27supported. Modulators and audio outputs are optional.</para>
28 </section>
29
30 <section>
31 <title>Supplemental Functions</title>
32
33 <para>Video output devices shall support <link
34linkend="audio">audio output</link>, <link
35linkend="tuner">modulator</link>, <link linkend="control">controls</link>,
36<link linkend="crop">cropping and scaling</link> and <link
37linkend="streaming-par">streaming parameter</link> ioctls as needed.
38The <link linkend="video">video output</link> and <link
39linkend="standard">video standard</link> ioctls must be supported by
40all video output devices.</para>
41 </section>
42
43 <section>
44 <title>Image Format Negotiation</title>
45
46 <para>The output is determined by cropping and image format
47parameters. The former select an area of the video picture where the
48image will appear, the latter how images are stored in memory, &ie; in
49RGB or YUV format, the number of bits per pixel or width and height.
50Together they also define how images are scaled in the process.</para>
51
52 <para>As usual these parameters are <emphasis>not</emphasis> reset
53at &func-open; time to permit Unix tool chains, programming a device
54and then writing to it as if it was a plain file. Well written V4L2
55applications ensure they really get what they want, including cropping
56and scaling.</para>
57
58 <para>Cropping initialization at minimum requires to reset the
59parameters to defaults. An example is given in <xref
60linkend="crop" />.</para>
61
62 <para>To query the current image format applications set the
63<structfield>type</structfield> field of a &v4l2-format; to
64<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> or
65<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and call the
66&VIDIOC-G-FMT; ioctl with a pointer to this structure. Drivers fill
67the &v4l2-pix-format; <structfield>pix</structfield> or the
68&v4l2-pix-format-mplane; <structfield>pix_mp</structfield> member of the
69<structfield>fmt</structfield> union.</para>
70
71 <para>To request different parameters applications set the
72<structfield>type</structfield> field of a &v4l2-format; as above and
73initialize all fields of the &v4l2-pix-format;
74<structfield>vbi</structfield> member of the
75<structfield>fmt</structfield> union, or better just modify the
76results of <constant>VIDIOC_G_FMT</constant>, and call the
77&VIDIOC-S-FMT; ioctl with a pointer to this structure. Drivers may
78adjust the parameters and finally return the actual parameters as
79<constant>VIDIOC_G_FMT</constant> does.</para>
80
81 <para>Like <constant>VIDIOC_S_FMT</constant> the
82&VIDIOC-TRY-FMT; ioctl can be used to learn about hardware limitations
83without disabling I/O or possibly time consuming hardware
84preparations.</para>
85
86 <para>The contents of &v4l2-pix-format; and &v4l2-pix-format-mplane;
87are discussed in <xref linkend="pixfmt" />. See also the specification of the
88<constant>VIDIOC_G_FMT</constant>, <constant>VIDIOC_S_FMT</constant>
89and <constant>VIDIOC_TRY_FMT</constant> ioctls for details. Video
90output devices must implement both the
91<constant>VIDIOC_G_FMT</constant> and
92<constant>VIDIOC_S_FMT</constant> ioctl, even if
93<constant>VIDIOC_S_FMT</constant> ignores all requests and always
94returns default parameters as <constant>VIDIOC_G_FMT</constant> does.
95<constant>VIDIOC_TRY_FMT</constant> is optional.</para>
96 </section>
97
98 <section>
99 <title>Writing Images</title>
100
101 <para>A video output device may support the <link
102linkend="rw">write() function</link> and/or streaming (<link
103linkend="mmap">memory mapping</link> or <link
104linkend="userp">user pointer</link>) I/O. See <xref
105linkend="io" /> for details.</para>
106 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-overlay.xml b/Documentation/DocBook/media/v4l/dev-overlay.xml
deleted file mode 100644
index cc6e0c5c960c..000000000000
--- a/Documentation/DocBook/media/v4l/dev-overlay.xml
+++ /dev/null
@@ -1,368 +0,0 @@
1 <title>Video Overlay Interface</title>
2 <subtitle>Also known as Framebuffer Overlay or Previewing</subtitle>
3
4 <para>Video overlay devices have the ability to genlock (TV-)video
5into the (VGA-)video signal of a graphics card, or to store captured
6images directly in video memory of a graphics card, typically with
7clipping. This can be considerable more efficient than capturing
8images and displaying them by other means. In the old days when only
9nuclear power plants needed cooling towers this used to be the only
10way to put live video into a window.</para>
11
12 <para>Video overlay devices are accessed through the same character
13special files as <link linkend="capture">video capture</link> devices.
14Note the default function of a <filename>/dev/video</filename> device
15is video capturing. The overlay function is only available after
16calling the &VIDIOC-S-FMT; ioctl.</para>
17
18 <para>The driver may support simultaneous overlay and capturing
19using the read/write and streaming I/O methods. If so, operation at
20the nominal frame rate of the video standard is not guaranteed. Frames
21may be directed away from overlay to capture, or one field may be used
22for overlay and the other for capture if the capture parameters permit
23this.</para>
24
25 <para>Applications should use different file descriptors for
26capturing and overlay. This must be supported by all drivers capable
27of simultaneous capturing and overlay. Optionally these drivers may
28also permit capturing and overlay with a single file descriptor for
29compatibility with V4L and earlier versions of V4L2.<footnote>
30 <para>A common application of two file descriptors is the
31XFree86 <link linkend="xvideo">Xv/V4L</link> interface driver and
32a V4L2 application. While the X server controls video overlay, the
33application can take advantage of memory mapping and DMA.</para>
34 <para>In the opinion of the designers of this API, no driver
35writer taking the efforts to support simultaneous capturing and
36overlay will restrict this ability by requiring a single file
37descriptor, as in V4L and earlier versions of V4L2. Making this
38optional means applications depending on two file descriptors need
39backup routines to be compatible with all drivers, which is
40considerable more work than using two fds in applications which do
41not. Also two fd's fit the general concept of one file descriptor for
42each logical stream. Hence as a complexity trade-off drivers
43<emphasis>must</emphasis> support two file descriptors and
44<emphasis>may</emphasis> support single fd operation.</para>
45 </footnote></para>
46
47 <section>
48 <title>Querying Capabilities</title>
49
50 <para>Devices supporting the video overlay interface set the
51<constant>V4L2_CAP_VIDEO_OVERLAY</constant> flag in the
52<structfield>capabilities</structfield> field of &v4l2-capability;
53returned by the &VIDIOC-QUERYCAP; ioctl. The overlay I/O method specified
54below must be supported. Tuners and audio inputs are optional.</para>
55 </section>
56
57 <section>
58 <title>Supplemental Functions</title>
59
60 <para>Video overlay devices shall support <link
61linkend="audio">audio input</link>, <link
62linkend="tuner">tuner</link>, <link linkend="control">controls</link>,
63<link linkend="crop">cropping and scaling</link> and <link
64linkend="streaming-par">streaming parameter</link> ioctls as needed.
65The <link linkend="video">video input</link> and <link
66linkend="standard">video standard</link> ioctls must be supported by
67all video overlay devices.</para>
68 </section>
69
70 <section>
71 <title>Setup</title>
72
73 <para>Before overlay can commence applications must program the
74driver with frame buffer parameters, namely the address and size of
75the frame buffer and the image format, for example RGB 5:6:5. The
76&VIDIOC-G-FBUF; and &VIDIOC-S-FBUF; ioctls are available to get
77and set these parameters, respectively. The
78<constant>VIDIOC_S_FBUF</constant> ioctl is privileged because it
79allows to set up DMA into physical memory, bypassing the memory
80protection mechanisms of the kernel. Only the superuser can change the
81frame buffer address and size. Users are not supposed to run TV
82applications as root or with SUID bit set. A small helper application
83with suitable privileges should query the graphics system and program
84the V4L2 driver at the appropriate time.</para>
85
86 <para>Some devices add the video overlay to the output signal
87of the graphics card. In this case the frame buffer is not modified by
88the video device, and the frame buffer address and pixel format are
89not needed by the driver. The <constant>VIDIOC_S_FBUF</constant> ioctl
90is not privileged. An application can check for this type of device by
91calling the <constant>VIDIOC_G_FBUF</constant> ioctl.</para>
92
93 <para>A driver may support any (or none) of five clipping/blending
94methods:<orderedlist>
95 <listitem>
96 <para>Chroma-keying displays the overlaid image only where
97pixels in the primary graphics surface assume a certain color.</para>
98 </listitem>
99 <listitem>
100 <para>A bitmap can be specified where each bit corresponds
101to a pixel in the overlaid image. When the bit is set, the
102corresponding video pixel is displayed, otherwise a pixel of the
103graphics surface.</para>
104 </listitem>
105 <listitem>
106 <para>A list of clipping rectangles can be specified. In
107these regions <emphasis>no</emphasis> video is displayed, so the
108graphics surface can be seen here.</para>
109 </listitem>
110 <listitem>
111 <para>The framebuffer has an alpha channel that can be used
112to clip or blend the framebuffer with the video.</para>
113 </listitem>
114 <listitem>
115 <para>A global alpha value can be specified to blend the
116framebuffer contents with video images.</para>
117 </listitem>
118 </orderedlist></para>
119
120 <para>When simultaneous capturing and overlay is supported and
121the hardware prohibits different image and frame buffer formats, the
122format requested first takes precedence. The attempt to capture
123(&VIDIOC-S-FMT;) or overlay (&VIDIOC-S-FBUF;) may fail with an
124&EBUSY; or return accordingly modified parameters..</para>
125 </section>
126
127 <section>
128 <title>Overlay Window</title>
129
130 <para>The overlaid image is determined by cropping and overlay
131window parameters. The former select an area of the video picture to
132capture, the latter how images are overlaid and clipped. Cropping
133initialization at minimum requires to reset the parameters to
134defaults. An example is given in <xref linkend="crop" />.</para>
135
136 <para>The overlay window is described by a &v4l2-window;. It
137defines the size of the image, its position over the graphics surface
138and the clipping to be applied. To get the current parameters
139applications set the <structfield>type</structfield> field of a
140&v4l2-format; to <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant> and
141call the &VIDIOC-G-FMT; ioctl. The driver fills the
142<structname>v4l2_window</structname> substructure named
143<structfield>win</structfield>. It is not possible to retrieve a
144previously programmed clipping list or bitmap.</para>
145
146 <para>To program the overlay window applications set the
147<structfield>type</structfield> field of a &v4l2-format; to
148<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, initialize the
149<structfield>win</structfield> substructure and call the
150&VIDIOC-S-FMT; ioctl. The driver adjusts the parameters against
151hardware limits and returns the actual parameters as
152<constant>VIDIOC_G_FMT</constant> does. Like
153<constant>VIDIOC_S_FMT</constant>, the &VIDIOC-TRY-FMT; ioctl can be
154used to learn about driver capabilities without actually changing
155driver state. Unlike <constant>VIDIOC_S_FMT</constant> this also works
156after the overlay has been enabled.</para>
157
158 <para>The scaling factor of the overlaid image is implied by the
159width and height given in &v4l2-window; and the size of the cropping
160rectangle. For more information see <xref linkend="crop" />.</para>
161
162 <para>When simultaneous capturing and overlay is supported and
163the hardware prohibits different image and window sizes, the size
164requested first takes precedence. The attempt to capture or overlay as
165well (&VIDIOC-S-FMT;) may fail with an &EBUSY; or return accordingly
166modified parameters.</para>
167
168 <table pgwide="1" frame="none" id="v4l2-window">
169 <title>struct <structname>v4l2_window</structname></title>
170 <tgroup cols="3">
171 &cs-str;
172 <tbody valign="top">
173 <row>
174 <entry>&v4l2-rect;</entry>
175 <entry><structfield>w</structfield></entry>
176 <entry>Size and position of the window relative to the
177top, left corner of the frame buffer defined with &VIDIOC-S-FBUF;. The
178window can extend the frame buffer width and height, the
179<structfield>x</structfield> and <structfield>y</structfield>
180coordinates can be negative, and it can lie completely outside the
181frame buffer. The driver clips the window accordingly, or if that is
182not possible, modifies its size and/or position.</entry>
183 </row>
184 <row>
185 <entry>&v4l2-field;</entry>
186 <entry><structfield>field</structfield></entry>
187 <entry>Applications set this field to determine which
188video field shall be overlaid, typically one of
189<constant>V4L2_FIELD_ANY</constant> (0),
190<constant>V4L2_FIELD_TOP</constant>,
191<constant>V4L2_FIELD_BOTTOM</constant> or
192<constant>V4L2_FIELD_INTERLACED</constant>. Drivers may have to choose
193a different field order and return the actual setting here.</entry>
194 </row>
195 <row>
196 <entry>__u32</entry>
197 <entry><structfield>chromakey</structfield></entry>
198 <entry>When chroma-keying has been negotiated with
199&VIDIOC-S-FBUF; applications set this field to the desired pixel value
200for the chroma key. The format is the same as the pixel format of the
201framebuffer (&v4l2-framebuffer;
202<structfield>fmt.pixelformat</structfield> field), with bytes in host
203order. E.&nbsp;g. for <link
204linkend="V4L2-PIX-FMT-BGR32"><constant>V4L2_PIX_FMT_BGR24</constant></link>
205the value should be 0xRRGGBB on a little endian, 0xBBGGRR on a big
206endian host.</entry>
207 </row>
208 <row>
209 <entry>&v4l2-clip; *</entry>
210 <entry><structfield>clips</structfield></entry>
211 <entry>When chroma-keying has <emphasis>not</emphasis>
212been negotiated and &VIDIOC-G-FBUF; indicated this capability,
213applications can set this field to point to an array of
214clipping rectangles.</entry>
215 </row>
216 <row>
217 <entry></entry>
218 <entry></entry>
219 <entry>Like the window coordinates
220<structfield>w</structfield>, clipping rectangles are defined relative
221to the top, left corner of the frame buffer. However clipping
222rectangles must not extend the frame buffer width and height, and they
223must not overlap. If possible applications should merge adjacent
224rectangles. Whether this must create x-y or y-x bands, or the order of
225rectangles, is not defined. When clip lists are not supported the
226driver ignores this field. Its contents after calling &VIDIOC-S-FMT;
227are undefined.</entry>
228 </row>
229 <row>
230 <entry>__u32</entry>
231 <entry><structfield>clipcount</structfield></entry>
232 <entry>When the application set the
233<structfield>clips</structfield> field, this field must contain the
234number of clipping rectangles in the list. When clip lists are not
235supported the driver ignores this field, its contents after calling
236<constant>VIDIOC_S_FMT</constant> are undefined. When clip lists are
237supported but no clipping is desired this field must be set to
238zero.</entry>
239 </row>
240 <row>
241 <entry>void *</entry>
242 <entry><structfield>bitmap</structfield></entry>
243 <entry>When chroma-keying has
244<emphasis>not</emphasis> been negotiated and &VIDIOC-G-FBUF; indicated
245this capability, applications can set this field to point to a
246clipping bit mask.</entry>
247 </row>
248 <row>
249 <entry spanname="hspan"><para>It must be of the same size
250as the window, <structfield>w.width</structfield> and
251<structfield>w.height</structfield>. Each bit corresponds to a pixel
252in the overlaid image, which is displayed only when the bit is
253<emphasis>set</emphasis>. Pixel coordinates translate to bits like:
254<programlisting>
255((__u8 *) <structfield>bitmap</structfield>)[<structfield>w.width</structfield> * y + x / 8] &amp; (1 &lt;&lt; (x &amp; 7))</programlisting></para><para>where <structfield>0</structfield> &le; x &lt;
256<structfield>w.width</structfield> and <structfield>0</structfield> &le;
257y &lt;<structfield>w.height</structfield>.<footnote>
258 <para>Should we require
259 <structfield>w.width</structfield> to be a multiple of
260 eight?</para>
261 </footnote></para><para>When a clipping
262bit mask is not supported the driver ignores this field, its contents
263after calling &VIDIOC-S-FMT; are undefined. When a bit mask is supported
264but no clipping is desired this field must be set to
265<constant>NULL</constant>.</para><para>Applications need not create a
266clip list or bit mask. When they pass both, or despite negotiating
267chroma-keying, the results are undefined. Regardless of the chosen
268method, the clipping abilities of the hardware may be limited in
269quantity or quality. The results when these limits are exceeded are
270undefined.<footnote>
271 <para>When the image is written into frame buffer
272memory it will be undesirable if the driver clips out less pixels
273than expected, because the application and graphics system are not
274aware these regions need to be refreshed. The driver should clip out
275more pixels or not write the image at all.</para>
276 </footnote></para></entry>
277 </row>
278 <row>
279 <entry>__u8</entry>
280 <entry><structfield>global_alpha</structfield></entry>
281 <entry>The global alpha value used to blend the
282framebuffer with video images, if global alpha blending has been
283negotiated (<constant>V4L2_FBUF_FLAG_GLOBAL_ALPHA</constant>, see
284&VIDIOC-S-FBUF;, <xref linkend="framebuffer-flags" />).</entry>
285 </row>
286 <row>
287 <entry></entry>
288 <entry></entry>
289 <entry>Note this field was added in Linux 2.6.23, extending the structure. However
290the <link linkend="vidioc-g-fmt">VIDIOC_G/S/TRY_FMT</link> ioctls,
291which take a pointer to a <link
292linkend="v4l2-format">v4l2_format</link> parent structure with padding
293bytes at the end, are not affected.</entry>
294 </row>
295 </tbody>
296 </tgroup>
297 </table>
298
299 <table pgwide="1" frame="none" id="v4l2-clip">
300 <title>struct <structname>v4l2_clip</structname><footnote>
301 <para>The X Window system defines "regions" which are
302vectors of struct BoxRec { short x1, y1, x2, y2; } with width = x2 -
303x1 and height = y2 - y1, so one cannot pass X11 clip lists
304directly.</para>
305 </footnote></title>
306 <tgroup cols="3">
307 &cs-str;
308 <tbody valign="top">
309 <row>
310 <entry>&v4l2-rect;</entry>
311 <entry><structfield>c</structfield></entry>
312 <entry>Coordinates of the clipping rectangle, relative to
313the top, left corner of the frame buffer. Only window pixels
314<emphasis>outside</emphasis> all clipping rectangles are
315displayed.</entry>
316 </row>
317 <row>
318 <entry>&v4l2-clip; *</entry>
319 <entry><structfield>next</structfield></entry>
320 <entry>Pointer to the next clipping rectangle, NULL when
321this is the last rectangle. Drivers ignore this field, it cannot be
322used to pass a linked list of clipping rectangles.</entry>
323 </row>
324 </tbody>
325 </tgroup>
326 </table>
327
328 <!-- NB for easier reading this table is duplicated
329 in the vidioc-cropcap chapter.-->
330
331 <table pgwide="1" frame="none" id="v4l2-rect">
332 <title>struct <structname>v4l2_rect</structname></title>
333 <tgroup cols="3">
334 &cs-str;
335 <tbody valign="top">
336 <row>
337 <entry>__s32</entry>
338 <entry><structfield>left</structfield></entry>
339 <entry>Horizontal offset of the top, left corner of the
340rectangle, in pixels.</entry>
341 </row>
342 <row>
343 <entry>__s32</entry>
344 <entry><structfield>top</structfield></entry>
345 <entry>Vertical offset of the top, left corner of the
346rectangle, in pixels. Offsets increase to the right and down.</entry>
347 </row>
348 <row>
349 <entry>__u32</entry>
350 <entry><structfield>width</structfield></entry>
351 <entry>Width of the rectangle, in pixels.</entry>
352 </row>
353 <row>
354 <entry>__u32</entry>
355 <entry><structfield>height</structfield></entry>
356 <entry>Height of the rectangle, in pixels.</entry>
357 </row>
358 </tbody>
359 </tgroup>
360 </table>
361 </section>
362
363 <section>
364 <title>Enabling Overlay</title>
365
366 <para>To start or stop the frame buffer overlay applications call
367the &VIDIOC-OVERLAY; ioctl.</para>
368 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-radio.xml b/Documentation/DocBook/media/v4l/dev-radio.xml
deleted file mode 100644
index 3e6ac73b36af..000000000000
--- a/Documentation/DocBook/media/v4l/dev-radio.xml
+++ /dev/null
@@ -1,49 +0,0 @@
1 <title>Radio Interface</title>
2
3 <para>This interface is intended for AM and FM (analog) radio
4receivers and transmitters.</para>
5
6 <para>Conventionally V4L2 radio devices are accessed through
7character device special files named <filename>/dev/radio</filename>
8and <filename>/dev/radio0</filename> to
9<filename>/dev/radio63</filename> with major number 81 and minor
10numbers 64 to 127.</para>
11
12 <section>
13 <title>Querying Capabilities</title>
14
15 <para>Devices supporting the radio interface set the
16<constant>V4L2_CAP_RADIO</constant> and
17<constant>V4L2_CAP_TUNER</constant> or
18<constant>V4L2_CAP_MODULATOR</constant> flag in the
19<structfield>capabilities</structfield> field of &v4l2-capability;
20returned by the &VIDIOC-QUERYCAP; ioctl. Other combinations of
21capability flags are reserved for future extensions.</para>
22 </section>
23
24 <section>
25 <title>Supplemental Functions</title>
26
27 <para>Radio devices can support <link
28linkend="control">controls</link>, and must support the <link
29linkend="tuner">tuner or modulator</link> ioctls.</para>
30
31 <para>They do not support the video input or output, audio input
32or output, video standard, cropping and scaling, compression and
33streaming parameter, or overlay ioctls. All other ioctls and I/O
34methods are reserved for future extensions.</para>
35 </section>
36
37 <section>
38 <title>Programming</title>
39
40 <para>Radio devices may have a couple audio controls (as discussed
41in <xref linkend="control" />) such as a volume control, possibly custom
42controls. Further all radio devices have one tuner or modulator (these are
43discussed in <xref linkend="tuner" />) with index number zero to select
44the radio frequency and to determine if a monaural or FM stereo
45program is received/emitted. Drivers switch automatically between AM and FM
46depending on the selected frequency. The &VIDIOC-G-TUNER; or
47&VIDIOC-G-MODULATOR; ioctl
48reports the supported frequency range.</para>
49 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-raw-vbi.xml b/Documentation/DocBook/media/v4l/dev-raw-vbi.xml
deleted file mode 100644
index 78599bbd58f7..000000000000
--- a/Documentation/DocBook/media/v4l/dev-raw-vbi.xml
+++ /dev/null
@@ -1,345 +0,0 @@
1 <title>Raw VBI Data Interface</title>
2
3 <para>VBI is an abbreviation of Vertical Blanking Interval, a gap
4in the sequence of lines of an analog video signal. During VBI
5no picture information is transmitted, allowing some time while the
6electron beam of a cathode ray tube TV returns to the top of the
7screen. Using an oscilloscope you will find here the vertical
8synchronization pulses and short data packages ASK
9modulated<footnote><para>ASK: Amplitude-Shift Keying. A high signal
10level represents a '1' bit, a low level a '0' bit.</para></footnote>
11onto the video signal. These are transmissions of services such as
12Teletext or Closed Caption.</para>
13
14 <para>Subject of this interface type is raw VBI data, as sampled off
15a video signal, or to be added to a signal for output.
16The data format is similar to uncompressed video images, a number of
17lines times a number of samples per line, we call this a VBI image.</para>
18
19 <para>Conventionally V4L2 VBI devices are accessed through character
20device special files named <filename>/dev/vbi</filename> and
21<filename>/dev/vbi0</filename> to <filename>/dev/vbi31</filename> with
22major number 81 and minor numbers 224 to 255.
23<filename>/dev/vbi</filename> is typically a symbolic link to the
24preferred VBI device. This convention applies to both input and output
25devices.</para>
26
27 <para>To address the problems of finding related video and VBI
28devices VBI capturing and output is also available as device function
29under <filename>/dev/video</filename>. To capture or output raw VBI
30data with these devices applications must call the &VIDIOC-S-FMT;
31ioctl. Accessed as <filename>/dev/vbi</filename>, raw VBI capturing
32or output is the default device function.</para>
33
34 <section>
35 <title>Querying Capabilities</title>
36
37 <para>Devices supporting the raw VBI capturing or output API set
38the <constant>V4L2_CAP_VBI_CAPTURE</constant> or
39<constant>V4L2_CAP_VBI_OUTPUT</constant> flags, respectively, in the
40<structfield>capabilities</structfield> field of &v4l2-capability;
41returned by the &VIDIOC-QUERYCAP; ioctl. At least one of the
42read/write, streaming or asynchronous I/O methods must be
43supported. VBI devices may or may not have a tuner or modulator.</para>
44 </section>
45
46 <section>
47 <title>Supplemental Functions</title>
48
49 <para>VBI devices shall support <link linkend="video">video
50input or output</link>, <link linkend="tuner">tuner or
51modulator</link>, and <link linkend="control">controls</link> ioctls
52as needed. The <link linkend="standard">video standard</link> ioctls provide
53information vital to program a VBI device, therefore must be
54supported.</para>
55 </section>
56
57 <section>
58 <title>Raw VBI Format Negotiation</title>
59
60 <para>Raw VBI sampling abilities can vary, in particular the
61sampling frequency. To properly interpret the data V4L2 specifies an
62ioctl to query the sampling parameters. Moreover, to allow for some
63flexibility applications can also suggest different parameters.</para>
64
65 <para>As usual these parameters are <emphasis>not</emphasis>
66reset at &func-open; time to permit Unix tool chains, programming a
67device and then reading from it as if it was a plain file. Well
68written V4L2 applications should always ensure they really get what
69they want, requesting reasonable parameters and then checking if the
70actual parameters are suitable.</para>
71
72 <para>To query the current raw VBI capture parameters
73applications set the <structfield>type</structfield> field of a
74&v4l2-format; to <constant>V4L2_BUF_TYPE_VBI_CAPTURE</constant> or
75<constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant>, and call the
76&VIDIOC-G-FMT; ioctl with a pointer to this structure. Drivers fill
77the &v4l2-vbi-format; <structfield>vbi</structfield> member of the
78<structfield>fmt</structfield> union.</para>
79
80 <para>To request different parameters applications set the
81<structfield>type</structfield> field of a &v4l2-format; as above and
82initialize all fields of the &v4l2-vbi-format;
83<structfield>vbi</structfield> member of the
84<structfield>fmt</structfield> union, or better just modify the
85results of <constant>VIDIOC_G_FMT</constant>, and call the
86&VIDIOC-S-FMT; ioctl with a pointer to this structure. Drivers return
87an &EINVAL; only when the given parameters are ambiguous, otherwise
88they modify the parameters according to the hardware capabilities and
89return the actual parameters. When the driver allocates resources at
90this point, it may return an &EBUSY; to indicate the returned
91parameters are valid but the required resources are currently not
92available. That may happen for instance when the video and VBI areas
93to capture would overlap, or when the driver supports multiple opens
94and another process already requested VBI capturing or output. Anyway,
95applications must expect other resource allocation points which may
96return <errorcode>EBUSY</errorcode>, at the &VIDIOC-STREAMON; ioctl
97and the first read(), write() and select() call.</para>
98
99 <para>VBI devices must implement both the
100<constant>VIDIOC_G_FMT</constant> and
101<constant>VIDIOC_S_FMT</constant> ioctl, even if
102<constant>VIDIOC_S_FMT</constant> ignores all requests and always
103returns default parameters as <constant>VIDIOC_G_FMT</constant> does.
104<constant>VIDIOC_TRY_FMT</constant> is optional.</para>
105
106 <table pgwide="1" frame="none" id="v4l2-vbi-format">
107 <title>struct <structname>v4l2_vbi_format</structname></title>
108 <tgroup cols="3">
109 &cs-str;
110 <tbody valign="top">
111 <row>
112 <entry>__u32</entry>
113 <entry><structfield>sampling_rate</structfield></entry>
114 <entry>Samples per second, i.&nbsp;e. unit 1 Hz.</entry>
115 </row>
116 <row>
117 <entry>__u32</entry>
118 <entry><structfield>offset</structfield></entry>
119 <entry><para>Horizontal offset of the VBI image,
120relative to the leading edge of the line synchronization pulse and
121counted in samples: The first sample in the VBI image will be located
122<structfield>offset</structfield> /
123<structfield>sampling_rate</structfield> seconds following the leading
124edge. See also <xref linkend="vbi-hsync" />.</para></entry>
125 </row>
126 <row>
127 <entry>__u32</entry>
128 <entry><structfield>samples_per_line</structfield></entry>
129 <entry></entry>
130 </row>
131 <row>
132 <entry>__u32</entry>
133 <entry><structfield>sample_format</structfield></entry>
134 <entry><para>Defines the sample format as in <xref
135linkend="pixfmt" />, a four-character-code.<footnote>
136 <para>A few devices may be unable to
137sample VBI data at all but can extend the video capture window to the
138VBI region.</para>
139 </footnote> Usually this is
140<constant>V4L2_PIX_FMT_GREY</constant>, i.&nbsp;e. each sample
141consists of 8 bits with lower values oriented towards the black level.
142Do not assume any other correlation of values with the signal level.
143For example, the MSB does not necessarily indicate if the signal is
144'high' or 'low' because 128 may not be the mean value of the
145signal. Drivers shall not convert the sample format by software.</para></entry>
146 </row>
147 <row>
148 <entry>__u32</entry>
149 <entry><structfield>start</structfield>[2]</entry>
150 <entry>This is the scanning system line number
151associated with the first line of the VBI image, of the first and the
152second field respectively. See <xref linkend="vbi-525" /> and
153<xref linkend="vbi-625" /> for valid values.
154The <constant>V4L2_VBI_ITU_525_F1_START</constant>,
155<constant>V4L2_VBI_ITU_525_F2_START</constant>,
156<constant>V4L2_VBI_ITU_625_F1_START</constant> and
157<constant>V4L2_VBI_ITU_625_F2_START</constant> defines give the start line
158numbers for each field for each 525 or 625 line format as a convenience.
159Don't forget that ITU line numbering starts at 1, not 0.
160VBI input drivers can return start values 0 if the hardware cannot
161reliable identify scanning lines, VBI acquisition may not require this
162information.</entry>
163 </row>
164 <row>
165 <entry>__u32</entry>
166 <entry><structfield>count</structfield>[2]</entry>
167 <entry>The number of lines in the first and second
168field image, respectively.</entry>
169 </row>
170 <row>
171 <entry spanname="hspan"><para>Drivers should be as
172flexibility as possible. For example, it may be possible to extend or
173move the VBI capture window down to the picture area, implementing a
174'full field mode' to capture data service transmissions embedded in
175the picture.</para><para>An application can set the first or second
176<structfield>count</structfield> value to zero if no data is required
177from the respective field; <structfield>count</structfield>[1] if the
178scanning system is progressive, &ie; not interlaced. The
179corresponding start value shall be ignored by the application and
180driver. Anyway, drivers may not support single field capturing and
181return both count values non-zero.</para><para>Both
182<structfield>count</structfield> values set to zero, or line numbers
183outside the bounds depicted in <xref linkend="vbi-525" /> and <xref
184 linkend="vbi-625" />, or a field image covering
185lines of two fields, are invalid and shall not be returned by the
186driver.</para><para>To initialize the <structfield>start</structfield>
187and <structfield>count</structfield> fields, applications must first
188determine the current video standard selection. The &v4l2-std-id; or
189the <structfield>framelines</structfield> field of &v4l2-standard; can
190be evaluated for this purpose.</para></entry>
191 </row>
192 <row>
193 <entry>__u32</entry>
194 <entry><structfield>flags</structfield></entry>
195 <entry>See <xref linkend="vbifmt-flags" /> below. Currently
196only drivers set flags, applications must set this field to
197zero.</entry>
198 </row>
199 <row>
200 <entry>__u32</entry>
201 <entry><structfield>reserved</structfield>[2]</entry>
202 <entry>This array is reserved for future extensions.
203Drivers and applications must set it to zero.</entry>
204 </row>
205 </tbody>
206 </tgroup>
207 </table>
208
209 <table pgwide="1" frame="none" id="vbifmt-flags">
210 <title>Raw VBI Format Flags</title>
211 <tgroup cols="3">
212 &cs-def;
213 <tbody valign="top">
214 <row>
215 <entry><constant>V4L2_VBI_UNSYNC</constant></entry>
216 <entry>0x0001</entry>
217 <entry><para>This flag indicates hardware which does not
218properly distinguish between fields. Normally the VBI image stores the
219first field (lower scanning line numbers) first in memory. This may be
220a top or bottom field depending on the video standard. When this flag
221is set the first or second field may be stored first, however the
222fields are still in correct temporal order with the older field first
223in memory.<footnote>
224 <para>Most VBI services transmit on both fields, but
225some have different semantics depending on the field number. These
226cannot be reliable decoded or encoded when
227<constant>V4L2_VBI_UNSYNC</constant> is set.</para>
228 </footnote></para></entry>
229 </row>
230 <row>
231 <entry><constant>V4L2_VBI_INTERLACED</constant></entry>
232 <entry>0x0002</entry>
233 <entry>By default the two field images will be passed
234sequentially; all lines of the first field followed by all lines of
235the second field (compare <xref linkend="field-order" />
236<constant>V4L2_FIELD_SEQ_TB</constant> and
237<constant>V4L2_FIELD_SEQ_BT</constant>, whether the top or bottom
238field is first in memory depends on the video standard). When this
239flag is set, the two fields are interlaced (cf.
240<constant>V4L2_FIELD_INTERLACED</constant>). The first line of the
241first field followed by the first line of the second field, then the
242two second lines, and so on. Such a layout may be necessary when the
243hardware has been programmed to capture or output interlaced video
244images and is unable to separate the fields for VBI capturing at
245the same time. For simplicity setting this flag implies that both
246<structfield>count</structfield> values are equal and non-zero.</entry>
247 </row>
248 </tbody>
249 </tgroup>
250 </table>
251
252 <figure id="vbi-hsync">
253 <title>Line synchronization</title>
254 <mediaobject>
255 <imageobject>
256 <imagedata fileref="vbi_hsync.pdf" format="PS" />
257 </imageobject>
258 <imageobject>
259 <imagedata fileref="vbi_hsync.gif" format="GIF" />
260 </imageobject>
261 <textobject>
262 <phrase>Line synchronization diagram</phrase>
263 </textobject>
264 </mediaobject>
265 </figure>
266
267 <figure id="vbi-525">
268 <title>ITU-R 525 line numbering (M/NTSC and M/PAL)</title>
269 <mediaobject>
270 <imageobject>
271 <imagedata fileref="vbi_525.pdf" format="PS" />
272 </imageobject>
273 <imageobject>
274 <imagedata fileref="vbi_525.gif" format="GIF" />
275 </imageobject>
276 <textobject>
277 <phrase>NTSC field synchronization diagram</phrase>
278 </textobject>
279 <caption>
280 <para>(1) For the purpose of this specification field 2
281starts in line 264 and not 263.5 because half line capturing is not
282supported.</para>
283 </caption>
284 </mediaobject>
285 </figure>
286
287 <figure id="vbi-625">
288 <title>ITU-R 625 line numbering</title>
289 <mediaobject>
290 <imageobject>
291 <imagedata fileref="vbi_625.pdf" format="PS" />
292 </imageobject>
293 <imageobject>
294 <imagedata fileref="vbi_625.gif" format="GIF" />
295 </imageobject>
296 <textobject>
297 <phrase>PAL/SECAM field synchronization diagram</phrase>
298 </textobject>
299 <caption>
300 <para>(1) For the purpose of this specification field 2
301starts in line 314 and not 313.5 because half line capturing is not
302supported.</para>
303 </caption>
304 </mediaobject>
305 </figure>
306
307 <para>Remember the VBI image format depends on the selected
308video standard, therefore the application must choose a new standard or
309query the current standard first. Attempts to read or write data ahead
310of format negotiation, or after switching the video standard which may
311invalidate the negotiated VBI parameters, should be refused by the
312driver. A format change during active I/O is not permitted.</para>
313 </section>
314
315 <section>
316 <title>Reading and writing VBI images</title>
317
318 <para>To assure synchronization with the field number and easier
319implementation, the smallest unit of data passed at a time is one
320frame, consisting of two fields of VBI images immediately following in
321memory.</para>
322
323 <para>The total size of a frame computes as follows:</para>
324
325 <programlisting>
326(<structfield>count</structfield>[0] + <structfield>count</structfield>[1]) *
327<structfield>samples_per_line</structfield> * sample size in bytes</programlisting>
328
329 <para>The sample size is most likely always one byte,
330applications must check the <structfield>sample_format</structfield>
331field though, to function properly with other drivers.</para>
332
333 <para>A VBI device may support <link
334 linkend="rw">read/write</link> and/or streaming (<link
335 linkend="mmap">memory mapping</link> or <link
336 linkend="userp">user pointer</link>) I/O. The latter bears the
337possibility of synchronizing video and
338VBI data by using buffer timestamps.</para>
339
340 <para>Remember the &VIDIOC-STREAMON; ioctl and the first read(),
341write() and select() call can be resource allocation points returning
342an &EBUSY; if the required hardware resources are temporarily
343unavailable, for example the device is already in use by another
344process.</para>
345 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-rds.xml b/Documentation/DocBook/media/v4l/dev-rds.xml
deleted file mode 100644
index be2f33737323..000000000000
--- a/Documentation/DocBook/media/v4l/dev-rds.xml
+++ /dev/null
@@ -1,196 +0,0 @@
1 <title>RDS Interface</title>
2
3 <para>The Radio Data System transmits supplementary
4information in binary format, for example the station name or travel
5information, on an inaudible audio subcarrier of a radio program. This
6interface is aimed at devices capable of receiving and/or transmitting RDS
7information.</para>
8
9 <para>For more information see the core RDS standard <xref linkend="iec62106" />
10and the RBDS standard <xref linkend="nrsc4" />.</para>
11
12 <para>Note that the RBDS standard as is used in the USA is almost identical
13to the RDS standard. Any RDS decoder/encoder can also handle RBDS. Only some of the
14fields have slightly different meanings. See the RBDS standard for more
15information.</para>
16
17 <para>The RBDS standard also specifies support for MMBS (Modified Mobile Search).
18This is a proprietary format which seems to be discontinued. The RDS interface does not
19support this format. Should support for MMBS (or the so-called 'E blocks' in general)
20be needed, then please contact the linux-media mailing list: &v4l-ml;.</para>
21
22 <section>
23 <title>Querying Capabilities</title>
24
25 <para>Devices supporting the RDS capturing API set
26the <constant>V4L2_CAP_RDS_CAPTURE</constant> flag in
27the <structfield>capabilities</structfield> field of &v4l2-capability;
28returned by the &VIDIOC-QUERYCAP; ioctl. Any tuner that supports RDS
29will set the <constant>V4L2_TUNER_CAP_RDS</constant> flag in
30the <structfield>capability</structfield> field of &v4l2-tuner;. If
31the driver only passes RDS blocks without interpreting the data
32the <constant>V4L2_TUNER_CAP_RDS_BLOCK_IO</constant> flag has to be
33set, see <link linkend="reading-rds-data">Reading RDS data</link>.
34For future use the
35flag <constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant> has also been
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
38should discuss this on the linux-media mailing list: &v4l-ml;.</para>
39
40 <para> Whether an RDS signal is present can be detected by looking
41at the <structfield>rxsubchans</structfield> field of &v4l2-tuner;:
42the <constant>V4L2_TUNER_SUB_RDS</constant> will be set if RDS data
43was detected.</para>
44
45 <para>Devices supporting the RDS output API
46set the <constant>V4L2_CAP_RDS_OUTPUT</constant> flag in
47the <structfield>capabilities</structfield> field of &v4l2-capability;
48returned by the &VIDIOC-QUERYCAP; ioctl.
49Any modulator that supports RDS will set the
50<constant>V4L2_TUNER_CAP_RDS</constant> flag in the <structfield>capability</structfield>
51field of &v4l2-modulator;.
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;.
54If the driver only passes RDS blocks without interpreting the data
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
57text, the flag <constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant> should be set,
58see <link linkend="writing-rds-data">Writing RDS data</link> and
59<link linkend="fm-tx-controls">FM Transmitter Control Reference</link>.</para>
60 </section>
61
62 <section id="reading-rds-data">
63 <title>Reading RDS data</title>
64
65 <para>RDS data can be read from the radio device
66with the &func-read; function. The data is packed in groups of three bytes.</para>
67 </section>
68
69 <section id="writing-rds-data">
70 <title>Writing RDS data</title>
71
72 <para>RDS data can be written to the radio device
73with the &func-write; function. The data is packed in groups of three bytes,
74as follows:</para>
75 </section>
76
77 <section>
78 <title>RDS datastructures</title>
79 <table frame="none" pgwide="1" id="v4l2-rds-data">
80 <title>struct
81<structname>v4l2_rds_data</structname></title>
82 <tgroup cols="3">
83 <colspec colname="c1" colwidth="1*" />
84 <colspec colname="c2" colwidth="1*" />
85 <colspec colname="c3" colwidth="5*" />
86 <tbody valign="top">
87 <row>
88 <entry>__u8</entry>
89 <entry><structfield>lsb</structfield></entry>
90 <entry>Least Significant Byte of RDS Block</entry>
91 </row>
92 <row>
93 <entry>__u8</entry>
94 <entry><structfield>msb</structfield></entry>
95 <entry>Most Significant Byte of RDS Block</entry>
96 </row>
97 <row>
98 <entry>__u8</entry>
99 <entry><structfield>block</structfield></entry>
100 <entry>Block description</entry>
101 </row>
102 </tbody>
103 </tgroup>
104 </table>
105 <table frame="none" pgwide="1" id="v4l2-rds-block">
106 <title>Block description</title>
107 <tgroup cols="2">
108 <colspec colname="c1" colwidth="1*" />
109 <colspec colname="c2" colwidth="5*" />
110 <tbody valign="top">
111 <row>
112 <entry>Bits 0-2</entry>
113 <entry>Block (aka offset) of the received data.</entry>
114 </row>
115 <row>
116 <entry>Bits 3-5</entry>
117 <entry>Deprecated. Currently identical to bits 0-2. Do not use these bits.</entry>
118 </row>
119 <row>
120 <entry>Bit 6</entry>
121 <entry>Corrected bit. Indicates that an error was corrected for this data block.</entry>
122 </row>
123 <row>
124 <entry>Bit 7</entry>
125 <entry>Error bit. Indicates that an uncorrectable error occurred during reception of this block.</entry>
126 </row>
127 </tbody>
128 </tgroup>
129 </table>
130
131 <table frame="none" pgwide="1" id="v4l2-rds-block-codes">
132 <title>Block defines</title>
133 <tgroup cols="4">
134 <colspec colname="c1" colwidth="1*" />
135 <colspec colname="c2" colwidth="1*" />
136 <colspec colname="c3" colwidth="1*" />
137 <colspec colname="c4" colwidth="5*" />
138 <tbody valign="top">
139 <row>
140 <entry>V4L2_RDS_BLOCK_MSK</entry>
141 <entry> </entry>
142 <entry>7</entry>
143 <entry>Mask for bits 0-2 to get the block ID.</entry>
144 </row>
145 <row>
146 <entry>V4L2_RDS_BLOCK_A</entry>
147 <entry> </entry>
148 <entry>0</entry>
149 <entry>Block A.</entry>
150 </row>
151 <row>
152 <entry>V4L2_RDS_BLOCK_B</entry>
153 <entry> </entry>
154 <entry>1</entry>
155 <entry>Block B.</entry>
156 </row>
157 <row>
158 <entry>V4L2_RDS_BLOCK_C</entry>
159 <entry> </entry>
160 <entry>2</entry>
161 <entry>Block C.</entry>
162 </row>
163 <row>
164 <entry>V4L2_RDS_BLOCK_D</entry>
165 <entry> </entry>
166 <entry>3</entry>
167 <entry>Block D.</entry>
168 </row>
169 <row>
170 <entry>V4L2_RDS_BLOCK_C_ALT</entry>
171 <entry> </entry>
172 <entry>4</entry>
173 <entry>Block C'.</entry>
174 </row>
175 <row>
176 <entry>V4L2_RDS_BLOCK_INVALID</entry>
177 <entry>read-only</entry>
178 <entry>7</entry>
179 <entry>An invalid block.</entry>
180 </row>
181 <row>
182 <entry>V4L2_RDS_BLOCK_CORRECTED</entry>
183 <entry>read-only</entry>
184 <entry>0x40</entry>
185 <entry>A bit error was detected but corrected.</entry>
186 </row>
187 <row>
188 <entry>V4L2_RDS_BLOCK_ERROR</entry>
189 <entry>read-only</entry>
190 <entry>0x80</entry>
191 <entry>An uncorrectable error occurred.</entry>
192 </row>
193 </tbody>
194 </tgroup>
195 </table>
196 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-sdr.xml b/Documentation/DocBook/media/v4l/dev-sdr.xml
deleted file mode 100644
index 6da1157fb5bd..000000000000
--- a/Documentation/DocBook/media/v4l/dev-sdr.xml
+++ /dev/null
@@ -1,126 +0,0 @@
1 <title>Software Defined Radio Interface (SDR)</title>
2
3 <para>
4SDR is an abbreviation of Software Defined Radio, the radio device
5which uses application software for modulation or demodulation. This interface
6is intended for controlling and data streaming of such devices.
7 </para>
8
9 <para>
10SDR devices are accessed through character device special files named
11<filename>/dev/swradio0</filename> to <filename>/dev/swradio255</filename>
12with major number 81 and dynamically allocated minor numbers 0 to 255.
13 </para>
14
15 <section>
16 <title>Querying Capabilities</title>
17
18 <para>
19Devices supporting the SDR receiver interface set the
20<constant>V4L2_CAP_SDR_CAPTURE</constant> and
21<constant>V4L2_CAP_TUNER</constant> flag in the
22<structfield>capabilities</structfield> field of &v4l2-capability;
23returned by the &VIDIOC-QUERYCAP; ioctl. That flag means the device has an
24Analog to Digital Converter (ADC), which is a mandatory element for the SDR receiver.
25 </para>
26 <para>
27Devices supporting the SDR transmitter interface set the
28<constant>V4L2_CAP_SDR_OUTPUT</constant> and
29<constant>V4L2_CAP_MODULATOR</constant> flag in the
30<structfield>capabilities</structfield> field of &v4l2-capability;
31returned by the &VIDIOC-QUERYCAP; ioctl. That flag means the device has an
32Digital to Analog Converter (DAC), which is a mandatory element for the SDR transmitter.
33 </para>
34 <para>
35At least one of the read/write, streaming or asynchronous I/O methods must
36be supported.
37 </para>
38 </section>
39
40 <section>
41 <title>Supplemental Functions</title>
42
43 <para>
44SDR devices can support <link linkend="control">controls</link>, and must
45support the <link linkend="tuner">tuner</link> ioctls. Tuner ioctls are used
46for setting the ADC/DAC sampling rate (sampling frequency) and the possible
47radio frequency (RF).
48 </para>
49
50 <para>
51The <constant>V4L2_TUNER_SDR</constant> tuner type is used for setting SDR
52device ADC/DAC frequency, and the <constant>V4L2_TUNER_RF</constant>
53tuner type is used for setting radio frequency.
54The tuner index of the RF tuner (if any) must always follow the SDR tuner index.
55Normally the SDR tuner is #0 and the RF tuner is #1.
56 </para>
57
58 <para>
59The &VIDIOC-S-HW-FREQ-SEEK; ioctl is not supported.
60 </para>
61 </section>
62
63 <section>
64 <title>Data Format Negotiation</title>
65
66 <para>
67The SDR device uses the <link linkend="format">format</link> ioctls to
68select the capture and output format. Both the sampling resolution and the data
69streaming format are bound to that selectable format. In addition to the basic
70<link linkend="format">format</link> ioctls, the &VIDIOC-ENUM-FMT; ioctl
71must be supported as well.
72 </para>
73
74 <para>
75To use the <link linkend="format">format</link> ioctls applications set the
76<structfield>type</structfield> field of a &v4l2-format; to
77<constant>V4L2_BUF_TYPE_SDR_CAPTURE</constant> or
78<constant>V4L2_BUF_TYPE_SDR_OUTPUT</constant> and use the &v4l2-sdr-format;
79<structfield>sdr</structfield> member of the <structfield>fmt</structfield>
80union as needed per the desired operation.
81Currently there is two fields, <structfield>pixelformat</structfield> and
82<structfield>buffersize</structfield>, of struct &v4l2-sdr-format; which are
83used. Content of the <structfield>pixelformat</structfield> is V4L2 FourCC
84code of the data format. The <structfield>buffersize</structfield> field is
85maximum buffer size in bytes required for data transfer, set by the driver in
86order to inform application.
87 </para>
88
89 <table pgwide="1" frame="none" id="v4l2-sdr-format">
90 <title>struct <structname>v4l2_sdr_format</structname></title>
91 <tgroup cols="3">
92 &cs-str;
93 <tbody valign="top">
94 <row>
95 <entry>__u32</entry>
96 <entry><structfield>pixelformat</structfield></entry>
97 <entry>
98The data format or type of compression, set by the application. This is a
99little endian <link linkend="v4l2-fourcc">four character code</link>.
100V4L2 defines SDR formats in <xref linkend="sdr-formats" />.
101 </entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>buffersize</structfield></entry>
106 <entry>
107Maximum size in bytes required for data. Value is set by the driver.
108 </entry>
109 </row>
110 <row>
111 <entry>__u8</entry>
112 <entry><structfield>reserved[24]</structfield></entry>
113 <entry>This array is reserved for future extensions.
114Drivers and applications must set it to zero.</entry>
115 </row>
116 </tbody>
117 </tgroup>
118 </table>
119
120 <para>
121An SDR device may support <link linkend="rw">read/write</link>
122and/or streaming (<link linkend="mmap">memory mapping</link>
123or <link linkend="userp">user pointer</link>) I/O.
124 </para>
125
126 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml b/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
deleted file mode 100644
index 0aec62ed2bf8..000000000000
--- a/Documentation/DocBook/media/v4l/dev-sliced-vbi.xml
+++ /dev/null
@@ -1,706 +0,0 @@
1 <title>Sliced VBI Data Interface</title>
2
3 <para>VBI stands for Vertical Blanking Interval, a gap in the
4sequence of lines of an analog video signal. During VBI no picture
5information is transmitted, allowing some time while the electron beam
6of a cathode ray tube TV returns to the top of the screen.</para>
7
8 <para>Sliced VBI devices use hardware to demodulate data transmitted
9in the VBI. V4L2 drivers shall <emphasis>not</emphasis> do this by
10software, see also the <link linkend="raw-vbi">raw VBI
11interface</link>. The data is passed as short packets of fixed size,
12covering one scan line each. The number of packets per video frame is
13variable.</para>
14
15 <para>Sliced VBI capture and output devices are accessed through the
16same character special files as raw VBI devices. When a driver
17supports both interfaces, the default function of a
18<filename>/dev/vbi</filename> device is <emphasis>raw</emphasis> VBI
19capturing or output, and the sliced VBI function is only available
20after calling the &VIDIOC-S-FMT; ioctl as defined below. Likewise a
21<filename>/dev/video</filename> device may support the sliced VBI API,
22however the default function here is video capturing or output.
23Different file descriptors must be used to pass raw and sliced VBI
24data simultaneously, if this is supported by the driver.</para>
25
26 <section>
27 <title>Querying Capabilities</title>
28
29 <para>Devices supporting the sliced VBI capturing or output API
30set the <constant>V4L2_CAP_SLICED_VBI_CAPTURE</constant> or
31<constant>V4L2_CAP_SLICED_VBI_OUTPUT</constant> flag respectively, in
32the <structfield>capabilities</structfield> field of &v4l2-capability;
33returned by the &VIDIOC-QUERYCAP; ioctl. At least one of the
34read/write, streaming or asynchronous <link linkend="io">I/O
35methods</link> must be supported. Sliced VBI devices may have a tuner
36or modulator.</para>
37 </section>
38
39 <section>
40 <title>Supplemental Functions</title>
41
42 <para>Sliced VBI devices shall support <link linkend="video">video
43input or output</link> and <link linkend="tuner">tuner or
44modulator</link> ioctls if they have these capabilities, and they may
45support <link linkend="control">control</link> ioctls. The <link
46linkend="standard">video standard</link> ioctls provide information
47vital to program a sliced VBI device, therefore must be
48supported.</para>
49 </section>
50
51 <section id="sliced-vbi-format-negotitation">
52 <title>Sliced VBI Format Negotiation</title>
53
54 <para>To find out which data services are supported by the
55hardware applications can call the &VIDIOC-G-SLICED-VBI-CAP; ioctl.
56All drivers implementing the sliced VBI interface must support this
57ioctl. The results may differ from those of the &VIDIOC-S-FMT; ioctl
58when the number of VBI lines the hardware can capture or output per
59frame, or the number of services it can identify on a given line are
60limited. For example on PAL line 16 the hardware may be able to look
61for a VPS or Teletext signal, but not both at the same time.</para>
62
63 <para>To determine the currently selected services applications
64set the <structfield>type </structfield> field of &v4l2-format; to
65<constant> V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant> or <constant>
66V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant>, and the &VIDIOC-G-FMT;
67ioctl fills the <structfield>fmt.sliced</structfield> member, a
68&v4l2-sliced-vbi-format;.</para>
69
70 <para>Applications can request different parameters by
71initializing or modifying the <structfield>fmt.sliced</structfield>
72member and calling the &VIDIOC-S-FMT; ioctl with a pointer to the
73<structname>v4l2_format</structname> structure.</para>
74
75 <para>The sliced VBI API is more complicated than the raw VBI API
76because the hardware must be told which VBI service to expect on each
77scan line. Not all services may be supported by the hardware on all
78lines (this is especially true for VBI output where Teletext is often
79unsupported and other services can only be inserted in one specific
80line). In many cases, however, it is sufficient to just set the
81<structfield>service_set</structfield> field to the required services
82and let the driver fill the <structfield>service_lines</structfield>
83array according to hardware capabilities. Only if more precise control
84is needed should the programmer set the
85<structfield>service_lines</structfield> array explicitly.</para>
86
87 <para>The &VIDIOC-S-FMT; ioctl modifies the parameters
88according to hardware capabilities. When the driver allocates
89resources at this point, it may return an &EBUSY; if the required
90resources are temporarily unavailable. Other resource allocation
91points which may return <errorcode>EBUSY</errorcode> can be the
92&VIDIOC-STREAMON; ioctl and the first &func-read;, &func-write; and
93&func-select; call.</para>
94
95 <table frame="none" pgwide="1" id="v4l2-sliced-vbi-format">
96 <title>struct
97<structname>v4l2_sliced_vbi_format</structname></title>
98 <tgroup cols="5">
99 <colspec colname="c1" colwidth="3*" />
100 <colspec colname="c2" colwidth="3*" />
101 <colspec colname="c3" colwidth="2*" />
102 <colspec colname="c4" colwidth="2*" />
103 <colspec colname="c5" colwidth="2*" />
104 <spanspec namest="c3" nameend="c5" spanname="hspan" />
105 <tbody valign="top">
106 <row>
107 <entry>__u32</entry>
108 <entry><structfield>service_set</structfield></entry>
109 <entry spanname="hspan"><para>If
110<structfield>service_set</structfield> is non-zero when passed with
111&VIDIOC-S-FMT; or &VIDIOC-TRY-FMT;, the
112<structfield>service_lines</structfield> array will be filled by the
113driver according to the services specified in this field. For example,
114if <structfield>service_set</structfield> is initialized with
115<constant>V4L2_SLICED_TELETEXT_B | V4L2_SLICED_WSS_625</constant>, a
116driver for the cx25840 video decoder sets lines 7-22 of both
117fields<footnote><para>According to <link
118linkend="ets300706">ETS&nbsp;300&nbsp;706</link> lines 6-22 of the
119first field and lines 5-22 of the second field may carry Teletext
120data.</para></footnote> to <constant>V4L2_SLICED_TELETEXT_B</constant>
121and line 23 of the first field to
122<constant>V4L2_SLICED_WSS_625</constant>. If
123<structfield>service_set</structfield> is set to zero, then the values
124of <structfield>service_lines</structfield> will be used instead.
125</para><para>On return the driver sets this field to the union of all
126elements of the returned <structfield>service_lines</structfield>
127array. It may contain less services than requested, perhaps just one,
128if the hardware cannot handle more services simultaneously. It may be
129empty (zero) if none of the requested services are supported by the
130hardware.</para></entry>
131 </row>
132 <row>
133 <entry>__u16</entry>
134 <entry><structfield>service_lines</structfield>[2][24]</entry>
135 <entry spanname="hspan"><para>Applications initialize this
136array with sets of data services the driver shall look for or insert
137on the respective scan line. Subject to hardware capabilities drivers
138return the requested set, a subset, which may be just a single
139service, or an empty set. When the hardware cannot handle multiple
140services on the same line the driver shall choose one. No assumptions
141can be made on which service the driver chooses.</para><para>Data
142services are defined in <xref linkend="vbi-services2" />. Array indices
143map to ITU-R line numbers (see also <xref linkend="vbi-525" /> and <xref
144 linkend="vbi-625" />) as follows: <!-- No nested
145tables, sigh. --></para></entry>
146 </row>
147 <row>
148 <entry></entry>
149 <entry></entry>
150 <entry>Element</entry>
151 <entry>525 line systems</entry>
152 <entry>625 line systems</entry>
153 </row>
154 <row>
155 <entry></entry>
156 <entry></entry>
157 <entry><structfield>service_lines</structfield>[0][1]</entry>
158 <entry align="center">1</entry>
159 <entry align="center">1</entry>
160 </row>
161 <row>
162 <entry></entry>
163 <entry></entry>
164 <entry><structfield>service_lines</structfield>[0][23]</entry>
165 <entry align="center">23</entry>
166 <entry align="center">23</entry>
167 </row>
168 <row>
169 <entry></entry>
170 <entry></entry>
171 <entry><structfield>service_lines</structfield>[1][1]</entry>
172 <entry align="center">264</entry>
173 <entry align="center">314</entry>
174 </row>
175 <row>
176 <entry></entry>
177 <entry></entry>
178 <entry><structfield>service_lines</structfield>[1][23]</entry>
179 <entry align="center">286</entry>
180 <entry align="center">336</entry>
181 </row>
182 <!-- End of line numbers table. -->
183 <row>
184 <entry></entry>
185 <entry></entry>
186 <entry spanname="hspan">Drivers must set
187<structfield>service_lines</structfield>[0][0] and
188<structfield>service_lines</structfield>[1][0] to zero.
189The <constant>V4L2_VBI_ITU_525_F1_START</constant>,
190<constant>V4L2_VBI_ITU_525_F2_START</constant>,
191<constant>V4L2_VBI_ITU_625_F1_START</constant> and
192<constant>V4L2_VBI_ITU_625_F2_START</constant> defines give the start
193line numbers for each field for each 525 or 625 line format as a
194convenience. Don't forget that ITU line numbering starts at 1, not 0.
195</entry>
196 </row>
197 <row>
198 <entry>__u32</entry>
199 <entry><structfield>io_size</structfield></entry>
200 <entry spanname="hspan">Maximum number of bytes passed by
201one &func-read; or &func-write; call, and the buffer size in bytes for
202the &VIDIOC-QBUF; and &VIDIOC-DQBUF; ioctl. Drivers set this field to
203the size of &v4l2-sliced-vbi-data; times the number of non-zero
204elements in the returned <structfield>service_lines</structfield>
205array (that is the number of lines potentially carrying data).</entry>
206 </row>
207 <row>
208 <entry>__u32</entry>
209 <entry><structfield>reserved</structfield>[2]</entry>
210 <entry spanname="hspan">This array is reserved for future
211extensions. Applications and drivers must set it to zero.</entry>
212 </row>
213 </tbody>
214 </tgroup>
215 </table>
216
217 <!-- See also vidioc-g-sliced-vbi-cap.sgml -->
218 <table frame="none" pgwide="1" id="vbi-services2">
219 <title>Sliced VBI services</title>
220 <tgroup cols="5">
221 <colspec colname="c1" colwidth="2*" />
222 <colspec colname="c2" colwidth="1*" />
223 <colspec colname="c3" colwidth="1*" />
224 <colspec colname="c4" colwidth="2*" />
225 <colspec colname="c5" colwidth="2*" />
226 <spanspec namest="c3" nameend="c5" spanname="rlp" />
227 <thead>
228 <row>
229 <entry>Symbol</entry>
230 <entry>Value</entry>
231 <entry>Reference</entry>
232 <entry>Lines, usually</entry>
233 <entry>Payload</entry>
234 </row>
235 </thead>
236 <tbody valign="top">
237 <row>
238 <entry><constant>V4L2_SLICED_TELETEXT_B</constant>
239(Teletext System B)</entry>
240 <entry>0x0001</entry>
241 <entry><xref linkend="ets300706" />, <xref linkend="itu653" /></entry>
242 <entry>PAL/SECAM line 7-22, 320-335 (second field 7-22)</entry>
243 <entry>Last 42 of the 45 byte Teletext packet, that is
244without clock run-in and framing code, lsb first transmitted.</entry>
245 </row>
246 <row>
247 <entry><constant>V4L2_SLICED_VPS</constant></entry>
248 <entry>0x0400</entry>
249 <entry><xref linkend="ets300231" /></entry>
250 <entry>PAL line 16</entry>
251 <entry>Byte number 3 to 15 according to Figure 9 of
252ETS&nbsp;300&nbsp;231, lsb first transmitted.</entry>
253 </row>
254 <row>
255 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry>
256 <entry>0x1000</entry>
257 <entry><xref linkend="cea608" /></entry>
258 <entry>NTSC line 21, 284 (second field 21)</entry>
259 <entry>Two bytes in transmission order, including parity
260bit, lsb first transmitted.</entry>
261 </row>
262 <row>
263 <entry><constant>V4L2_SLICED_WSS_625</constant></entry>
264 <entry>0x4000</entry>
265 <entry><xref linkend="itu1119" />, <xref linkend="en300294" /></entry>
266 <entry>PAL/SECAM line 23</entry>
267 <entry><screen>
268Byte 0 1
269 msb lsb msb lsb
270 Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9
271</screen></entry>
272 </row>
273 <row>
274 <entry><constant>V4L2_SLICED_VBI_525</constant></entry>
275 <entry>0x1000</entry>
276 <entry spanname="rlp">Set of services applicable to 525
277line systems.</entry>
278 </row>
279 <row>
280 <entry><constant>V4L2_SLICED_VBI_625</constant></entry>
281 <entry>0x4401</entry>
282 <entry spanname="rlp">Set of services applicable to 625
283line systems.</entry>
284 </row>
285 </tbody>
286 </tgroup>
287 </table>
288
289 <para>Drivers may return an &EINVAL; when applications attempt to
290read or write data without prior format negotiation, after switching
291the video standard (which may invalidate the negotiated VBI
292parameters) and after switching the video input (which may change the
293video standard as a side effect). The &VIDIOC-S-FMT; ioctl may return
294an &EBUSY; when applications attempt to change the format while i/o is
295in progress (between a &VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; call,
296and after the first &func-read; or &func-write; call).</para>
297 </section>
298
299 <section>
300 <title>Reading and writing sliced VBI data</title>
301
302 <para>A single &func-read; or &func-write; call must pass all data
303belonging to one video frame. That is an array of
304<structname>v4l2_sliced_vbi_data</structname> structures with one or
305more elements and a total size not exceeding
306<structfield>io_size</structfield> bytes. Likewise in streaming I/O
307mode one buffer of <structfield>io_size</structfield> bytes must
308contain data of one video frame. The <structfield>id</structfield> of
309unused <structname>v4l2_sliced_vbi_data</structname> elements must be
310zero.</para>
311
312 <table frame="none" pgwide="1" id="v4l2-sliced-vbi-data">
313 <title>struct
314<structname>v4l2_sliced_vbi_data</structname></title>
315 <tgroup cols="3">
316 &cs-def;
317 <tbody valign="top">
318 <row>
319 <entry>__u32</entry>
320 <entry><structfield>id</structfield></entry>
321 <entry>A flag from <xref linkend="vbi-services" />
322identifying the type of data in this packet. Only a single bit must be
323set. When the <structfield>id</structfield> of a captured packet is
324zero, the packet is empty and the contents of other fields are
325undefined. Applications shall ignore empty packets. When the
326<structfield>id</structfield> of a packet for output is zero the
327contents of the <structfield>data</structfield> field are undefined
328and the driver must no longer insert data on the requested
329<structfield>field</structfield> and
330<structfield>line</structfield>.</entry>
331 </row>
332 <row>
333 <entry>__u32</entry>
334 <entry><structfield>field</structfield></entry>
335 <entry>The video field number this data has been captured
336from, or shall be inserted at. <constant>0</constant> for the first
337field, <constant>1</constant> for the second field.</entry>
338 </row>
339 <row>
340 <entry>__u32</entry>
341 <entry><structfield>line</structfield></entry>
342 <entry>The field (as opposed to frame) line number this
343data has been captured from, or shall be inserted at. See <xref
344 linkend="vbi-525" /> and <xref linkend="vbi-625" /> for valid
345values. Sliced VBI capture devices can set the line number of all
346packets to <constant>0</constant> if the hardware cannot reliably
347identify scan lines. The field number must always be valid.</entry>
348 </row>
349 <row>
350 <entry>__u32</entry>
351 <entry><structfield>reserved</structfield></entry>
352 <entry>This field is reserved for future extensions.
353Applications and drivers must set it to zero.</entry>
354 </row>
355 <row>
356 <entry>__u8</entry>
357 <entry><structfield>data</structfield>[48]</entry>
358 <entry>The packet payload. See <xref
359 linkend="vbi-services" /> for the contents and number of
360bytes passed for each data type. The contents of padding bytes at the
361end of this array are undefined, drivers and applications shall ignore
362them.</entry>
363 </row>
364 </tbody>
365 </tgroup>
366 </table>
367
368 <para>Packets are always passed in ascending line number order,
369without duplicate line numbers. The &func-write; function and the
370&VIDIOC-QBUF; ioctl must return an &EINVAL; when applications violate
371this rule. They must also return an &EINVAL; when applications pass an
372incorrect field or line number, or a combination of
373<structfield>field</structfield>, <structfield>line</structfield> and
374<structfield>id</structfield> which has not been negotiated with the
375&VIDIOC-G-FMT; or &VIDIOC-S-FMT; ioctl. When the line numbers are
376unknown the driver must pass the packets in transmitted order. The
377driver can insert empty packets with <structfield>id</structfield> set
378to zero anywhere in the packet array.</para>
379
380 <para>To assure synchronization and to distinguish from frame
381dropping, when a captured frame does not carry any of the requested
382data services drivers must pass one or more empty packets. When an
383application fails to pass VBI data in time for output, the driver
384must output the last VPS and WSS packet again, and disable the output
385of Closed Caption and Teletext data, or output data which is ignored
386by Closed Caption and Teletext decoders.</para>
387
388 <para>A sliced VBI device may support <link
389linkend="rw">read/write</link> and/or streaming (<link
390linkend="mmap">memory mapping</link> and/or <link linkend="userp">user
391pointer</link>) I/O. The latter bears the possibility of synchronizing
392video and VBI data by using buffer timestamps.</para>
393
394 </section>
395
396 <section>
397 <title>Sliced VBI Data in MPEG Streams</title>
398
399 <para>If a device can produce an MPEG output stream, it may be
400capable of providing <link
401linkend="sliced-vbi-format-negotitation">negotiated sliced VBI
402services</link> as data embedded in the MPEG stream. Users or
403applications control this sliced VBI data insertion with the <link
404linkend="v4l2-mpeg-stream-vbi-fmt">V4L2_CID_MPEG_STREAM_VBI_FMT</link>
405control.</para>
406
407 <para>If the driver does not provide the <link
408linkend="v4l2-mpeg-stream-vbi-fmt">V4L2_CID_MPEG_STREAM_VBI_FMT</link>
409control, or only allows that control to be set to <link
410linkend="v4l2-mpeg-stream-vbi-fmt"><constant>
411V4L2_MPEG_STREAM_VBI_FMT_NONE</constant></link>, then the device
412cannot embed sliced VBI data in the MPEG stream.</para>
413
414 <para>The <link linkend="v4l2-mpeg-stream-vbi-fmt">
415V4L2_CID_MPEG_STREAM_VBI_FMT</link> control does not implicitly set
416the device driver to capture nor cease capturing sliced VBI data. The
417control only indicates to embed sliced VBI data in the MPEG stream, if
418an application has negotiated sliced VBI service be captured.</para>
419
420 <para>It may also be the case that a device can embed sliced VBI
421data in only certain types of MPEG streams: for example in an MPEG-2
422PS but not an MPEG-2 TS. In this situation, if sliced VBI data
423insertion is requested, the sliced VBI data will be embedded in MPEG
424stream types when supported, and silently omitted from MPEG stream
425types where sliced VBI data insertion is not supported by the device.
426</para>
427
428 <para>The following subsections specify the format of the
429embedded sliced VBI data.</para>
430
431 <section>
432 <title>MPEG Stream Embedded, Sliced VBI Data Format: NONE</title>
433 <para>The <link linkend="v4l2-mpeg-stream-vbi-fmt"><constant>
434V4L2_MPEG_STREAM_VBI_FMT_NONE</constant></link> embedded sliced VBI
435format shall be interpreted by drivers as a control to cease
436embedding sliced VBI data in MPEG streams. Neither the device nor
437driver shall insert "empty" embedded sliced VBI data packets in the
438MPEG stream when this format is set. No MPEG stream data structures
439are specified for this format.</para>
440 </section>
441
442 <section>
443 <title>MPEG Stream Embedded, Sliced VBI Data Format: IVTV</title>
444 <para>The <link linkend="v4l2-mpeg-stream-vbi-fmt"><constant>
445V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant></link> embedded sliced VBI
446format, when supported, indicates to the driver to embed up to 36
447lines of sliced VBI data per frame in an MPEG-2 <emphasis>Private
448Stream 1 PES</emphasis> packet encapsulated in an MPEG-2 <emphasis>
449Program Pack</emphasis> in the MPEG stream.</para>
450
451 <para><emphasis>Historical context</emphasis>: This format
452specification originates from a custom, embedded, sliced VBI data
453format used by the <filename>ivtv</filename> driver. This format
454has already been informally specified in the kernel sources in the
455file <filename>Documentation/video4linux/cx2341x/README.vbi</filename>
456. The maximum size of the payload and other aspects of this format
457are driven by the CX23415 MPEG decoder's capabilities and limitations
458with respect to extracting, decoding, and displaying sliced VBI data
459embedded within an MPEG stream.</para>
460
461 <para>This format's use is <emphasis>not</emphasis> exclusive to
462the <filename>ivtv</filename> driver <emphasis>nor</emphasis>
463exclusive to CX2341x devices, as the sliced VBI data packet insertion
464into the MPEG stream is implemented in driver software. At least the
465<filename>cx18</filename> driver provides sliced VBI data insertion
466into an MPEG-2 PS in this format as well.</para>
467
468 <para>The following definitions specify the payload of the
469MPEG-2 <emphasis>Private Stream 1 PES</emphasis> packets that contain
470sliced VBI data when <link linkend="v4l2-mpeg-stream-vbi-fmt">
471<constant>V4L2_MPEG_STREAM_VBI_FMT_IVTV</constant></link> is set.
472(The MPEG-2 <emphasis>Private Stream 1 PES</emphasis> packet header
473and encapsulating MPEG-2 <emphasis>Program Pack</emphasis> header are
474not detailed here. Please refer to the MPEG-2 specifications for
475details on those packet headers.)</para>
476
477 <para>The payload of the MPEG-2 <emphasis>Private Stream 1 PES
478</emphasis> packets that contain sliced VBI data is specified by
479&v4l2-mpeg-vbi-fmt-ivtv;. The payload is variable
480length, depending on the actual number of lines of sliced VBI data
481present in a video frame. The payload may be padded at the end with
482unspecified fill bytes to align the end of the payload to a 4-byte
483boundary. The payload shall never exceed 1552 bytes (2 fields with
48418 lines/field with 43 bytes of data/line and a 4 byte magic number).
485</para>
486
487 <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-fmt-ivtv">
488 <title>struct <structname>v4l2_mpeg_vbi_fmt_ivtv</structname>
489 </title>
490 <tgroup cols="4">
491 &cs-ustr;
492 <tbody valign="top">
493 <row>
494 <entry>__u8</entry>
495 <entry><structfield>magic</structfield>[4]</entry>
496 <entry></entry>
497 <entry>A "magic" constant from <xref
498 linkend="v4l2-mpeg-vbi-fmt-ivtv-magic" /> that indicates
499this is a valid sliced VBI data payload and also indicates which
500member of the anonymous union, <structfield>itv0</structfield> or
501<structfield>ITV0</structfield>, to use for the payload data.</entry>
502 </row>
503 <row>
504 <entry>union</entry>
505 <entry>(anonymous)</entry>
506 </row>
507 <row>
508 <entry></entry>
509 <entry>struct <link linkend="v4l2-mpeg-vbi-itv0">
510 <structname>v4l2_mpeg_vbi_itv0</structname></link>
511 </entry>
512 <entry><structfield>itv0</structfield></entry>
513 <entry>The primary form of the sliced VBI data payload
514that contains anywhere from 1 to 35 lines of sliced VBI data.
515Line masks are provided in this form of the payload indicating
516which VBI lines are provided.</entry>
517 </row>
518 <row>
519 <entry></entry>
520 <entry>struct <link linkend="v4l2-mpeg-vbi-itv0-1">
521 <structname>v4l2_mpeg_vbi_ITV0</structname></link>
522 </entry>
523 <entry><structfield>ITV0</structfield></entry>
524 <entry>An alternate form of the sliced VBI data payload
525used when 36 lines of sliced VBI data are present. No line masks are
526provided in this form of the payload; all valid line mask bits are
527implcitly set.</entry>
528 </row>
529 </tbody>
530 </tgroup>
531 </table>
532
533 <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-fmt-ivtv-magic">
534 <title>Magic Constants for &v4l2-mpeg-vbi-fmt-ivtv;
535 <structfield>magic</structfield> field</title>
536 <tgroup cols="3">
537 &cs-def;
538 <thead>
539 <row>
540 <entry align="left">Defined Symbol</entry>
541 <entry align="left">Value</entry>
542 <entry align="left">Description</entry>
543 </row>
544 </thead>
545 <tbody valign="top">
546 <row>
547 <entry><constant>V4L2_MPEG_VBI_IVTV_MAGIC0</constant>
548 </entry>
549 <entry>"itv0"</entry>
550 <entry>Indicates the <structfield>itv0</structfield>
551member of the union in &v4l2-mpeg-vbi-fmt-ivtv; is valid.</entry>
552 </row>
553 <row>
554 <entry><constant>V4L2_MPEG_VBI_IVTV_MAGIC1</constant>
555 </entry>
556 <entry>"ITV0"</entry>
557 <entry>Indicates the <structfield>ITV0</structfield>
558member of the union in &v4l2-mpeg-vbi-fmt-ivtv; is valid and
559that 36 lines of sliced VBI data are present.</entry>
560 </row>
561 </tbody>
562 </tgroup>
563 </table>
564
565 <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-itv0">
566 <title>struct <structname>v4l2_mpeg_vbi_itv0</structname>
567 </title>
568 <tgroup cols="3">
569 &cs-str;
570 <tbody valign="top">
571 <row>
572 <entry>__le32</entry>
573 <entry><structfield>linemask</structfield>[2]</entry>
574 <entry><para>Bitmasks indicating the VBI service lines
575present. These <structfield>linemask</structfield> values are stored
576in little endian byte order in the MPEG stream. Some reference
577<structfield>linemask</structfield> bit positions with their
578corresponding VBI line number and video field are given below.
579b<subscript>0</subscript> indicates the least significant bit of a
580<structfield>linemask</structfield> value:<screen>
581<structfield>linemask</structfield>[0] b<subscript>0</subscript>: line 6 first field
582<structfield>linemask</structfield>[0] b<subscript>17</subscript>: line 23 first field
583<structfield>linemask</structfield>[0] b<subscript>18</subscript>: line 6 second field
584<structfield>linemask</structfield>[0] b<subscript>31</subscript>: line 19 second field
585<structfield>linemask</structfield>[1] b<subscript>0</subscript>: line 20 second field
586<structfield>linemask</structfield>[1] b<subscript>3</subscript>: line 23 second field
587<structfield>linemask</structfield>[1] b<subscript>4</subscript>-b<subscript>31</subscript>: unused and set to 0</screen></para></entry>
588 </row>
589 <row>
590 <entry>struct <link linkend="v4l2-mpeg-vbi-itv0-line">
591 <structname>v4l2_mpeg_vbi_itv0_line</structname></link>
592 </entry>
593 <entry><structfield>line</structfield>[35]</entry>
594 <entry>This is a variable length array that holds from 1
595to 35 lines of sliced VBI data. The sliced VBI data lines present
596correspond to the bits set in the <structfield>linemask</structfield>
597array, starting from b<subscript>0</subscript> of <structfield>
598linemask</structfield>[0] up through b<subscript>31</subscript> of
599<structfield>linemask</structfield>[0], and from b<subscript>0
600</subscript> of <structfield>linemask</structfield>[1] up through b
601<subscript>3</subscript> of <structfield>linemask</structfield>[1].
602<structfield>line</structfield>[0] corresponds to the first bit
603found set in the <structfield>linemask</structfield> array,
604<structfield>line</structfield>[1] corresponds to the second bit
605found set in the <structfield>linemask</structfield> array, etc.
606If no <structfield>linemask</structfield> array bits are set, then
607<structfield>line</structfield>[0] may contain one line of
608unspecified data that should be ignored by applications.</entry>
609 </row>
610 </tbody>
611 </tgroup>
612 </table>
613
614 <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-itv0-1">
615 <title>struct <structname>v4l2_mpeg_vbi_ITV0</structname>
616 </title>
617 <tgroup cols="3">
618 &cs-str;
619 <tbody valign="top">
620 <row>
621 <entry>struct <link linkend="v4l2-mpeg-vbi-itv0-line">
622 <structname>v4l2_mpeg_vbi_itv0_line</structname></link>
623 </entry>
624 <entry><structfield>line</structfield>[36]</entry>
625 <entry>A fixed length array of 36 lines of sliced VBI
626data. <structfield>line</structfield>[0] through <structfield>line
627</structfield>[17] correspond to lines 6 through 23 of the
628first field. <structfield>line</structfield>[18] through
629<structfield>line</structfield>[35] corresponds to lines 6
630through 23 of the second field.</entry>
631 </row>
632 </tbody>
633 </tgroup>
634 </table>
635
636 <table frame="none" pgwide="1" id="v4l2-mpeg-vbi-itv0-line">
637 <title>struct <structname>v4l2_mpeg_vbi_itv0_line</structname>
638 </title>
639 <tgroup cols="3">
640 &cs-str;
641 <tbody valign="top">
642 <row>
643 <entry>__u8</entry>
644 <entry><structfield>id</structfield></entry>
645 <entry>A line identifier value from
646<xref linkend="ITV0-Line-Identifier-Constants" /> that indicates
647the type of sliced VBI data stored on this line.</entry>
648 </row>
649 <row>
650 <entry>__u8</entry>
651 <entry><structfield>data</structfield>[42]</entry>
652 <entry>The sliced VBI data for the line.</entry>
653 </row>
654 </tbody>
655 </tgroup>
656 </table>
657
658 <table frame="none" pgwide="1" id="ITV0-Line-Identifier-Constants">
659 <title>Line Identifiers for struct <link
660 linkend="v4l2-mpeg-vbi-itv0-line"><structname>
661v4l2_mpeg_vbi_itv0_line</structname></link> <structfield>id
662</structfield> field</title>
663 <tgroup cols="3">
664 &cs-def;
665 <thead>
666 <row>
667 <entry align="left">Defined Symbol</entry>
668 <entry align="left">Value</entry>
669 <entry align="left">Description</entry>
670 </row>
671 </thead>
672 <tbody valign="top">
673 <row>
674 <entry><constant>V4L2_MPEG_VBI_IVTV_TELETEXT_B</constant>
675 </entry>
676 <entry>1</entry>
677 <entry>Refer to <link linkend="vbi-services2">
678Sliced VBI services</link> for a description of the line payload.</entry>
679 </row>
680 <row>
681 <entry><constant>V4L2_MPEG_VBI_IVTV_CAPTION_525</constant>
682 </entry>
683 <entry>4</entry>
684 <entry>Refer to <link linkend="vbi-services2">
685Sliced VBI services</link> for a description of the line payload.</entry>
686 </row>
687 <row>
688 <entry><constant>V4L2_MPEG_VBI_IVTV_WSS_625</constant>
689 </entry>
690 <entry>5</entry>
691 <entry>Refer to <link linkend="vbi-services2">
692Sliced VBI services</link> for a description of the line payload.</entry>
693 </row>
694 <row>
695 <entry><constant>V4L2_MPEG_VBI_IVTV_VPS</constant>
696 </entry>
697 <entry>7</entry>
698 <entry>Refer to <link linkend="vbi-services2">
699Sliced VBI services</link> for a description of the line payload.</entry>
700 </row>
701 </tbody>
702 </tgroup>
703 </table>
704
705 </section>
706 </section>
diff --git a/Documentation/DocBook/media/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml
deleted file mode 100644
index f4bc27af83eb..000000000000
--- a/Documentation/DocBook/media/v4l/dev-subdev.xml
+++ /dev/null
@@ -1,478 +0,0 @@
1 <title>Sub-device Interface</title>
2
3 <para>The complex nature of V4L2 devices, where hardware is often made of
4 several integrated circuits that need to interact with each other in a
5 controlled way, leads to complex V4L2 drivers. The drivers usually reflect
6 the hardware model in software, and model the different hardware components
7 as software blocks called sub-devices.</para>
8
9 <para>V4L2 sub-devices are usually kernel-only objects. If the V4L2 driver
10 implements the media device API, they will automatically inherit from media
11 entities. Applications will be able to enumerate the sub-devices and discover
12 the hardware topology using the media entities, pads and links enumeration
13 API.</para>
14
15 <para>In addition to make sub-devices discoverable, drivers can also choose
16 to make them directly configurable by applications. When both the sub-device
17 driver and the V4L2 device driver support this, sub-devices will feature a
18 character device node on which ioctls can be called to
19 <itemizedlist>
20 <listitem><para>query, read and write sub-devices controls</para></listitem>
21 <listitem><para>subscribe and unsubscribe to events and retrieve them</para></listitem>
22 <listitem><para>negotiate image formats on individual pads</para></listitem>
23 </itemizedlist>
24 </para>
25
26 <para>Sub-device character device nodes, conventionally named
27 <filename>/dev/v4l-subdev*</filename>, use major number 81.</para>
28
29 <section>
30 <title>Controls</title>
31 <para>Most V4L2 controls are implemented by sub-device hardware. Drivers
32 usually merge all controls and expose them through video device nodes.
33 Applications can control all sub-devices through a single interface.</para>
34
35 <para>Complex devices sometimes implement the same control in different
36 pieces of hardware. This situation is common in embedded platforms, where
37 both sensors and image processing hardware implement identical functions,
38 such as contrast adjustment, white balance or faulty pixels correction. As
39 the V4L2 controls API doesn't support several identical controls in a single
40 device, all but one of the identical controls are hidden.</para>
41
42 <para>Applications can access those hidden controls through the sub-device
43 node with the V4L2 control API described in <xref linkend="control" />. The
44 ioctls behave identically as when issued on V4L2 device nodes, with the
45 exception that they deal only with controls implemented in the sub-device.
46 </para>
47
48 <para>Depending on the driver, those controls might also be exposed through
49 one (or several) V4L2 device nodes.</para>
50 </section>
51
52 <section>
53 <title>Events</title>
54 <para>V4L2 sub-devices can notify applications of events as described in
55 <xref linkend="event" />. The API behaves identically as when used on V4L2
56 device nodes, with the exception that it only deals with events generated by
57 the sub-device. Depending on the driver, those events might also be reported
58 on one (or several) V4L2 device nodes.</para>
59 </section>
60
61 <section id="pad-level-formats">
62 <title>Pad-level Formats</title>
63
64 <warning><para>Pad-level formats are only applicable to very complex device that
65 need to expose low-level format configuration to user space. Generic V4L2
66 applications do <emphasis>not</emphasis> need to use the API described in
67 this section.</para></warning>
68
69 <note><para>For the purpose of this section, the term
70 <wordasword>format</wordasword> means the combination of media bus data
71 format, frame width and frame height.</para></note>
72
73 <para>Image formats are typically negotiated on video capture and
74 output devices using the format and <link
75 linkend="vidioc-subdev-g-selection">selection</link> ioctls. The
76 driver is responsible for configuring every block in the video
77 pipeline according to the requested format at the pipeline input
78 and/or output.</para>
79
80 <para>For complex devices, such as often found in embedded systems,
81 identical image sizes at the output of a pipeline can be achieved using
82 different hardware configurations. One such example is shown on
83 <xref linkend="pipeline-scaling" />, where
84 image scaling can be performed on both the video sensor and the host image
85 processing hardware.</para>
86
87 <figure id="pipeline-scaling">
88 <title>Image Format Negotiation on Pipelines</title>
89 <mediaobject>
90 <imageobject>
91 <imagedata fileref="pipeline.pdf" format="PS" />
92 </imageobject>
93 <imageobject>
94 <imagedata fileref="pipeline.png" format="PNG" />
95 </imageobject>
96 <textobject>
97 <phrase>High quality and high speed pipeline configuration</phrase>
98 </textobject>
99 </mediaobject>
100 </figure>
101
102 <para>The sensor scaler is usually of less quality than the host scaler, but
103 scaling on the sensor is required to achieve higher frame rates. Depending
104 on the use case (quality vs. speed), the pipeline must be configured
105 differently. Applications need to configure the formats at every point in
106 the pipeline explicitly.</para>
107
108 <para>Drivers that implement the <link linkend="media-controller-intro">media
109 API</link> can expose pad-level image format configuration to applications.
110 When they do, applications can use the &VIDIOC-SUBDEV-G-FMT; and
111 &VIDIOC-SUBDEV-S-FMT; ioctls. to negotiate formats on a per-pad basis.</para>
112
113 <para>Applications are responsible for configuring coherent parameters on
114 the whole pipeline and making sure that connected pads have compatible
115 formats. The pipeline is checked for formats mismatch at &VIDIOC-STREAMON;
116 time, and an &EPIPE; is then returned if the configuration is
117 invalid.</para>
118
119 <para>Pad-level image format configuration support can be tested by calling
120 the &VIDIOC-SUBDEV-G-FMT; ioctl on pad 0. If the driver returns an &EINVAL;
121 pad-level format configuration is not supported by the sub-device.</para>
122
123 <section>
124 <title>Format Negotiation</title>
125
126 <para>Acceptable formats on pads can (and usually do) depend on a number
127 of external parameters, such as formats on other pads, active links, or
128 even controls. Finding a combination of formats on all pads in a video
129 pipeline, acceptable to both application and driver, can't rely on formats
130 enumeration only. A format negotiation mechanism is required.</para>
131
132 <para>Central to the format negotiation mechanism are the get/set format
133 operations. When called with the <structfield>which</structfield> argument
134 set to <constant>V4L2_SUBDEV_FORMAT_TRY</constant>, the
135 &VIDIOC-SUBDEV-G-FMT; and &VIDIOC-SUBDEV-S-FMT; ioctls operate on a set of
136 formats parameters that are not connected to the hardware configuration.
137 Modifying those 'try' formats leaves the device state untouched (this
138 applies to both the software state stored in the driver and the hardware
139 state stored in the device itself).</para>
140
141 <para>While not kept as part of the device state, try formats are stored
142 in the sub-device file handles. A &VIDIOC-SUBDEV-G-FMT; call will return
143 the last try format set <emphasis>on the same sub-device file
144 handle</emphasis>. Several applications querying the same sub-device at
145 the same time will thus not interact with each other.</para>
146
147 <para>To find out whether a particular format is supported by the device,
148 applications use the &VIDIOC-SUBDEV-S-FMT; ioctl. Drivers verify and, if
149 needed, change the requested <structfield>format</structfield> based on
150 device requirements and return the possibly modified value. Applications
151 can then choose to try a different format or accept the returned value and
152 continue.</para>
153
154 <para>Formats returned by the driver during a negotiation iteration are
155 guaranteed to be supported by the device. In particular, drivers guarantee
156 that a returned format will not be further changed if passed to an
157 &VIDIOC-SUBDEV-S-FMT; call as-is (as long as external parameters, such as
158 formats on other pads or links' configuration are not changed).</para>
159
160 <para>Drivers automatically propagate formats inside sub-devices. When a
161 try or active format is set on a pad, corresponding formats on other pads
162 of the same sub-device can be modified by the driver. Drivers are free to
163 modify formats as required by the device. However, they should comply with
164 the following rules when possible:
165 <itemizedlist>
166 <listitem><para>Formats should be propagated from sink pads to source pads.
167 Modifying a format on a source pad should not modify the format on any
168 sink pad.</para></listitem>
169 <listitem><para>Sub-devices that scale frames using variable scaling factors
170 should reset the scale factors to default values when sink pads formats
171 are modified. If the 1:1 scaling ratio is supported, this means that
172 source pads formats should be reset to the sink pads formats.</para></listitem>
173 </itemizedlist>
174 </para>
175
176 <para>Formats are not propagated across links, as that would involve
177 propagating them from one sub-device file handle to another. Applications
178 must then take care to configure both ends of every link explicitly with
179 compatible formats. Identical formats on the two ends of a link are
180 guaranteed to be compatible. Drivers are free to accept different formats
181 matching device requirements as being compatible.</para>
182
183 <para><xref linkend="sample-pipeline-config" />
184 shows a sample configuration sequence for the pipeline described in
185 <xref linkend="pipeline-scaling" /> (table
186 columns list entity names and pad numbers).</para>
187
188 <table pgwide="0" frame="none" id="sample-pipeline-config">
189 <title>Sample Pipeline Configuration</title>
190 <tgroup cols="3">
191 <colspec colname="what"/>
192 <colspec colname="sensor-0 format" />
193 <colspec colname="frontend-0 format" />
194 <colspec colname="frontend-1 format" />
195 <colspec colname="scaler-0 format" />
196 <colspec colname="scaler-0 compose" />
197 <colspec colname="scaler-1 format" />
198 <thead>
199 <row>
200 <entry></entry>
201 <entry>Sensor/0 format</entry>
202 <entry>Frontend/0 format</entry>
203 <entry>Frontend/1 format</entry>
204 <entry>Scaler/0 format</entry>
205 <entry>Scaler/0 compose selection rectangle</entry>
206 <entry>Scaler/1 format</entry>
207 </row>
208 </thead>
209 <tbody valign="top">
210 <row>
211 <entry>Initial state</entry>
212 <entry>2048x1536/SGRBG8_1X8</entry>
213 <entry>(default)</entry>
214 <entry>(default)</entry>
215 <entry>(default)</entry>
216 <entry>(default)</entry>
217 <entry>(default)</entry>
218 </row>
219 <row>
220 <entry>Configure frontend sink format</entry>
221 <entry>2048x1536/SGRBG8_1X8</entry>
222 <entry><emphasis>2048x1536/SGRBG8_1X8</emphasis></entry>
223 <entry><emphasis>2046x1534/SGRBG8_1X8</emphasis></entry>
224 <entry>(default)</entry>
225 <entry>(default)</entry>
226 <entry>(default)</entry>
227 </row>
228 <row>
229 <entry>Configure scaler sink format</entry>
230 <entry>2048x1536/SGRBG8_1X8</entry>
231 <entry>2048x1536/SGRBG8_1X8</entry>
232 <entry>2046x1534/SGRBG8_1X8</entry>
233 <entry><emphasis>2046x1534/SGRBG8_1X8</emphasis></entry>
234 <entry><emphasis>0,0/2046x1534</emphasis></entry>
235 <entry><emphasis>2046x1534/SGRBG8_1X8</emphasis></entry>
236 </row>
237 <row>
238 <entry>Configure scaler sink compose selection</entry>
239 <entry>2048x1536/SGRBG8_1X8</entry>
240 <entry>2048x1536/SGRBG8_1X8</entry>
241 <entry>2046x1534/SGRBG8_1X8</entry>
242 <entry>2046x1534/SGRBG8_1X8</entry>
243 <entry><emphasis>0,0/1280x960</emphasis></entry>
244 <entry><emphasis>1280x960/SGRBG8_1X8</emphasis></entry>
245 </row>
246 </tbody>
247 </tgroup>
248 </table>
249
250 <para>
251 <orderedlist>
252 <listitem><para>Initial state. The sensor source pad format is
253 set to its native 3MP size and V4L2_MBUS_FMT_SGRBG8_1X8
254 media bus code. Formats on the host frontend and scaler sink
255 and source pads have the default values, as well as the
256 compose rectangle on the scaler's sink pad.</para></listitem>
257
258 <listitem><para>The application configures the frontend sink
259 pad format's size to 2048x1536 and its media bus code to
260 V4L2_MBUS_FMT_SGRBG_1X8. The driver propagates the format to
261 the frontend source pad.</para></listitem>
262
263 <listitem><para>The application configures the scaler sink pad
264 format's size to 2046x1534 and the media bus code to
265 V4L2_MBUS_FMT_SGRBG_1X8 to match the frontend source size and
266 media bus code. The media bus code on the sink pad is set to
267 V4L2_MBUS_FMT_SGRBG_1X8. The driver propagates the size to the
268 compose selection rectangle on the scaler's sink pad, and the
269 format to the scaler source pad.</para></listitem>
270
271 <listitem><para>The application configures the size of the compose
272 selection rectangle of the scaler's sink pad 1280x960. The driver
273 propagates the size to the scaler's source pad
274 format.</para></listitem>
275
276 </orderedlist>
277 </para>
278
279 <para>When satisfied with the try results, applications can set the active
280 formats by setting the <structfield>which</structfield> argument to
281 <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. Active formats are changed
282 exactly as try formats by drivers. To avoid modifying the hardware state
283 during format negotiation, applications should negotiate try formats first
284 and then modify the active settings using the try formats returned during
285 the last negotiation iteration. This guarantees that the active format
286 will be applied as-is by the driver without being modified.
287 </para>
288 </section>
289
290 <section id="v4l2-subdev-selections">
291 <title>Selections: cropping, scaling and composition</title>
292
293 <para>Many sub-devices support cropping frames on their input or output
294 pads (or possible even on both). Cropping is used to select the area of
295 interest in an image, typically on an image sensor or a video decoder. It can
296 also be used as part of digital zoom implementations to select the area of
297 the image that will be scaled up.</para>
298
299 <para>Crop settings are defined by a crop rectangle and represented in a
300 &v4l2-rect; by the coordinates of the top left corner and the rectangle
301 size. Both the coordinates and sizes are expressed in pixels.</para>
302
303 <para>As for pad formats, drivers store try and active
304 rectangles for the selection targets <xref
305 linkend="v4l2-selections-common" />.</para>
306
307 <para>On sink pads, cropping is applied relative to the
308 current pad format. The pad format represents the image size as
309 received by the sub-device from the previous block in the
310 pipeline, and the crop rectangle represents the sub-image that
311 will be transmitted further inside the sub-device for
312 processing.</para>
313
314 <para>The scaling operation changes the size of the image by
315 scaling it to new dimensions. The scaling ratio isn't specified
316 explicitly, but is implied from the original and scaled image
317 sizes. Both sizes are represented by &v4l2-rect;.</para>
318
319 <para>Scaling support is optional. When supported by a subdev,
320 the crop rectangle on the subdev's sink pad is scaled to the
321 size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
322 using <constant>V4L2_SEL_TGT_COMPOSE</constant>
323 selection target on the same pad. If the subdev supports scaling
324 but not composing, the top and left values are not used and must
325 always be set to zero.</para>
326
327 <para>On source pads, cropping is similar to sink pads, with the
328 exception that the source size from which the cropping is
329 performed, is the COMPOSE rectangle on the sink pad. In both
330 sink and source pads, the crop rectangle must be entirely
331 contained inside the source image size for the crop
332 operation.</para>
333
334 <para>The drivers should always use the closest possible
335 rectangle the user requests on all selection targets, unless
336 specifically told otherwise.
337 <constant>V4L2_SEL_FLAG_GE</constant> and
338 <constant>V4L2_SEL_FLAG_LE</constant> flags may be
339 used to round the image size either up or down. <xref
340 linkend="v4l2-selection-flags" /></para>
341 </section>
342
343 <section>
344 <title>Types of selection targets</title>
345
346 <section>
347 <title>Actual targets</title>
348
349 <para>Actual targets (without a postfix) reflect the actual
350 hardware configuration at any point of time. There is a BOUNDS
351 target corresponding to every actual target.</para>
352 </section>
353
354 <section>
355 <title>BOUNDS targets</title>
356
357 <para>BOUNDS targets is the smallest rectangle that contains all
358 valid actual rectangles. It may not be possible to set the actual
359 rectangle as large as the BOUNDS rectangle, however. This may be
360 because e.g. a sensor's pixel array is not rectangular but
361 cross-shaped or round. The maximum size may also be smaller than the
362 BOUNDS rectangle.</para>
363 </section>
364
365 </section>
366
367 <section>
368 <title>Order of configuration and format propagation</title>
369
370 <para>Inside subdevs, the order of image processing steps will
371 always be from the sink pad towards the source pad. This is also
372 reflected in the order in which the configuration must be
373 performed by the user: the changes made will be propagated to
374 any subsequent stages. If this behaviour is not desired, the
375 user must set
376 <constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant> flag. This
377 flag causes no propagation of the changes are allowed in any
378 circumstances. This may also cause the accessed rectangle to be
379 adjusted by the driver, depending on the properties of the
380 underlying hardware.</para>
381
382 <para>The coordinates to a step always refer to the actual size
383 of the previous step. The exception to this rule is the source
384 compose rectangle, which refers to the sink compose bounds
385 rectangle --- if it is supported by the hardware.</para>
386
387 <orderedlist>
388 <listitem><para>Sink pad format. The user configures the sink pad
389 format. This format defines the parameters of the image the
390 entity receives through the pad for further processing.</para></listitem>
391
392 <listitem><para>Sink pad actual crop selection. The sink pad crop
393 defines the crop performed to the sink pad format.</para></listitem>
394
395 <listitem><para>Sink pad actual compose selection. The size of the
396 sink pad compose rectangle defines the scaling ratio compared
397 to the size of the sink pad crop rectangle. The location of
398 the compose rectangle specifies the location of the actual
399 sink compose rectangle in the sink compose bounds
400 rectangle.</para></listitem>
401
402 <listitem><para>Source pad actual crop selection. Crop on the source
403 pad defines crop performed to the image in the sink compose
404 bounds rectangle.</para></listitem>
405
406 <listitem><para>Source pad format. The source pad format defines the
407 output pixel format of the subdev, as well as the other
408 parameters with the exception of the image width and height.
409 Width and height are defined by the size of the source pad
410 actual crop selection.</para></listitem>
411 </orderedlist>
412
413 <para>Accessing any of the above rectangles not supported by the
414 subdev will return <constant>EINVAL</constant>. Any rectangle
415 referring to a previous unsupported rectangle coordinates will
416 instead refer to the previous supported rectangle. For example,
417 if sink crop is not supported, the compose selection will refer
418 to the sink pad format dimensions instead.</para>
419
420 <figure id="subdev-image-processing-crop">
421 <title>Image processing in subdevs: simple crop example</title>
422 <mediaobject>
423 <imageobject>
424 <imagedata fileref="subdev-image-processing-crop.svg"
425 format="SVG" scale="200" />
426 </imageobject>
427 </mediaobject>
428 </figure>
429
430 <para>In the above example, the subdev supports cropping on its
431 sink pad. To configure it, the user sets the media bus format on
432 the subdev's sink pad. Now the actual crop rectangle can be set
433 on the sink pad --- the location and size of this rectangle
434 reflect the location and size of a rectangle to be cropped from
435 the sink format. The size of the sink crop rectangle will also
436 be the size of the format of the subdev's source pad.</para>
437
438 <figure id="subdev-image-processing-scaling-multi-source">
439 <title>Image processing in subdevs: scaling with multiple sources</title>
440 <mediaobject>
441 <imageobject>
442 <imagedata fileref="subdev-image-processing-scaling-multi-source.svg"
443 format="SVG" scale="200" />
444 </imageobject>
445 </mediaobject>
446 </figure>
447
448 <para>In this example, the subdev is capable of first cropping,
449 then scaling and finally cropping for two source pads
450 individually from the resulting scaled image. The location of
451 the scaled image in the cropped image is ignored in sink compose
452 target. Both of the locations of the source crop rectangles
453 refer to the sink scaling rectangle, independently cropping an
454 area at location specified by the source crop rectangle from
455 it.</para>
456
457 <figure id="subdev-image-processing-full">
458 <title>Image processing in subdevs: scaling and composition
459 with multiple sinks and sources</title>
460 <mediaobject>
461 <imageobject>
462 <imagedata fileref="subdev-image-processing-full.svg"
463 format="SVG" scale="200" />
464 </imageobject>
465 </mediaobject>
466 </figure>
467
468 <para>The subdev driver supports two sink pads and two source
469 pads. The images from both of the sink pads are individually
470 cropped, then scaled and further composed on the composition
471 bounds rectangle. From that, two independent streams are cropped
472 and sent out of the subdev from the source pads.</para>
473
474 </section>
475
476 </section>
477
478 &sub-subdev-formats;
diff --git a/Documentation/DocBook/media/v4l/dev-teletext.xml b/Documentation/DocBook/media/v4l/dev-teletext.xml
deleted file mode 100644
index bd21c64d70f3..000000000000
--- a/Documentation/DocBook/media/v4l/dev-teletext.xml
+++ /dev/null
@@ -1,29 +0,0 @@
1 <title>Teletext Interface</title>
2
3 <para>This interface was aimed at devices receiving and demodulating
4Teletext data [<xref linkend="ets300706" />, <xref linkend="itu653" />], evaluating the
5Teletext packages and storing formatted pages in cache memory. Such
6devices are usually implemented as microcontrollers with serial
7interface (I<superscript>2</superscript>C) and could be found on old
8TV cards, dedicated Teletext decoding cards and home-brew devices
9connected to the PC parallel port.</para>
10
11 <para>The Teletext API was designed by Martin Buck. It was defined in
12the kernel header file <filename>linux/videotext.h</filename>, the
13specification is available from <ulink url="ftp://ftp.gwdg.de/pub/linux/misc/videotext/">
14ftp://ftp.gwdg.de/pub/linux/misc/videotext/</ulink>. (Videotext is the name of
15the German public television Teletext service.)</para>
16
17 <para>Eventually the Teletext API was integrated into the V4L API
18with character device file names <filename>/dev/vtx0</filename> to
19<filename>/dev/vtx31</filename>, device major number 81, minor numbers
20192 to 223.</para>
21
22 <para>However, teletext decoders were quickly replaced by more
23generic VBI demodulators and those dedicated teletext decoders no longer exist.
24For many years the vtx devices were still around, even though nobody used
25them. So the decision was made to finally remove support for the Teletext API in
26kernel 2.6.37.</para>
27
28 <para>Modern devices all use the <link linkend="raw-vbi">raw</link> or
29<link linkend="sliced">sliced</link> VBI API.</para>
diff --git a/Documentation/DocBook/media/v4l/driver.xml b/Documentation/DocBook/media/v4l/driver.xml
deleted file mode 100644
index 7c6638bacedb..000000000000
--- a/Documentation/DocBook/media/v4l/driver.xml
+++ /dev/null
@@ -1,200 +0,0 @@
1 <title>V4L2 Driver Programming</title>
2
3 <!-- This part defines the interface between the "videodev"
4 module and individual drivers. -->
5
6 <para>to do</para>
7<!--
8 <para>V4L2 is a two-layer driver system. The top layer is the "videodev"
9kernel module. When videodev initializes it registers as character device
10with major number 81, and it registers a set of file operations. All V4L2
11drivers are really clients of videodev, which calls V4L2 drivers through
12driver method functions. V4L2 drivers are also written as kernel modules.
13After probing the hardware they register one or more devices with
14videodev.</para>
15
16 <section id="driver-modules">
17 <title>Driver Modules</title>
18
19 <para>V4L2 driver modules must have an initialization function which is
20called after the module was loaded into kernel, an exit function whis is
21called before the module is removed. When the driver is compiled into the
22kernel these functions called at system boot and shutdown time.</para>
23
24 <informalexample>
25 <programlisting>
26#include &lt;linux/module.h&gt;
27
28/* Export information about this module. For details and other useful
29 macros see <filename>linux/module.h</filename>. */
30MODULE_DESCRIPTION("my - driver for my hardware");
31MODULE_AUTHOR("Your name here");
32MODULE_LICENSE("GPL");
33
34static void
35my_module_exit (void)
36{
37 /* Free all resources allocated by my_module_init(). */
38}
39
40static int
41my_module_init (void)
42{
43 /* Bind the driver to the supported hardware, see
44 <link linkend="driver-pci"> and
45 <link linkend="driver-usb"> for examples. */
46
47 return 0; /* a negative value on error, 0 on success. */
48}
49
50/* Export module functions. */
51module_init (my_module_init);
52module_exit (my_module_exit);
53</programlisting>
54 </informalexample>
55
56 <para>Users can add parameters when kernel modules are inserted:</para>
57
58 <informalexample>
59 <programlisting>
60include &lt;linux/moduleparam.h&gt;
61
62static int my_option = 123;
63static int my_option_array[47];
64
65/* Export the symbol, an int, with access permissions 0664.
66 See <filename>linux/moduleparam.h</filename> for other types. */
67module_param (my_option, int, 0644);
68module_param_array (my_option_array, int, NULL, 0644);
69
70MODULE_PARM_DESC (my_option, "Does magic things, default 123");
71</programlisting>
72 </informalexample>
73
74 <para>One parameter should be supported by all V4L2 drivers, the minor
75number of the device it will register. Purpose is to predictably link V4L2
76drivers to device nodes if more than one video device is installed. Use the
77name of the device node followed by a "_nr" suffix, for example "video_nr"
78for <filename>/dev/video</filename>.</para>
79
80 <informalexample>
81 <programlisting>
82/* Minor number of the device, -1 to allocate the first unused. */
83static int video_nr = -1;
84
85module_param (video_nr, int, 0444);
86</programlisting>
87 </informalexample>
88 </section>
89
90 <section id="driver-pci">
91 <title>PCI Devices</title>
92
93 <para>PCI devices are initialized like this:</para>
94
95 <informalexample>
96 <programlisting>
97typedef struct {
98 /* State of one physical device. */
99} my_device;
100
101static int
102my_resume (struct pci_dev * pci_dev)
103{
104 /* Restore the suspended device to working state. */
105}
106
107static int
108my_suspend (struct pci_dev * pci_dev,
109 pm_message_t state)
110{
111 /* This function is called before the system goes to sleep.
112 Stop all DMAs and disable interrupts, then put the device
113 into a low power state. For details see the kernel
114 sources under <filename>Documentation/power</filename>. */
115
116 return 0; /* a negative value on error, 0 on success. */
117}
118
119static void
120my_remove (struct pci_dev * pci_dev)
121{
122 my_device *my = pci_get_drvdata (pci_dev);
123
124 /* Describe me. */
125}
126
127static int
128my_probe (struct pci_dev * pci_dev,
129 const struct pci_device_id * pci_id)
130{
131 my_device *my;
132
133 /* Describe me. */
134
135 /* You can allocate per-device data here and store a pointer
136 to it in the pci_dev structure. */
137 my = ...;
138 pci_set_drvdata (pci_dev, my);
139
140 return 0; /* a negative value on error, 0 on success. */
141}
142
143/* A list of supported PCI devices. */
144static struct pci_device_id
145my_pci_device_ids [] = {
146 { PCI_VENDOR_ID_FOO, PCI_DEVICE_ID_BAR,
147 PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 },
148 { 0 } /* end of list */
149};
150
151/* Load our module if supported PCI devices are installed. */
152MODULE_DEVICE_TABLE (pci, my_pci_device_ids);
153
154static struct pci_driver
155my_pci_driver = {
156 .name = "my",
157 .id_table = my_pci_device_ids,
158
159 .probe = my_probe,
160 .remove = my_remove,
161
162 /* Power management functions. */
163 .suspend = my_suspend,
164 .resume = my_resume,
165};
166
167static void
168my_module_exit (void)
169{
170 pci_unregister_driver (&my_pci_driver);
171}
172
173static int
174my_module_init (void)
175{
176 return pci_register_driver (&my_pci_driver);
177}
178</programlisting>
179 </informalexample>
180 </section>
181
182 <section id="driver-usb">
183 <title>USB Devices</title>
184 <para>to do</para>
185 </section>
186 <section id="driver-registering">
187 <title>Registering V4L2 Drivers</title>
188
189 <para>After a V4L2 driver probed the hardware it registers one or more
190devices with the videodev module.</para>
191 </section>
192 <section id="driver-file-ops">
193 <title>File Operations</title>
194 <para>to do</para>
195 </section>
196 <section id="driver-internal-api">
197 <title>Internal API</title>
198 <para>to do</para>
199 </section>
200-->
diff --git a/Documentation/DocBook/media/v4l/fdl-appendix.xml b/Documentation/DocBook/media/v4l/fdl-appendix.xml
deleted file mode 100644
index 71299a3897c4..000000000000
--- a/Documentation/DocBook/media/v4l/fdl-appendix.xml
+++ /dev/null
@@ -1,671 +0,0 @@
1<!--
2 The GNU Free Documentation License 1.1 in DocBook
3 Markup by Eric Baudais <baudais@okstate.edu>
4 Maintained by the GNOME Documentation Project
5 http://live.gnome.org/DocumentationProject
6 Version: 1.0.1
7 Last Modified: Nov 16, 2000
8-->
9
10<appendix id="fdl">
11 <appendixinfo>
12 <releaseinfo>
13 Version 1.1, March 2000
14 </releaseinfo>
15 <copyright>
16 <year>2000</year><holder>Free Software Foundation, Inc.</holder>
17 </copyright>
18 <legalnotice id="fdl-legalnotice">
19 <para>
20 <address>Free Software Foundation, Inc. <street>59 Temple Place,
21 Suite 330</street>, <city>Boston</city>, <state>MA</state>
22 <postcode>02111-1307</postcode> <country>USA</country></address>
23 Everyone is permitted to copy and distribute verbatim copies of this
24 license document, but changing it is not allowed.
25 </para>
26 </legalnotice>
27 </appendixinfo>
28 <title>GNU Free Documentation License</title>
29
30 <sect1 id="fdl-preamble">
31 <title>0. PREAMBLE</title>
32 <para>
33 The purpose of this License is to make a manual, textbook, or
34 other written document <quote>free</quote> in the sense of
35 freedom: to assure everyone the effective freedom to copy and
36 redistribute it, with or without modifying it, either
37 commercially or noncommercially. Secondarily, this License
38 preserves for the author and publisher a way to get credit for
39 their work, while not being considered responsible for
40 modifications made by others.
41 </para>
42
43 <para>
44 This License is a kind of <quote>copyleft</quote>, which means
45 that derivative works of the document must themselves be free in
46 the same sense. It complements the GNU General Public License,
47 which is a copyleft license designed for free software.
48 </para>
49
50 <para>
51 We have designed this License in order to use it for manuals for
52 free software, because free software needs free documentation: a
53 free program should come with manuals providing the same
54 freedoms that the software does. But this License is not limited
55 to software manuals; it can be used for any textual work,
56 regardless of subject matter or whether it is published as a
57 printed book. We recommend this License principally for works
58 whose purpose is instruction or reference.
59 </para>
60 </sect1>
61 <sect1 id="fdl-section1">
62 <title>1. APPLICABILITY AND DEFINITIONS</title>
63 <para id="fdl-document">
64 This License applies to any manual or other work that contains a
65 notice placed by the copyright holder saying it can be
66 distributed under the terms of this License. The
67 <quote>Document</quote>, below, refers to any such manual or
68 work. Any member of the public is a licensee, and is addressed
69 as <quote>you</quote>.
70 </para>
71
72 <para id="fdl-modified">
73 A <quote>Modified Version</quote> of the Document means any work
74 containing the Document or a portion of it, either copied
75 verbatim, or with modifications and/or translated into another
76 language.
77 </para>
78
79 <para id="fdl-secondary">
80 A <quote>Secondary Section</quote> is a named appendix or a
81 front-matter section of the <link
82 linkend="fdl-document">Document</link> that deals exclusively
83 with the relationship of the publishers or authors of the
84 Document to the Document's overall subject (or to related
85 matters) and contains nothing that could fall directly within
86 that overall subject. (For example, if the Document is in part a
87 textbook of mathematics, a Secondary Section may not explain any
88 mathematics.) The relationship could be a matter of historical
89 connection with the subject or with related matters, or of
90 legal, commercial, philosophical, ethical or political position
91 regarding them.
92 </para>
93
94 <para id="fdl-invariant">
95 The <quote>Invariant Sections</quote> are certain <link
96 linkend="fdl-secondary"> Secondary Sections</link> whose titles
97 are designated, as being those of Invariant Sections, in the
98 notice that says that the <link
99 linkend="fdl-document">Document</link> is released under this
100 License.
101 </para>
102
103 <para id="fdl-cover-texts">
104 The <quote>Cover Texts</quote> are certain short passages of
105 text that are listed, as Front-Cover Texts or Back-Cover Texts,
106 in the notice that says that the <link
107 linkend="fdl-document">Document</link> is released under this
108 License.
109 </para>
110
111 <para id="fdl-transparent">
112 A <quote>Transparent</quote> copy of the <link
113 linkend="fdl-document"> Document</link> means a machine-readable
114 copy, represented in a format whose specification is available
115 to the general public, whose contents can be viewed and edited
116 directly and straightforwardly with generic text editors or (for
117 images composed of pixels) generic paint programs or (for
118 drawings) some widely available drawing editor, and that is
119 suitable for input to text formatters or for automatic
120 translation to a variety of formats suitable for input to text
121 formatters. A copy made in an otherwise Transparent file format
122 whose markup has been designed to thwart or discourage
123 subsequent modification by readers is not Transparent. A copy
124 that is not <quote>Transparent</quote> is called
125 <quote>Opaque</quote>.
126 </para>
127
128 <para>
129 Examples of suitable formats for Transparent copies include
130 plain ASCII without markup, Texinfo input format, LaTeX input
131 format, SGML or XML using a publicly available DTD, and
132 standard-conforming simple HTML designed for human
133 modification. Opaque formats include PostScript, PDF,
134 proprietary formats that can be read and edited only by
135 proprietary word processors, SGML or XML for which the DTD
136 and/or processing tools are not generally available, and the
137 machine-generated HTML produced by some word processors for
138 output purposes only.
139 </para>
140
141 <para id="fdl-title-page">
142 The <quote>Title Page</quote> means, for a printed book, the
143 title page itself, plus such following pages as are needed to
144 hold, legibly, the material this License requires to appear in
145 the title page. For works in formats which do not have any title
146 page as such, <quote>Title Page</quote> means the text near the
147 most prominent appearance of the work's title, preceding the
148 beginning of the body of the text.
149 </para>
150 </sect1>
151
152 <sect1 id="fdl-section2">
153 <title>2. VERBATIM COPYING</title>
154 <para>
155 You may copy and distribute the <link
156 linkend="fdl-document">Document</link> in any medium, either
157 commercially or noncommercially, provided that this License, the
158 copyright notices, and the license notice saying this License
159 applies to the Document are reproduced in all copies, and that
160 you add no other conditions whatsoever to those of this
161 License. You may not use technical measures to obstruct or
162 control the reading or further copying of the copies you make or
163 distribute. However, you may accept compensation in exchange for
164 copies. If you distribute a large enough number of copies you
165 must also follow the conditions in <link
166 linkend="fdl-section3">section 3</link>.
167 </para>
168
169 <para>
170 You may also lend copies, under the same conditions stated
171 above, and you may publicly display copies.
172 </para>
173 </sect1>
174
175 <sect1 id="fdl-section3">
176 <title>3. COPYING IN QUANTITY</title>
177 <para>
178 If you publish printed copies of the <link
179 linkend="fdl-document">Document</link> numbering more than 100,
180 and the Document's license notice requires <link
181 linkend="fdl-cover-texts">Cover Texts</link>, you must enclose
182 the copies in covers that carry, clearly and legibly, all these
183 Cover Texts: Front-Cover Texts on the front cover, and
184 Back-Cover Texts on the back cover. Both covers must also
185 clearly and legibly identify you as the publisher of these
186 copies. The front cover must present the full title with all
187 words of the title equally prominent and visible. You may add
188 other material on the covers in addition. Copying with changes
189 limited to the covers, as long as they preserve the title of the
190 <link linkend="fdl-document">Document</link> and satisfy these
191 conditions, can be treated as verbatim copying in other
192 respects.
193 </para>
194
195 <para>
196 If the required texts for either cover are too voluminous to fit
197 legibly, you should put the first ones listed (as many as fit
198 reasonably) on the actual cover, and continue the rest onto
199 adjacent pages.
200 </para>
201
202 <para>
203 If you publish or distribute <link
204 linkend="fdl-transparent">Opaque</link> copies of the <link
205 linkend="fdl-document">Document</link> numbering more than 100,
206 you must either include a machine-readable <link
207 linkend="fdl-transparent">Transparent</link> copy along with
208 each Opaque copy, or state in or with each Opaque copy a
209 publicly-accessible computer-network location containing a
210 complete Transparent copy of the Document, free of added
211 material, which the general network-using public has access to
212 download anonymously at no charge using public-standard network
213 protocols. If you use the latter option, you must take
214 reasonably prudent steps, when you begin distribution of Opaque
215 copies in quantity, to ensure that this Transparent copy will
216 remain thus accessible at the stated location until at least one
217 year after the last time you distribute an Opaque copy (directly
218 or through your agents or retailers) of that edition to the
219 public.
220 </para>
221
222 <para>
223 It is requested, but not required, that you contact the authors
224 of the <link linkend="fdl-document">Document</link> well before
225 redistributing any large number of copies, to give them a chance
226 to provide you with an updated version of the Document.
227 </para>
228 </sect1>
229
230 <sect1 id="fdl-section4">
231 <title>4. MODIFICATIONS</title>
232 <para>
233 You may copy and distribute a <link
234 linkend="fdl-modified">Modified Version</link> of the <link
235 linkend="fdl-document">Document</link> under the conditions of
236 sections <link linkend="fdl-section2">2</link> and <link
237 linkend="fdl-section3">3</link> above, provided that you release
238 the Modified Version under precisely this License, with the
239 Modified Version filling the role of the Document, thus
240 licensing distribution and modification of the Modified Version
241 to whoever possesses a copy of it. In addition, you must do
242 these things in the Modified Version:
243 </para>
244
245 <itemizedlist mark="opencircle">
246 <listitem>
247 <formalpara>
248 <title>A</title>
249 <para>
250 Use in the <link linkend="fdl-title-page">Title
251 Page</link> (and on the covers, if any) a title distinct
252 from that of the <link
253 linkend="fdl-document">Document</link>, and from those of
254 previous versions (which should, if there were any, be
255 listed in the History section of the Document). You may
256 use the same title as a previous version if the original
257 publisher of that version gives permission.
258 </para>
259 </formalpara>
260 </listitem>
261
262 <listitem>
263 <formalpara>
264 <title>B</title>
265 <para>
266 List on the <link linkend="fdl-title-page">Title
267 Page</link>, as authors, one or more persons or entities
268 responsible for authorship of the modifications in the
269 <link linkend="fdl-modified">Modified Version</link>,
270 together with at least five of the principal authors of
271 the <link linkend="fdl-document">Document</link> (all of
272 its principal authors, if it has less than five).
273 </para>
274 </formalpara>
275 </listitem>
276
277 <listitem>
278 <formalpara>
279 <title>C</title>
280 <para>
281 State on the <link linkend="fdl-title-page">Title
282 Page</link> the name of the publisher of the <link
283 linkend="fdl-modified">Modified Version</link>, as the
284 publisher.
285 </para>
286 </formalpara>
287 </listitem>
288
289 <listitem>
290 <formalpara>
291 <title>D</title>
292 <para>
293 Preserve all the copyright notices of the <link
294 linkend="fdl-document">Document</link>.
295 </para>
296 </formalpara>
297 </listitem>
298
299 <listitem>
300 <formalpara>
301 <title>E</title>
302 <para>
303 Add an appropriate copyright notice for your modifications
304 adjacent to the other copyright notices.
305 </para>
306 </formalpara>
307 </listitem>
308
309 <listitem>
310 <formalpara>
311 <title>F</title>
312 <para>
313 Include, immediately after the copyright notices, a
314 license notice giving the public permission to use the
315 <link linkend="fdl-modified">Modified Version</link> under
316 the terms of this License, in the form shown in the
317 Addendum below.
318 </para>
319 </formalpara>
320 </listitem>
321
322 <listitem>
323 <formalpara>
324 <title>G</title>
325 <para>
326 Preserve in that license notice the full lists of <link
327 linkend="fdl-invariant"> Invariant Sections</link> and
328 required <link linkend="fdl-cover-texts">Cover
329 Texts</link> given in the <link
330 linkend="fdl-document">Document's</link> license notice.
331 </para>
332 </formalpara>
333 </listitem>
334
335 <listitem>
336 <formalpara>
337 <title>H</title>
338 <para>
339 Include an unaltered copy of this License.
340 </para>
341 </formalpara>
342 </listitem>
343
344 <listitem>
345 <formalpara>
346 <title>I</title>
347 <para>
348 Preserve the section entitled <quote>History</quote>, and
349 its title, and add to it an item stating at least the
350 title, year, new authors, and publisher of the <link
351 linkend="fdl-modified">Modified Version </link>as given on
352 the <link linkend="fdl-title-page">Title Page</link>. If
353 there is no section entitled <quote>History</quote> in the
354 <link linkend="fdl-document">Document</link>, create one
355 stating the title, year, authors, and publisher of the
356 Document as given on its Title Page, then add an item
357 describing the Modified Version as stated in the previous
358 sentence.
359 </para>
360 </formalpara>
361 </listitem>
362
363 <listitem>
364 <formalpara>
365 <title>J</title>
366 <para>
367 Preserve the network location, if any, given in the <link
368 linkend="fdl-document">Document</link> for public access
369 to a <link linkend="fdl-transparent">Transparent</link>
370 copy of the Document, and likewise the network locations
371 given in the Document for previous versions it was based
372 on. These may be placed in the <quote>History</quote>
373 section. You may omit a network location for a work that
374 was published at least four years before the Document
375 itself, or if the original publisher of the version it
376 refers to gives permission.
377 </para>
378 </formalpara>
379 </listitem>
380
381 <listitem>
382 <formalpara>
383 <title>K</title>
384 <para>
385 In any section entitled <quote>Acknowledgements</quote> or
386 <quote>Dedications</quote>, preserve the section's title,
387 and preserve in the section all the substance and tone of
388 each of the contributor acknowledgements and/or
389 dedications given therein.
390 </para>
391 </formalpara>
392 </listitem>
393
394 <listitem>
395 <formalpara>
396 <title>L</title>
397 <para>
398 Preserve all the <link linkend="fdl-invariant">Invariant
399 Sections</link> of the <link
400 linkend="fdl-document">Document</link>, unaltered in their
401 text and in their titles. Section numbers or the
402 equivalent are not considered part of the section titles.
403 </para>
404 </formalpara>
405 </listitem>
406
407 <listitem>
408 <formalpara>
409 <title>M</title>
410 <para>
411 Delete any section entitled
412 <quote>Endorsements</quote>. Such a section may not be
413 included in the <link linkend="fdl-modified">Modified
414 Version</link>.
415 </para>
416 </formalpara>
417 </listitem>
418
419 <listitem>
420 <formalpara>
421 <title>N</title>
422 <para>
423 Do not retitle any existing section as
424 <quote>Endorsements</quote> or to conflict in title with
425 any <link linkend="fdl-invariant">Invariant
426 Section</link>.
427 </para>
428 </formalpara>
429 </listitem>
430 </itemizedlist>
431
432 <para>
433 If the <link linkend="fdl-modified">Modified Version</link>
434 includes new front-matter sections or appendices that qualify as
435 <link linkend="fdl-secondary">Secondary Sections</link> and
436 contain no material copied from the Document, you may at your
437 option designate some or all of these sections as invariant. To
438 do this, add their titles to the list of <link
439 linkend="fdl-invariant">Invariant Sections</link> in the
440 Modified Version's license notice. These titles must be
441 distinct from any other section titles.
442 </para>
443
444 <para>
445 You may add a section entitled <quote>Endorsements</quote>,
446 provided it contains nothing but endorsements of your <link
447 linkend="fdl-modified">Modified Version</link> by various
448 parties--for example, statements of peer review or that the text
449 has been approved by an organization as the authoritative
450 definition of a standard.
451 </para>
452
453 <para>
454 You may add a passage of up to five words as a <link
455 linkend="fdl-cover-texts">Front-Cover Text</link>, and a passage
456 of up to 25 words as a <link
457 linkend="fdl-cover-texts">Back-Cover Text</link>, to the end of
458 the list of <link linkend="fdl-cover-texts">Cover Texts</link>
459 in the <link linkend="fdl-modified">Modified Version</link>.
460 Only one passage of Front-Cover Text and one of Back-Cover Text
461 may be added by (or through arrangements made by) any one
462 entity. If the <link linkend="fdl-document">Document</link>
463 already includes a cover text for the same cover, previously
464 added by you or by arrangement made by the same entity you are
465 acting on behalf of, you may not add another; but you may
466 replace the old one, on explicit permission from the previous
467 publisher that added the old one.
468 </para>
469
470 <para>
471 The author(s) and publisher(s) of the <link
472 linkend="fdl-document">Document</link> do not by this License
473 give permission to use their names for publicity for or to
474 assert or imply endorsement of any <link
475 linkend="fdl-modified">Modified Version </link>.
476 </para>
477 </sect1>
478
479 <sect1 id="fdl-section5">
480 <title>5. COMBINING DOCUMENTS</title>
481 <para>
482 You may combine the <link linkend="fdl-document">Document</link>
483 with other documents released under this License, under the
484 terms defined in <link linkend="fdl-section4">section 4</link>
485 above for modified versions, provided that you include in the
486 combination all of the <link linkend="fdl-invariant">Invariant
487 Sections</link> of all of the original documents, unmodified,
488 and list them all as Invariant Sections of your combined work in
489 its license notice.
490 </para>
491
492 <para>
493 The combined work need only contain one copy of this License,
494 and multiple identical <link linkend="fdl-invariant">Invariant
495 Sections</link> may be replaced with a single copy. If there are
496 multiple Invariant Sections with the same name but different
497 contents, make the title of each such section unique by adding
498 at the end of it, in parentheses, the name of the original
499 author or publisher of that section if known, or else a unique
500 number. Make the same adjustment to the section titles in the
501 list of Invariant Sections in the license notice of the combined
502 work.
503 </para>
504
505 <para>
506 In the combination, you must combine any sections entitled
507 <quote>History</quote> in the various original documents,
508 forming one section entitled <quote>History</quote>; likewise
509 combine any sections entitled <quote>Acknowledgements</quote>,
510 and any sections entitled <quote>Dedications</quote>. You must
511 delete all sections entitled <quote>Endorsements.</quote>
512 </para>
513 </sect1>
514
515 <sect1 id="fdl-section6">
516 <title>6. COLLECTIONS OF DOCUMENTS</title>
517 <para>
518 You may make a collection consisting of the <link
519 linkend="fdl-document">Document</link> and other documents
520 released under this License, and replace the individual copies
521 of this License in the various documents with a single copy that
522 is included in the collection, provided that you follow the
523 rules of this License for verbatim copying of each of the
524 documents in all other respects.
525 </para>
526
527 <para>
528 You may extract a single document from such a collection, and
529 distribute it individually under this License, provided you
530 insert a copy of this License into the extracted document, and
531 follow this License in all other respects regarding verbatim
532 copying of that document.
533 </para>
534 </sect1>
535
536 <sect1 id="fdl-section7">
537 <title>7. AGGREGATION WITH INDEPENDENT WORKS</title>
538 <para>
539 A compilation of the <link
540 linkend="fdl-document">Document</link> or its derivatives with
541 other separate and independent documents or works, in or on a
542 volume of a storage or distribution medium, does not as a whole
543 count as a <link linkend="fdl-modified">Modified Version</link>
544 of the Document, provided no compilation copyright is claimed
545 for the compilation. Such a compilation is called an
546 <quote>aggregate</quote>, and this License does not apply to the
547 other self-contained works thus compiled with the Document , on
548 account of their being thus compiled, if they are not themselves
549 derivative works of the Document. If the <link
550 linkend="fdl-cover-texts">Cover Text</link> requirement of <link
551 linkend="fdl-section3">section 3</link> is applicable to these
552 copies of the Document, then if the Document is less than one
553 quarter of the entire aggregate, the Document's Cover Texts may
554 be placed on covers that surround only the Document within the
555 aggregate. Otherwise they must appear on covers around the whole
556 aggregate.
557 </para>
558 </sect1>
559
560 <sect1 id="fdl-section8">
561 <title>8. TRANSLATION</title>
562 <para>
563 Translation is considered a kind of modification, so you may
564 distribute translations of the <link
565 linkend="fdl-document">Document</link> under the terms of <link
566 linkend="fdl-section4">section 4</link>. Replacing <link
567 linkend="fdl-invariant"> Invariant Sections</link> with
568 translations requires special permission from their copyright
569 holders, but you may include translations of some or all
570 Invariant Sections in addition to the original versions of these
571 Invariant Sections. You may include a translation of this
572 License provided that you also include the original English
573 version of this License. In case of a disagreement between the
574 translation and the original English version of this License,
575 the original English version will prevail.
576 </para>
577 </sect1>
578
579 <sect1 id="fdl-section9">
580 <title>9. TERMINATION</title>
581 <para>
582 You may not copy, modify, sublicense, or distribute the <link
583 linkend="fdl-document">Document</link> except as expressly
584 provided for under this License. Any other attempt to copy,
585 modify, sublicense or distribute the Document is void, and will
586 automatically terminate your rights under this License. However,
587 parties who have received copies, or rights, from you under this
588 License will not have their licenses terminated so long as such
589 parties remain in full compliance.
590 </para>
591 </sect1>
592
593 <sect1 id="fdl-section10">
594 <title>10. FUTURE REVISIONS OF THIS LICENSE</title>
595 <para>
596 The <ulink type="http"
597 url="http://www.gnu.org/fsf/fsf.html">Free Software
598 Foundation</ulink> may publish new, revised versions of the GNU
599 Free Documentation License from time to time. Such new versions
600 will be similar in spirit to the present version, but may differ
601 in detail to address new problems or concerns. See <ulink
602 type="http"
603 url="http://www.gnu.org/copyleft">http://www.gnu.org/copyleft/</ulink>.
604 </para>
605
606 <para>
607 Each version of the License is given a distinguishing version
608 number. If the <link linkend="fdl-document">Document</link>
609 specifies that a particular numbered version of this License
610 <quote>or any later version</quote> applies to it, you have the
611 option of following the terms and conditions either of that
612 specified version or of any later version that has been
613 published (not as a draft) by the Free Software Foundation. If
614 the Document does not specify a version number of this License,
615 you may choose any version ever published (not as a draft) by
616 the Free Software Foundation.
617 </para>
618 </sect1>
619
620 <sect1 id="fdl-using">
621 <title>Addendum</title>
622 <para>
623 To use this License in a document you have written, include a copy of
624 the License in the document and put the following copyright and
625 license notices just after the title page:
626 </para>
627
628 <blockquote>
629 <para>
630 Copyright &copy; YEAR YOUR NAME.
631 </para>
632 <para>
633 Permission is granted to copy, distribute and/or modify this
634 document under the terms of the GNU Free Documentation
635 License, Version 1.1 or any later version published by the
636 Free Software Foundation; with the <link
637 linkend="fdl-invariant">Invariant Sections</link> being LIST
638 THEIR TITLES, with the <link
639 linkend="fdl-cover-texts">Front-Cover Texts</link> being LIST,
640 and with the <link linkend="fdl-cover-texts">Back-Cover
641 Texts</link> being LIST. A copy of the license is included in
642 the section entitled <quote>GNU Free Documentation
643 License</quote>.
644 </para>
645 </blockquote>
646
647 <para>
648 If you have no <link linkend="fdl-invariant">Invariant
649 Sections</link>, write <quote>with no Invariant Sections</quote>
650 instead of saying which ones are invariant. If you have no
651 <link linkend="fdl-cover-texts">Front-Cover Texts</link>, write
652 <quote>no Front-Cover Texts</quote> instead of
653 <quote>Front-Cover Texts being LIST</quote>; likewise for <link
654 linkend="fdl-cover-texts">Back-Cover Texts</link>.
655 </para>
656
657 <para>
658 If your document contains nontrivial examples of program code,
659 we recommend releasing these examples in parallel under your
660 choice of free software license, such as the <ulink type="http"
661 url="http://www.gnu.org/copyleft/gpl.html"> GNU General Public
662 License</ulink>, to permit their use in free software.
663 </para>
664 </sect1>
665</appendix>
666
667
668
669
670
671
diff --git a/Documentation/DocBook/media/v4l/fieldseq_bt.pdf b/Documentation/DocBook/media/v4l/fieldseq_bt.pdf
deleted file mode 100644
index 26598b23f80d..000000000000
--- a/Documentation/DocBook/media/v4l/fieldseq_bt.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/fieldseq_tb.pdf b/Documentation/DocBook/media/v4l/fieldseq_tb.pdf
deleted file mode 100644
index 4965b22ddb3a..000000000000
--- a/Documentation/DocBook/media/v4l/fieldseq_tb.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/func-close.xml b/Documentation/DocBook/media/v4l/func-close.xml
deleted file mode 100644
index 232920d2f3c6..000000000000
--- a/Documentation/DocBook/media/v4l/func-close.xml
+++ /dev/null
@@ -1,62 +0,0 @@
1<refentry id="func-close">
2 <refmeta>
3 <refentrytitle>V4L2 close()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-close</refname>
9 <refpurpose>Close a V4L2 device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>close</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 </funcprototype>
19 </funcsynopsis>
20 </refsynopsisdiv>
21
22 <refsect1>
23 <title>Arguments</title>
24
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fd;</para>
30 </listitem>
31 </varlistentry>
32 </variablelist>
33 </refsect1>
34
35 <refsect1>
36 <title>Description</title>
37
38 <para>Closes the device. Any I/O in progress is terminated and
39resources associated with the file descriptor are freed. However data
40format parameters, current input or output, control values or other
41properties remain unchanged.</para>
42 </refsect1>
43
44 <refsect1>
45 <title>Return Value</title>
46
47 <para>The function returns <returnvalue>0</returnvalue> on
48success, <returnvalue>-1</returnvalue> on failure and the
49<varname>errno</varname> is set appropriately. Possible error
50codes:</para>
51
52 <variablelist>
53 <varlistentry>
54 <term><errorcode>EBADF</errorcode></term>
55 <listitem>
56 <para><parameter>fd</parameter> is not a valid open file
57descriptor.</para>
58 </listitem>
59 </varlistentry>
60 </variablelist>
61 </refsect1>
62</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-ioctl.xml b/Documentation/DocBook/media/v4l/func-ioctl.xml
deleted file mode 100644
index 4394184a1a6d..000000000000
--- a/Documentation/DocBook/media/v4l/func-ioctl.xml
+++ /dev/null
@@ -1,71 +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 &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/media/v4l/func-mmap.xml b/Documentation/DocBook/media/v4l/func-mmap.xml
deleted file mode 100644
index f31ad71bf301..000000000000
--- a/Documentation/DocBook/media/v4l/func-mmap.xml
+++ /dev/null
@@ -1,183 +0,0 @@
1<refentry id="func-mmap">
2 <refmeta>
3 <refentrytitle>V4L2 mmap()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-mmap</refname>
9 <refpurpose>Map device memory into application address space</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>
15#include &lt;unistd.h&gt;
16#include &lt;sys/mman.h&gt;</funcsynopsisinfo>
17 <funcprototype>
18 <funcdef>void *<function>mmap</function></funcdef>
19 <paramdef>void *<parameter>start</parameter></paramdef>
20 <paramdef>size_t <parameter>length</parameter></paramdef>
21 <paramdef>int <parameter>prot</parameter></paramdef>
22 <paramdef>int <parameter>flags</parameter></paramdef>
23 <paramdef>int <parameter>fd</parameter></paramdef>
24 <paramdef>off_t <parameter>offset</parameter></paramdef>
25 </funcprototype>
26 </funcsynopsis>
27 </refsynopsisdiv>
28
29 <refsect1>
30 <title>Arguments</title>
31 <variablelist>
32 <varlistentry>
33 <term><parameter>start</parameter></term>
34 <listitem>
35 <para>Map the buffer to this address in the
36application's address space. When the <constant>MAP_FIXED</constant>
37flag is specified, <parameter>start</parameter> must be a multiple of the
38pagesize and mmap will fail when the specified address
39cannot be used. Use of this option is discouraged; applications should
40just specify a <constant>NULL</constant> pointer here.</para>
41 </listitem>
42 </varlistentry>
43 <varlistentry>
44 <term><parameter>length</parameter></term>
45 <listitem>
46 <para>Length of the memory area to map. This must be the
47same value as returned by the driver in the &v4l2-buffer;
48<structfield>length</structfield> field for the
49single-planar API, and the same value as returned by the driver
50in the &v4l2-plane; <structfield>length</structfield> field for the
51multi-planar API.</para>
52 </listitem>
53 </varlistentry>
54 <varlistentry>
55 <term><parameter>prot</parameter></term>
56 <listitem>
57 <para>The <parameter>prot</parameter> argument describes the
58desired memory protection. Regardless of the device type and the
59direction of data exchange it should be set to
60<constant>PROT_READ</constant> | <constant>PROT_WRITE</constant>,
61permitting read and write access to image buffers. Drivers should
62support at least this combination of flags. Note the Linux
63<filename>video-buf</filename> kernel module, which is used by the
64bttv, saa7134, saa7146, cx88 and vivi driver supports only
65<constant>PROT_READ</constant> | <constant>PROT_WRITE</constant>. When
66the driver does not support the desired protection the
67<function>mmap()</function> function fails.</para>
68 <para>Note device memory accesses (&eg; the memory on a
69graphics card with video capturing hardware) may incur a performance
70penalty compared to main memory accesses, or reads may be
71significantly slower than writes or vice versa. Other I/O methods may
72be more efficient in this case.</para>
73 </listitem>
74 </varlistentry>
75 <varlistentry>
76 <term><parameter>flags</parameter></term>
77 <listitem>
78 <para>The <parameter>flags</parameter> parameter
79specifies the type of the mapped object, mapping options and whether
80modifications made to the mapped copy of the page are private to the
81process or are to be shared with other references.</para>
82 <para><constant>MAP_FIXED</constant> requests that the
83driver selects no other address than the one specified. If the
84specified address cannot be used, <function>mmap()</function> will fail. If
85<constant>MAP_FIXED</constant> is specified,
86<parameter>start</parameter> must be a multiple of the pagesize. Use
87of this option is discouraged.</para>
88 <para>One of the <constant>MAP_SHARED</constant> or
89<constant>MAP_PRIVATE</constant> flags must be set.
90<constant>MAP_SHARED</constant> allows applications to share the
91mapped memory with other (&eg; child-) processes. Note the Linux
92<filename>video-buf</filename> module which is used by the bttv,
93saa7134, saa7146, cx88 and vivi driver supports only
94<constant>MAP_SHARED</constant>. <constant>MAP_PRIVATE</constant>
95requests copy-on-write semantics. V4L2 applications should not set the
96<constant>MAP_PRIVATE</constant>, <constant>MAP_DENYWRITE</constant>,
97<constant>MAP_EXECUTABLE</constant> or <constant>MAP_ANON</constant>
98flag.</para>
99 </listitem>
100 </varlistentry>
101 <varlistentry>
102 <term><parameter>fd</parameter></term>
103 <listitem>
104 <para>&fd;</para>
105 </listitem>
106 </varlistentry>
107 <varlistentry>
108 <term><parameter>offset</parameter></term>
109 <listitem>
110 <para>Offset of the buffer in device memory. This must be the
111same value as returned by the driver in the &v4l2-buffer;
112<structfield>m</structfield> union <structfield>offset</structfield> field for
113the single-planar API, and the same value as returned by the driver
114in the &v4l2-plane; <structfield>m</structfield> union
115<structfield>mem_offset</structfield> field for the multi-planar API.</para>
116 </listitem>
117 </varlistentry>
118 </variablelist>
119 </refsect1>
120
121 <refsect1>
122 <title>Description</title>
123
124 <para>The <function>mmap()</function> function asks to map
125<parameter>length</parameter> bytes starting at
126<parameter>offset</parameter> in the memory of the device specified by
127<parameter>fd</parameter> into the application address space,
128preferably at address <parameter>start</parameter>. This latter
129address is a hint only, and is usually specified as 0.</para>
130
131 <para>Suitable length and offset parameters are queried with the
132&VIDIOC-QUERYBUF; ioctl. Buffers must be allocated with the
133&VIDIOC-REQBUFS; ioctl before they can be queried.</para>
134
135 <para>To unmap buffers the &func-munmap; function is used.</para>
136 </refsect1>
137
138 <refsect1>
139 <title>Return Value</title>
140
141 <para>On success <function>mmap()</function> returns a pointer to
142the mapped buffer. On error <constant>MAP_FAILED</constant> (-1) is
143returned, and the <varname>errno</varname> variable is set
144appropriately. Possible error codes are:</para>
145
146 <variablelist>
147 <varlistentry>
148 <term><errorcode>EBADF</errorcode></term>
149 <listitem>
150 <para><parameter>fd</parameter> is not a valid file
151descriptor.</para>
152 </listitem>
153 </varlistentry>
154 <varlistentry>
155 <term><errorcode>EACCES</errorcode></term>
156 <listitem>
157 <para><parameter>fd</parameter> is
158not open for reading and writing.</para>
159 </listitem>
160 </varlistentry>
161 <varlistentry>
162 <term><errorcode>EINVAL</errorcode></term>
163 <listitem>
164 <para>The <parameter>start</parameter> or
165<parameter>length</parameter> or <parameter>offset</parameter> are not
166suitable. (E.&nbsp;g. they are too large, or not aligned on a
167<constant>PAGESIZE</constant> boundary.)</para>
168 <para>The <parameter>flags</parameter> or
169<parameter>prot</parameter> value is not supported.</para>
170 <para>No buffers have been allocated with the
171&VIDIOC-REQBUFS; ioctl.</para>
172 </listitem>
173 </varlistentry>
174 <varlistentry>
175 <term><errorcode>ENOMEM</errorcode></term>
176 <listitem>
177 <para>Not enough physical or virtual memory was available to
178complete the request.</para>
179 </listitem>
180 </varlistentry>
181 </variablelist>
182 </refsect1>
183</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-munmap.xml b/Documentation/DocBook/media/v4l/func-munmap.xml
deleted file mode 100644
index 860d49ca54a5..000000000000
--- a/Documentation/DocBook/media/v4l/func-munmap.xml
+++ /dev/null
@@ -1,76 +0,0 @@
1<refentry id="func-munmap">
2 <refmeta>
3 <refentrytitle>V4L2 munmap()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-munmap</refname>
9 <refpurpose>Unmap device memory</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>
15#include &lt;unistd.h&gt;
16#include &lt;sys/mman.h&gt;</funcsynopsisinfo>
17 <funcprototype>
18 <funcdef>int <function>munmap</function></funcdef>
19 <paramdef>void *<parameter>start</parameter></paramdef>
20 <paramdef>size_t <parameter>length</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 </refsynopsisdiv>
24 <refsect1>
25 <title>Arguments</title>
26 <variablelist>
27 <varlistentry>
28 <term><parameter>start</parameter></term>
29 <listitem>
30 <para>Address of the mapped buffer as returned by the
31&func-mmap; function.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>length</parameter></term>
36 <listitem>
37 <para>Length of the mapped buffer. This must be the same
38value as given to <function>mmap()</function> and returned by the
39driver in the &v4l2-buffer; <structfield>length</structfield>
40field for the single-planar API and in the &v4l2-plane;
41<structfield>length</structfield> field for the multi-planar API.</para>
42 </listitem>
43 </varlistentry>
44 </variablelist>
45 </refsect1>
46
47 <refsect1>
48 <title>Description</title>
49
50 <para>Unmaps a previously with the &func-mmap; function mapped
51buffer and frees it, if possible. <!-- ? This function (not freeing)
52has no impact on I/O in progress, specifically it does not imply
53&VIDIOC-STREAMOFF; to terminate I/O. Unmapped buffers can still be
54enqueued, dequeued or queried, they are just not accessible by the
55application.--></para>
56 </refsect1>
57
58 <refsect1>
59 <title>Return Value</title>
60
61 <para>On success <function>munmap()</function> returns 0, on
62failure -1 and the <varname>errno</varname> variable is set
63appropriately:</para>
64
65 <variablelist>
66 <varlistentry>
67 <term><errorcode>EINVAL</errorcode></term>
68 <listitem>
69 <para>The <parameter>start</parameter> or
70<parameter>length</parameter> is incorrect, or no buffers have been
71mapped yet.</para>
72 </listitem>
73 </varlistentry>
74 </variablelist>
75 </refsect1>
76</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-open.xml b/Documentation/DocBook/media/v4l/func-open.xml
deleted file mode 100644
index cf64e207c3ee..000000000000
--- a/Documentation/DocBook/media/v4l/func-open.xml
+++ /dev/null
@@ -1,113 +0,0 @@
1<refentry id="func-open">
2 <refmeta>
3 <refentrytitle>V4L2 open()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-open</refname>
9 <refpurpose>Open a V4L2 device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;fcntl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>open</function></funcdef>
17 <paramdef>const char *<parameter>device_name</parameter></paramdef>
18 <paramdef>int <parameter>flags</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>device_name</parameter></term>
29 <listitem>
30 <para>Device to be opened.</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>flags</parameter></term>
35 <listitem>
36 <para>Open flags. Access mode must be
37<constant>O_RDWR</constant>. This is just a technicality, input devices
38still support only reading and output devices only writing.</para>
39 <para>When the <constant>O_NONBLOCK</constant> flag is
40given, the read() function and the &VIDIOC-DQBUF; ioctl will return
41the &EAGAIN; when no data is available or no buffer is in the driver
42outgoing queue, otherwise these functions block until data becomes
43available. All V4L2 drivers exchanging data with applications must
44support the <constant>O_NONBLOCK</constant> flag.</para>
45 <para>Other flags have no effect.</para>
46 </listitem>
47 </varlistentry>
48 </variablelist>
49 </refsect1>
50 <refsect1>
51 <title>Description</title>
52
53 <para>To open a V4L2 device applications call
54<function>open()</function> with the desired device name. This
55function has no side effects; all data format parameters, current
56input or output, control values or other properties remain unchanged.
57At the first <function>open()</function> call after loading the driver
58they will be reset to default values, drivers are never in an
59undefined state.</para>
60 </refsect1>
61 <refsect1>
62 <title>Return Value</title>
63
64 <para>On success <function>open</function> returns the new file
65descriptor. On error -1 is returned, and the <varname>errno</varname>
66variable is set appropriately. Possible error codes are:</para>
67
68 <variablelist>
69 <varlistentry>
70 <term><errorcode>EACCES</errorcode></term>
71 <listitem>
72 <para>The caller has no permission to access the
73device.</para>
74 </listitem>
75 </varlistentry>
76 <varlistentry>
77 <term><errorcode>EBUSY</errorcode></term>
78 <listitem>
79 <para>The driver does not support multiple opens and the
80device is already in use.</para>
81 </listitem>
82 </varlistentry>
83 <varlistentry>
84 <term><errorcode>ENXIO</errorcode></term>
85 <listitem>
86 <para>No device corresponding to this device special file
87exists.</para>
88 </listitem>
89 </varlistentry>
90 <varlistentry>
91 <term><errorcode>ENOMEM</errorcode></term>
92 <listitem>
93 <para>Not enough kernel memory was available to complete the
94request.</para>
95 </listitem>
96 </varlistentry>
97 <varlistentry>
98 <term><errorcode>EMFILE</errorcode></term>
99 <listitem>
100 <para>The process already has the maximum number of
101files open.</para>
102 </listitem>
103 </varlistentry>
104 <varlistentry>
105 <term><errorcode>ENFILE</errorcode></term>
106 <listitem>
107 <para>The limit on the total number of files open on the
108system has been reached.</para>
109 </listitem>
110 </varlistentry>
111 </variablelist>
112 </refsect1>
113</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-poll.xml b/Documentation/DocBook/media/v4l/func-poll.xml
deleted file mode 100644
index 4c73f115219b..000000000000
--- a/Documentation/DocBook/media/v4l/func-poll.xml
+++ /dev/null
@@ -1,142 +0,0 @@
1<refentry id="func-poll">
2 <refmeta>
3 <refentrytitle>V4L2 poll()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-poll</refname>
9 <refpurpose>Wait for some event on a file descriptor</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;sys/poll.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>poll</function></funcdef>
17 <paramdef>struct pollfd *<parameter>ufds</parameter></paramdef>
18 <paramdef>unsigned int <parameter>nfds</parameter></paramdef>
19 <paramdef>int <parameter>timeout</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Description</title>
26
27 <para>With the <function>poll()</function> function applications
28can suspend execution until the driver has captured data or is ready
29to accept data for output.</para>
30
31 <para>When streaming I/O has been negotiated this function waits
32until a buffer has been filled by the capture device and can be dequeued
33with the &VIDIOC-DQBUF; ioctl. For output devices this function waits
34until the device is ready to accept a new buffer to be queued up with
35the &VIDIOC-QBUF; ioctl for display. When buffers are already in the outgoing
36queue of the driver (capture) or the incoming queue isn't full (display)
37the function returns immediately.</para>
38
39 <para>On success <function>poll()</function> returns the number of
40file descriptors that have been selected (that is, file descriptors
41for which the <structfield>revents</structfield> field of the
42respective <structname>pollfd</structname> structure is non-zero).
43Capture devices set the <constant>POLLIN</constant> and
44<constant>POLLRDNORM</constant> flags in the
45<structfield>revents</structfield> field, output devices the
46<constant>POLLOUT</constant> and <constant>POLLWRNORM</constant>
47flags. When the function timed out it returns a value of zero, on
48failure it returns <returnvalue>-1</returnvalue> and the
49<varname>errno</varname> variable is set appropriately. When the
50application did not call &VIDIOC-STREAMON; the
51<function>poll()</function> function succeeds, but sets the
52<constant>POLLERR</constant> flag in the
53<structfield>revents</structfield> field. When the
54application has called &VIDIOC-STREAMON; for a capture device but hasn't
55yet called &VIDIOC-QBUF;, the <function>poll()</function> function
56succeeds and sets the <constant>POLLERR</constant> flag in the
57<structfield>revents</structfield> field. For output devices this
58same situation will cause <function>poll()</function> to succeed
59as well, but it sets the <constant>POLLOUT</constant> and
60<constant>POLLWRNORM</constant> flags in the <structfield>revents</structfield>
61field.</para>
62
63 <para>If an event occurred (see &VIDIOC-DQEVENT;) then
64<constant>POLLPRI</constant> will be set in the <structfield>revents</structfield>
65field and <function>poll()</function> will return.</para>
66
67 <para>When use of the <function>read()</function> function has
68been negotiated and the driver does not capture yet, the
69<function>poll</function> function starts capturing. When that fails
70it returns a <constant>POLLERR</constant> as above. Otherwise it waits
71until data has been captured and can be read. When the driver captures
72continuously (as opposed to, for example, still images) the function
73may return immediately.</para>
74
75 <para>When use of the <function>write()</function> function has
76been negotiated and the driver does not stream yet, the
77<function>poll</function> function starts streaming. When that fails
78it returns a <constant>POLLERR</constant> as above. Otherwise it waits
79until the driver is ready for a non-blocking
80<function>write()</function> call.</para>
81
82 <para>If the caller is only interested in events (just
83<constant>POLLPRI</constant> is set in the <structfield>events</structfield>
84field), then <function>poll()</function> will <emphasis>not</emphasis>
85start streaming if the driver does not stream yet. This makes it
86possible to just poll for events and not for buffers.</para>
87
88 <para>All drivers implementing the <function>read()</function> or
89<function>write()</function> function or streaming I/O must also
90support the <function>poll()</function> function.</para>
91
92 <para>For more details see the
93<function>poll()</function> manual page.</para>
94 </refsect1>
95
96 <refsect1>
97 <title>Return Value</title>
98
99 <para>On success, <function>poll()</function> returns the number
100structures which have non-zero <structfield>revents</structfield>
101fields, or zero if the call timed out. On error
102<returnvalue>-1</returnvalue> is returned, and the
103<varname>errno</varname> variable is set appropriately:</para>
104
105 <variablelist>
106 <varlistentry>
107 <term><errorcode>EBADF</errorcode></term>
108 <listitem>
109 <para>One or more of the <parameter>ufds</parameter> members
110specify an invalid file descriptor.</para>
111 </listitem>
112 </varlistentry>
113 <varlistentry>
114 <term><errorcode>EBUSY</errorcode></term>
115 <listitem>
116 <para>The driver does not support multiple read or write
117streams and the device is already in use.</para>
118 </listitem>
119 </varlistentry>
120 <varlistentry>
121 <term><errorcode>EFAULT</errorcode></term>
122 <listitem>
123 <para><parameter>ufds</parameter> references an inaccessible
124memory area.</para>
125 </listitem>
126 </varlistentry>
127 <varlistentry>
128 <term><errorcode>EINTR</errorcode></term>
129 <listitem>
130 <para>The call was interrupted by a signal.</para>
131 </listitem>
132 </varlistentry>
133 <varlistentry>
134 <term><errorcode>EINVAL</errorcode></term>
135 <listitem>
136 <para>The <parameter>nfds</parameter> argument is greater
137than <constant>OPEN_MAX</constant>.</para>
138 </listitem>
139 </varlistentry>
140 </variablelist>
141 </refsect1>
142</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-read.xml b/Documentation/DocBook/media/v4l/func-read.xml
deleted file mode 100644
index e218bbfbd362..000000000000
--- a/Documentation/DocBook/media/v4l/func-read.xml
+++ /dev/null
@@ -1,181 +0,0 @@
1<refentry id="func-read">
2 <refmeta>
3 <refentrytitle>V4L2 read()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-read</refname>
9 <refpurpose>Read from a V4L2 device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>ssize_t <function>read</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>void *<parameter>buf</parameter></paramdef>
19 <paramdef>size_t <parameter>count</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>buf</parameter></term>
36 <listitem>
37 <para></para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>count</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><function>read()</function> attempts to read up to
53<parameter>count</parameter> bytes from file descriptor
54<parameter>fd</parameter> into the buffer starting at
55<parameter>buf</parameter>. The layout of the data in the buffer is
56discussed in the respective device interface section, see ##. If <parameter>count</parameter> is zero,
57<function>read()</function> returns zero and has no other results. If
58<parameter>count</parameter> is greater than
59<constant>SSIZE_MAX</constant>, the result is unspecified. Regardless
60of the <parameter>count</parameter> value each
61<function>read()</function> call will provide at most one frame (two
62fields) worth of data.</para>
63
64 <para>By default <function>read()</function> blocks until data
65becomes available. When the <constant>O_NONBLOCK</constant> flag was
66given to the &func-open; function it
67returns immediately with an &EAGAIN; when no data is available. The
68&func-select; or &func-poll; functions
69can always be used to suspend execution until data becomes available. All
70drivers supporting the <function>read()</function> function must also
71support <function>select()</function> and
72<function>poll()</function>.</para>
73
74 <para>Drivers can implement read functionality in different
75ways, using a single or multiple buffers and discarding the oldest or
76newest frames once the internal buffers are filled.</para>
77
78 <para><function>read()</function> never returns a "snapshot" of a
79buffer being filled. Using a single buffer the driver will stop
80capturing when the application starts reading the buffer until the
81read is finished. Thus only the period of the vertical blanking
82interval is available for reading, or the capture rate must fall below
83the nominal frame rate of the video standard.</para>
84
85<para>The behavior of
86<function>read()</function> when called during the active picture
87period or the vertical blanking separating the top and bottom field
88depends on the discarding policy. A driver discarding the oldest
89frames keeps capturing into an internal buffer, continuously
90overwriting the previously, not read frame, and returns the frame
91being received at the time of the <function>read()</function> call as
92soon as it is complete.</para>
93
94 <para>A driver discarding the newest frames stops capturing until
95the next <function>read()</function> call. The frame being received at
96<function>read()</function> time is discarded, returning the following
97frame instead. Again this implies a reduction of the capture rate to
98one half or less of the nominal frame rate. An example of this model
99is the video read mode of the bttv driver, initiating a DMA to user
100memory when <function>read()</function> is called and returning when
101the DMA finished.</para>
102
103 <para>In the multiple buffer model drivers maintain a ring of
104internal buffers, automatically advancing to the next free buffer.
105This allows continuous capturing when the application can empty the
106buffers fast enough. Again, the behavior when the driver runs out of
107free buffers depends on the discarding policy.</para>
108
109 <para>Applications can get and set the number of buffers used
110internally by the driver with the &VIDIOC-G-PARM; and &VIDIOC-S-PARM;
111ioctls. They are optional, however. The discarding policy is not
112reported and cannot be changed. For minimum requirements see <xref
113 linkend="devices" />.</para>
114 </refsect1>
115
116 <refsect1>
117 <title>Return Value</title>
118
119 <para>On success, the number of bytes read is returned. It is not
120an error if this number is smaller than the number of bytes requested,
121or the amount of data required for one frame. This may happen for
122example because <function>read()</function> was interrupted by a
123signal. On error, -1 is returned, and the <varname>errno</varname>
124variable is set appropriately. In this case the next read will start
125at the beginning of a new frame. Possible error codes are:</para>
126
127 <variablelist>
128 <varlistentry>
129 <term><errorcode>EAGAIN</errorcode></term>
130 <listitem>
131 <para>Non-blocking I/O has been selected using
132O_NONBLOCK and no data was immediately available for reading.</para>
133 </listitem>
134 </varlistentry>
135 <varlistentry>
136 <term><errorcode>EBADF</errorcode></term>
137 <listitem>
138 <para><parameter>fd</parameter> is not a valid file
139descriptor or is not open for reading, or the process already has the
140maximum number of files open.</para>
141 </listitem>
142 </varlistentry>
143 <varlistentry>
144 <term><errorcode>EBUSY</errorcode></term>
145 <listitem>
146 <para>The driver does not support multiple read streams and the
147device is already in use.</para>
148 </listitem>
149 </varlistentry>
150 <varlistentry>
151 <term><errorcode>EFAULT</errorcode></term>
152 <listitem>
153 <para><parameter>buf</parameter> references an inaccessible
154memory area.</para>
155 </listitem>
156 </varlistentry>
157 <varlistentry>
158 <term><errorcode>EINTR</errorcode></term>
159 <listitem>
160 <para>The call was interrupted by a signal before any
161data was read.</para>
162 </listitem>
163 </varlistentry>
164 <varlistentry>
165 <term><errorcode>EIO</errorcode></term>
166 <listitem>
167 <para>I/O error. This indicates some hardware problem or a
168failure to communicate with a remote device (USB camera etc.).</para>
169 </listitem>
170 </varlistentry>
171 <varlistentry>
172 <term><errorcode>EINVAL</errorcode></term>
173 <listitem>
174 <para>The <function>read()</function> function is not
175supported by this driver, not on this device, or generally not on this
176type of device.</para>
177 </listitem>
178 </varlistentry>
179 </variablelist>
180 </refsect1>
181</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-select.xml b/Documentation/DocBook/media/v4l/func-select.xml
deleted file mode 100644
index e12a60d9bd85..000000000000
--- a/Documentation/DocBook/media/v4l/func-select.xml
+++ /dev/null
@@ -1,130 +0,0 @@
1<refentry id="func-select">
2 <refmeta>
3 <refentrytitle>V4L2 select()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-select</refname>
9 <refpurpose>Synchronous I/O multiplexing</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>
15#include &lt;sys/time.h&gt;
16#include &lt;sys/types.h&gt;
17#include &lt;unistd.h&gt;</funcsynopsisinfo>
18 <funcprototype>
19 <funcdef>int <function>select</function></funcdef>
20 <paramdef>int <parameter>nfds</parameter></paramdef>
21 <paramdef>fd_set *<parameter>readfds</parameter></paramdef>
22 <paramdef>fd_set *<parameter>writefds</parameter></paramdef>
23 <paramdef>fd_set *<parameter>exceptfds</parameter></paramdef>
24 <paramdef>struct timeval *<parameter>timeout</parameter></paramdef>
25 </funcprototype>
26 </funcsynopsis>
27 </refsynopsisdiv>
28
29 <refsect1>
30 <title>Description</title>
31
32 <para>With the <function>select()</function> function applications
33can suspend execution until the driver has captured data or is ready
34to accept data for output.</para>
35
36 <para>When streaming I/O has been negotiated this function waits
37until a buffer has been filled or displayed and can be dequeued with
38the &VIDIOC-DQBUF; ioctl. When buffers are already in the outgoing
39queue of the driver the function returns immediately.</para>
40
41 <para>On success <function>select()</function> returns the total
42number of bits set in the <structname>fd_set</structname>s. When the
43function timed out it returns a value of zero. On failure it returns
44<returnvalue>-1</returnvalue> and the <varname>errno</varname>
45variable is set appropriately. When the application did not call
46&VIDIOC-QBUF; or &VIDIOC-STREAMON; yet the
47<function>select()</function> function succeeds, setting the bit of
48the file descriptor in <parameter>readfds</parameter> or
49<parameter>writefds</parameter>, but subsequent &VIDIOC-DQBUF; calls
50will fail.<footnote><para>The Linux kernel implements
51<function>select()</function> like the &func-poll; function, but
52<function>select()</function> cannot return a
53<constant>POLLERR</constant>.</para>
54 </footnote></para>
55
56 <para>When use of the <function>read()</function> function has
57been negotiated and the driver does not capture yet, the
58<function>select()</function> function starts capturing. When that
59fails, <function>select()</function> returns successful and a
60subsequent <function>read()</function> call, which also attempts to
61start capturing, will return an appropriate error code. When the
62driver captures continuously (as opposed to, for example, still
63images) and data is already available the
64<function>select()</function> function returns immediately.</para>
65
66 <para>When use of the <function>write()</function> function has
67been negotiated the <function>select()</function> function just waits
68until the driver is ready for a non-blocking
69<function>write()</function> call.</para>
70
71 <para>All drivers implementing the <function>read()</function> or
72<function>write()</function> function or streaming I/O must also
73support the <function>select()</function> function.</para>
74
75 <para>For more details see the <function>select()</function>
76manual page.</para>
77
78 </refsect1>
79
80 <refsect1>
81 <title>Return Value</title>
82
83 <para>On success, <function>select()</function> returns the number
84of descriptors contained in the three returned descriptor sets, which
85will be zero if the timeout expired. On error
86<returnvalue>-1</returnvalue> is returned, and the
87<varname>errno</varname> variable is set appropriately; the sets and
88<parameter>timeout</parameter> are undefined. Possible error codes
89are:</para>
90
91 <variablelist>
92 <varlistentry>
93 <term><errorcode>EBADF</errorcode></term>
94 <listitem>
95 <para>One or more of the file descriptor sets specified a
96file descriptor that is not open.</para>
97 </listitem>
98 </varlistentry>
99 <varlistentry>
100 <term><errorcode>EBUSY</errorcode></term>
101 <listitem>
102 <para>The driver does not support multiple read or write
103streams and the device is already in use.</para>
104 </listitem>
105 </varlistentry>
106 <varlistentry>
107 <term><errorcode>EFAULT</errorcode></term>
108 <listitem>
109 <para>The <parameter>readfds</parameter>,
110<parameter>writefds</parameter>, <parameter>exceptfds</parameter> or
111<parameter>timeout</parameter> pointer references an inaccessible memory
112area.</para>
113 </listitem>
114 </varlistentry>
115 <varlistentry>
116 <term><errorcode>EINTR</errorcode></term>
117 <listitem>
118 <para>The call was interrupted by a signal.</para>
119 </listitem>
120 </varlistentry>
121 <varlistentry>
122 <term><errorcode>EINVAL</errorcode></term>
123 <listitem>
124 <para>The <parameter>nfds</parameter> argument is less than
125zero or greater than <constant>FD_SETSIZE</constant>.</para>
126 </listitem>
127 </varlistentry>
128 </variablelist>
129 </refsect1>
130</refentry>
diff --git a/Documentation/DocBook/media/v4l/func-write.xml b/Documentation/DocBook/media/v4l/func-write.xml
deleted file mode 100644
index 575207885726..000000000000
--- a/Documentation/DocBook/media/v4l/func-write.xml
+++ /dev/null
@@ -1,128 +0,0 @@
1<refentry id="func-write">
2 <refmeta>
3 <refentrytitle>V4L2 write()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>v4l2-write</refname>
9 <refpurpose>Write to a V4L2 device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>ssize_t <function>write</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>void *<parameter>buf</parameter></paramdef>
19 <paramdef>size_t <parameter>count</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>buf</parameter></term>
36 <listitem>
37 <para></para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>count</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><function>write()</function> writes up to
53<parameter>count</parameter> bytes to the device referenced by the
54file descriptor <parameter>fd</parameter> from the buffer starting at
55<parameter>buf</parameter>. When the hardware outputs are not active
56yet, this function enables them. When <parameter>count</parameter> is
57zero, <function>write()</function> returns
58<returnvalue>0</returnvalue> without any other effect.</para>
59
60 <para>When the application does not provide more data in time, the
61previous video frame, raw VBI image, sliced VPS or WSS data is
62displayed again. Sliced Teletext or Closed Caption data is not
63repeated, the driver inserts a blank line instead.</para>
64 </refsect1>
65
66 <refsect1>
67 <title>Return Value</title>
68
69 <para>On success, the number of bytes written are returned. Zero
70indicates nothing was written. On error, <returnvalue>-1</returnvalue>
71is returned, and the <varname>errno</varname> variable is set
72appropriately. In this case the next write will start at the beginning
73of a new frame. Possible error codes are:</para>
74
75 <variablelist>
76 <varlistentry>
77 <term><errorcode>EAGAIN</errorcode></term>
78 <listitem>
79 <para>Non-blocking I/O has been selected using the <link
80linkend="func-open"><constant>O_NONBLOCK</constant></link> flag and no
81buffer space was available to write the data immediately.</para>
82 </listitem>
83 </varlistentry>
84 <varlistentry>
85 <term><errorcode>EBADF</errorcode></term>
86 <listitem>
87 <para><parameter>fd</parameter> is not a valid file
88descriptor or is not open for writing.</para>
89 </listitem>
90 </varlistentry>
91 <varlistentry>
92 <term><errorcode>EBUSY</errorcode></term>
93 <listitem>
94 <para>The driver does not support multiple write streams and the
95device is already in use.</para>
96 </listitem>
97 </varlistentry>
98 <varlistentry>
99 <term><errorcode>EFAULT</errorcode></term>
100 <listitem>
101 <para><parameter>buf</parameter> references an inaccessible
102memory area.</para>
103 </listitem>
104 </varlistentry>
105 <varlistentry>
106 <term><errorcode>EINTR</errorcode></term>
107 <listitem>
108 <para>The call was interrupted by a signal before any
109data was written.</para>
110 </listitem>
111 </varlistentry>
112 <varlistentry>
113 <term><errorcode>EIO</errorcode></term>
114 <listitem>
115 <para>I/O error. This indicates some hardware problem.</para>
116 </listitem>
117 </varlistentry>
118 <varlistentry>
119 <term><errorcode>EINVAL</errorcode></term>
120 <listitem>
121 <para>The <function>write()</function> function is not
122supported by this driver, not on this device, or generally not on this
123type of device.</para>
124 </listitem>
125 </varlistentry>
126 </variablelist>
127 </refsect1>
128</refentry>
diff --git a/Documentation/DocBook/media/v4l/gen-errors.xml b/Documentation/DocBook/media/v4l/gen-errors.xml
deleted file mode 100644
index 7e29a4e1f696..000000000000
--- a/Documentation/DocBook/media/v4l/gen-errors.xml
+++ /dev/null
@@ -1,77 +0,0 @@
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/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml
deleted file mode 100644
index 21a3dde8f95d..000000000000
--- a/Documentation/DocBook/media/v4l/io.xml
+++ /dev/null
@@ -1,1545 +0,0 @@
1 <title>Input/Output</title>
2
3 <para>The V4L2 API defines several different methods to read from or
4write to a device. All drivers exchanging data with applications must
5support at least one of them.</para>
6
7 <para>The classic I/O method using the <function>read()</function>
8and <function>write()</function> function is automatically selected
9after opening a V4L2 device. When the driver does not support this
10method attempts to read or write will fail at any time.</para>
11
12 <para>Other methods must be negotiated. To select the streaming I/O
13method with memory mapped or user buffers applications call the
14&VIDIOC-REQBUFS; ioctl. The asynchronous I/O method is not defined
15yet.</para>
16
17 <para>Video overlay can be considered another I/O method, although
18the application does not directly receive the image data. It is
19selected by initiating video overlay with the &VIDIOC-S-FMT; ioctl.
20For more information see <xref linkend="overlay" />.</para>
21
22 <para>Generally exactly one I/O method, including overlay, is
23associated with each file descriptor. The only exceptions are
24applications not exchanging data with a driver ("panel applications",
25see <xref linkend="open" />) and drivers permitting simultaneous video capturing
26and overlay using the same file descriptor, for compatibility with V4L
27and earlier versions of V4L2.</para>
28
29 <para><constant>VIDIOC_S_FMT</constant> and
30<constant>VIDIOC_REQBUFS</constant> would permit this to some degree,
31but for simplicity drivers need not support switching the I/O method
32(after first switching away from read/write) other than by closing
33and reopening the device.</para>
34
35 <para>The following sections describe the various I/O methods in
36more detail.</para>
37
38 <section id="rw">
39 <title>Read/Write</title>
40
41 <para>Input and output devices support the
42<function>read()</function> and <function>write()</function> function,
43respectively, when the <constant>V4L2_CAP_READWRITE</constant> flag in
44the <structfield>capabilities</structfield> field of &v4l2-capability;
45returned by the &VIDIOC-QUERYCAP; ioctl is set.</para>
46
47 <para>Drivers may need the CPU to copy the data, but they may also
48support DMA to or from user memory, so this I/O method is not
49necessarily less efficient than other methods merely exchanging buffer
50pointers. It is considered inferior though because no meta-information
51like frame counters or timestamps are passed. This information is
52necessary to recognize frame dropping and to synchronize with other
53data streams. However this is also the simplest I/O method, requiring
54little or no setup to exchange data. It permits command line stunts
55like this (the <application>vidctrl</application> tool is
56fictitious):</para>
57
58 <informalexample>
59 <screen>
60&gt; vidctrl /dev/video --input=0 --format=YUYV --size=352x288
61&gt; dd if=/dev/video of=myimage.422 bs=202752 count=1
62</screen>
63 </informalexample>
64
65 <para>To read from the device applications use the
66&func-read; function, to write the &func-write; function.
67Drivers must implement one I/O method if they
68exchange data with applications, but it need not be this.<footnote>
69 <para>It would be desirable if applications could depend on
70drivers supporting all I/O interfaces, but as much as the complex
71memory mapping I/O can be inadequate for some devices we have no
72reason to require this interface, which is most useful for simple
73applications capturing still images.</para>
74 </footnote> When reading or writing is supported, the driver
75must also support the &func-select; and &func-poll;
76function.<footnote>
77 <para>At the driver level <function>select()</function> and
78<function>poll()</function> are the same, and
79<function>select()</function> is too important to be optional.</para>
80 </footnote></para>
81 </section>
82
83 <section id="mmap">
84 <title>Streaming I/O (Memory Mapping)</title>
85
86 <para>Input and output devices support this I/O method when the
87<constant>V4L2_CAP_STREAMING</constant> flag in the
88<structfield>capabilities</structfield> field of &v4l2-capability;
89returned by the &VIDIOC-QUERYCAP; ioctl is set. There are two
90streaming methods, to determine if the memory mapping flavor is
91supported applications must call the &VIDIOC-REQBUFS; ioctl with the memory type set to <constant>V4L2_MEMORY_MMAP</constant>.</para>
92
93 <para>Streaming is an I/O method where only pointers to buffers
94are exchanged between application and driver, the data itself is not
95copied. Memory mapping is primarily intended to map buffers in device
96memory into the application's address space. Device memory can be for
97example the video memory on a graphics card with a video capture
98add-on. However, being the most efficient I/O method available for a
99long time, many other drivers support streaming as well, allocating
100buffers in DMA-able main memory.</para>
101
102 <para>A driver can support many sets of buffers. Each set is
103identified by a unique buffer type value. The sets are independent and
104each set can hold a different type of data. To access different sets
105at the same time different file descriptors must be used.<footnote>
106 <para>One could use one file descriptor and set the buffer
107type field accordingly when calling &VIDIOC-QBUF; etc., but it makes
108the <function>select()</function> function ambiguous. We also like the
109clean approach of one file descriptor per logical stream. Video
110overlay for example is also a logical stream, although the CPU is not
111needed for continuous operation.</para>
112 </footnote></para>
113
114 <para>To allocate device buffers applications call the
115&VIDIOC-REQBUFS; ioctl with the desired number of buffers and buffer
116type, for example <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>.
117This ioctl can also be used to change the number of buffers or to free
118the allocated memory, provided none of the buffers are still
119mapped.</para>
120
121 <para>Before applications can access the buffers they must map
122them into their address space with the &func-mmap; function. The
123location of the buffers in device memory can be determined with the
124&VIDIOC-QUERYBUF; ioctl. In the single-planar API case, the
125<structfield>m.offset</structfield> and <structfield>length</structfield>
126returned in a &v4l2-buffer; are passed as sixth and second parameter to the
127<function>mmap()</function> function. When using the multi-planar API,
128&v4l2-buffer; contains an array of &v4l2-plane; structures, each
129containing its own <structfield>m.offset</structfield> and
130<structfield>length</structfield>. When using the multi-planar API, every
131plane of every buffer has to be mapped separately, so the number of
132calls to &func-mmap; should be equal to number of buffers times number of
133planes in each buffer. The offset and length values must not be modified.
134Remember, the buffers are allocated in physical memory, as opposed to virtual
135memory, which can be swapped out to disk. Applications should free the buffers
136as soon as possible with the &func-munmap; function.</para>
137
138 <example>
139 <title>Mapping buffers in the single-planar API</title>
140 <programlisting>
141&v4l2-requestbuffers; reqbuf;
142struct {
143 void *start;
144 size_t length;
145} *buffers;
146unsigned int i;
147
148memset(&amp;reqbuf, 0, sizeof(reqbuf));
149reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
150reqbuf.memory = V4L2_MEMORY_MMAP;
151reqbuf.count = 20;
152
153if (-1 == ioctl (fd, &VIDIOC-REQBUFS;, &amp;reqbuf)) {
154 if (errno == EINVAL)
155 printf("Video capturing or mmap-streaming is not supported\n");
156 else
157 perror("VIDIOC_REQBUFS");
158
159 exit(EXIT_FAILURE);
160}
161
162/* We want at least five buffers. */
163
164if (reqbuf.count &lt; 5) {
165 /* You may need to free the buffers here. */
166 printf("Not enough buffer memory\n");
167 exit(EXIT_FAILURE);
168}
169
170buffers = calloc(reqbuf.count, sizeof(*buffers));
171assert(buffers != NULL);
172
173for (i = 0; i &lt; reqbuf.count; i++) {
174 &v4l2-buffer; buffer;
175
176 memset(&amp;buffer, 0, sizeof(buffer));
177 buffer.type = reqbuf.type;
178 buffer.memory = V4L2_MEMORY_MMAP;
179 buffer.index = i;
180
181 if (-1 == ioctl (fd, &VIDIOC-QUERYBUF;, &amp;buffer)) {
182 perror("VIDIOC_QUERYBUF");
183 exit(EXIT_FAILURE);
184 }
185
186 buffers[i].length = buffer.length; /* remember for munmap() */
187
188 buffers[i].start = mmap(NULL, buffer.length,
189 PROT_READ | PROT_WRITE, /* recommended */
190 MAP_SHARED, /* recommended */
191 fd, buffer.m.offset);
192
193 if (MAP_FAILED == buffers[i].start) {
194 /* If you do not exit here you should unmap() and free()
195 the buffers mapped so far. */
196 perror("mmap");
197 exit(EXIT_FAILURE);
198 }
199}
200
201/* Cleanup. */
202
203for (i = 0; i &lt; reqbuf.count; i++)
204 munmap(buffers[i].start, buffers[i].length);
205 </programlisting>
206 </example>
207
208 <example>
209 <title>Mapping buffers in the multi-planar API</title>
210 <programlisting>
211&v4l2-requestbuffers; reqbuf;
212/* Our current format uses 3 planes per buffer */
213#define FMT_NUM_PLANES = 3
214
215struct {
216 void *start[FMT_NUM_PLANES];
217 size_t length[FMT_NUM_PLANES];
218} *buffers;
219unsigned int i, j;
220
221memset(&amp;reqbuf, 0, sizeof(reqbuf));
222reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
223reqbuf.memory = V4L2_MEMORY_MMAP;
224reqbuf.count = 20;
225
226if (ioctl(fd, &VIDIOC-REQBUFS;, &amp;reqbuf) &lt; 0) {
227 if (errno == EINVAL)
228 printf("Video capturing or mmap-streaming is not supported\n");
229 else
230 perror("VIDIOC_REQBUFS");
231
232 exit(EXIT_FAILURE);
233}
234
235/* We want at least five buffers. */
236
237if (reqbuf.count &lt; 5) {
238 /* You may need to free the buffers here. */
239 printf("Not enough buffer memory\n");
240 exit(EXIT_FAILURE);
241}
242
243buffers = calloc(reqbuf.count, sizeof(*buffers));
244assert(buffers != NULL);
245
246for (i = 0; i &lt; reqbuf.count; i++) {
247 &v4l2-buffer; buffer;
248 &v4l2-plane; planes[FMT_NUM_PLANES];
249
250 memset(&amp;buffer, 0, sizeof(buffer));
251 buffer.type = reqbuf.type;
252 buffer.memory = V4L2_MEMORY_MMAP;
253 buffer.index = i;
254 /* length in struct v4l2_buffer in multi-planar API stores the size
255 * of planes array. */
256 buffer.length = FMT_NUM_PLANES;
257 buffer.m.planes = planes;
258
259 if (ioctl(fd, &VIDIOC-QUERYBUF;, &amp;buffer) &lt; 0) {
260 perror("VIDIOC_QUERYBUF");
261 exit(EXIT_FAILURE);
262 }
263
264 /* Every plane has to be mapped separately */
265 for (j = 0; j &lt; FMT_NUM_PLANES; j++) {
266 buffers[i].length[j] = buffer.m.planes[j].length; /* remember for munmap() */
267
268 buffers[i].start[j] = mmap(NULL, buffer.m.planes[j].length,
269 PROT_READ | PROT_WRITE, /* recommended */
270 MAP_SHARED, /* recommended */
271 fd, buffer.m.planes[j].m.offset);
272
273 if (MAP_FAILED == buffers[i].start[j]) {
274 /* If you do not exit here you should unmap() and free()
275 the buffers and planes mapped so far. */
276 perror("mmap");
277 exit(EXIT_FAILURE);
278 }
279 }
280}
281
282/* Cleanup. */
283
284for (i = 0; i &lt; reqbuf.count; i++)
285 for (j = 0; j &lt; FMT_NUM_PLANES; j++)
286 munmap(buffers[i].start[j], buffers[i].length[j]);
287 </programlisting>
288 </example>
289
290 <para>Conceptually streaming drivers maintain two buffer queues, an incoming
291and an outgoing queue. They separate the synchronous capture or output
292operation locked to a video clock from the application which is
293subject to random disk or network delays and preemption by
294other processes, thereby reducing the probability of data loss.
295The queues are organized as FIFOs, buffers will be
296output in the order enqueued in the incoming FIFO, and were
297captured in the order dequeued from the outgoing FIFO.</para>
298
299 <para>The driver may require a minimum number of buffers enqueued
300at all times to function, apart of this no limit exists on the number
301of buffers applications can enqueue in advance, or dequeue and
302process. They can also enqueue in a different order than buffers have
303been dequeued, and the driver can <emphasis>fill</emphasis> enqueued
304<emphasis>empty</emphasis> buffers in any order. <footnote>
305 <para>Random enqueue order permits applications processing
306images out of order (such as video codecs) to return buffers earlier,
307reducing the probability of data loss. Random fill order allows
308drivers to reuse buffers on a LIFO-basis, taking advantage of caches
309holding scatter-gather lists and the like.</para>
310 </footnote> The index number of a buffer (&v4l2-buffer;
311<structfield>index</structfield>) plays no role here, it only
312identifies the buffer.</para>
313
314 <para>Initially all mapped buffers are in dequeued state,
315inaccessible by the driver. For capturing applications it is customary
316to first enqueue all mapped buffers, then to start capturing and enter
317the read loop. Here the application waits until a filled buffer can be
318dequeued, and re-enqueues the buffer when the data is no longer
319needed. Output applications fill and enqueue buffers, when enough
320buffers are stacked up the output is started with
321<constant>VIDIOC_STREAMON</constant>. In the write loop, when
322the application runs out of free buffers, it must wait until an empty
323buffer can be dequeued and reused.</para>
324
325 <para>To enqueue and dequeue a buffer applications use the
326&VIDIOC-QBUF; and &VIDIOC-DQBUF; ioctl. The status of a buffer being
327mapped, enqueued, full or empty can be determined at any time using the
328&VIDIOC-QUERYBUF; ioctl. Two methods exist to suspend execution of the
329application until one or more buffers can be dequeued. By default
330<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the
331outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
332given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
333returns immediately with an &EAGAIN; when no buffer is available. The
334&func-select; or &func-poll; functions are always available.</para>
335
336 <para>To start and stop capturing or output applications call the
337&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note
338<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both
339queues as a side effect. Since there is no notion of doing anything
340"now" on a multitasking system, if an application needs to synchronize
341with another event it should examine the &v4l2-buffer;
342<structfield>timestamp</structfield> of captured or outputted buffers.
343</para>
344
345 <para>Drivers implementing memory mapping I/O must
346support the <constant>VIDIOC_REQBUFS</constant>,
347<constant>VIDIOC_QUERYBUF</constant>,
348<constant>VIDIOC_QBUF</constant>, <constant>VIDIOC_DQBUF</constant>,
349<constant>VIDIOC_STREAMON</constant> and
350<constant>VIDIOC_STREAMOFF</constant> ioctl, the
351<function>mmap()</function>, <function>munmap()</function>,
352<function>select()</function> and <function>poll()</function>
353function.<footnote>
354 <para>At the driver level <function>select()</function> and
355<function>poll()</function> are the same, and
356<function>select()</function> is too important to be optional. The
357rest should be evident.</para>
358 </footnote></para>
359
360 <para>[capture example]</para>
361
362 </section>
363
364 <section id="userp">
365 <title>Streaming I/O (User Pointers)</title>
366
367 <para>Input and output devices support this I/O method when the
368<constant>V4L2_CAP_STREAMING</constant> flag in the
369<structfield>capabilities</structfield> field of &v4l2-capability;
370returned by the &VIDIOC-QUERYCAP; ioctl is set. If the particular user
371pointer method (not only memory mapping) is supported must be
372determined by calling the &VIDIOC-REQBUFS; ioctl with the memory type set to <constant>V4L2_MEMORY_USERPTR</constant>.</para>
373
374 <para>This I/O method combines advantages of the read/write and
375memory mapping methods. Buffers (planes) are allocated by the application
376itself, and can reside for example in virtual or shared memory. Only
377pointers to data are exchanged, these pointers and meta-information
378are passed in &v4l2-buffer; (or in &v4l2-plane; in the multi-planar API case).
379The driver must be switched into user pointer I/O mode by calling the
380&VIDIOC-REQBUFS; with the desired buffer type. No buffers (planes) are allocated
381beforehand, consequently they are not indexed and cannot be queried like mapped
382buffers with the <constant>VIDIOC_QUERYBUF</constant> ioctl.</para>
383
384 <example>
385 <title>Initiating streaming I/O with user pointers</title>
386
387 <programlisting>
388&v4l2-requestbuffers; reqbuf;
389
390memset (&amp;reqbuf, 0, sizeof (reqbuf));
391reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
392reqbuf.memory = V4L2_MEMORY_USERPTR;
393
394if (ioctl (fd, &VIDIOC-REQBUFS;, &amp;reqbuf) == -1) {
395 if (errno == EINVAL)
396 printf ("Video capturing or user pointer streaming is not supported\n");
397 else
398 perror ("VIDIOC_REQBUFS");
399
400 exit (EXIT_FAILURE);
401}
402 </programlisting>
403 </example>
404
405 <para>Buffer (plane) addresses and sizes are passed on the fly with the
406&VIDIOC-QBUF; ioctl. Although buffers are commonly cycled,
407applications can pass different addresses and sizes at each
408<constant>VIDIOC_QBUF</constant> call. If required by the hardware the
409driver swaps memory pages within physical memory to create a
410continuous area of memory. This happens transparently to the
411application in the virtual memory subsystem of the kernel. When buffer
412pages have been swapped out to disk they are brought back and finally
413locked in physical memory for DMA.<footnote>
414 <para>We expect that frequently used buffers are typically not
415swapped out. Anyway, the process of swapping, locking or generating
416scatter-gather lists may be time consuming. The delay can be masked by
417the depth of the incoming buffer queue, and perhaps by maintaining
418caches assuming a buffer will be soon enqueued again. On the other
419hand, to optimize memory usage drivers can limit the number of buffers
420locked in advance and recycle the most recently used buffers first. Of
421course, the pages of empty buffers in the incoming queue need not be
422saved to disk. Output buffers must be saved on the incoming and
423outgoing queue because an application may share them with other
424processes.</para>
425 </footnote></para>
426
427 <para>Filled or displayed buffers are dequeued with the
428&VIDIOC-DQBUF; ioctl. The driver can unlock the memory pages at any
429time between the completion of the DMA and this ioctl. The memory is
430also unlocked when &VIDIOC-STREAMOFF; is called, &VIDIOC-REQBUFS;, or
431when the device is closed. Applications must take care not to free
432buffers without dequeuing. For once, the buffers remain locked until
433further, wasting physical memory. Second the driver will not be
434notified when the memory is returned to the application's free list
435and subsequently reused for other purposes, possibly completing the
436requested DMA and overwriting valuable data.</para>
437
438 <para>For capturing applications it is customary to enqueue a
439number of empty buffers, to start capturing and enter the read loop.
440Here the application waits until a filled buffer can be dequeued, and
441re-enqueues the buffer when the data is no longer needed. Output
442applications fill and enqueue buffers, when enough buffers are stacked
443up output is started. In the write loop, when the application
444runs out of free buffers it must wait until an empty buffer can be
445dequeued and reused. Two methods exist to suspend execution of the
446application until one or more buffers can be dequeued. By default
447<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the
448outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
449given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
450returns immediately with an &EAGAIN; when no buffer is available. The
451&func-select; or &func-poll; function are always available.</para>
452
453 <para>To start and stop capturing or output applications call the
454&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctl. Note
455<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both
456queues and unlocks all buffers as a side effect. Since there is no
457notion of doing anything "now" on a multitasking system, if an
458application needs to synchronize with another event it should examine
459the &v4l2-buffer; <structfield>timestamp</structfield> of captured
460or outputted buffers.</para>
461
462 <para>Drivers implementing user pointer I/O must
463support the <constant>VIDIOC_REQBUFS</constant>,
464<constant>VIDIOC_QBUF</constant>, <constant>VIDIOC_DQBUF</constant>,
465<constant>VIDIOC_STREAMON</constant> and
466<constant>VIDIOC_STREAMOFF</constant> ioctl, the
467<function>select()</function> and <function>poll()</function> function.<footnote>
468 <para>At the driver level <function>select()</function> and
469<function>poll()</function> are the same, and
470<function>select()</function> is too important to be optional. The
471rest should be evident.</para>
472 </footnote></para>
473 </section>
474
475 <section id="dmabuf">
476 <title>Streaming I/O (DMA buffer importing)</title>
477
478<para>The DMABUF framework provides a generic method for sharing buffers
479between multiple devices. Device drivers that support DMABUF can export a DMA
480buffer to userspace as a file descriptor (known as the exporter role), import a
481DMA buffer from userspace using a file descriptor previously exported for a
482different or the same device (known as the importer role), or both. This
483section describes the DMABUF importer role API in V4L2.</para>
484
485 <para>Refer to <link linkend="vidioc-expbuf">DMABUF exporting</link> for
486details about exporting V4L2 buffers as DMABUF file descriptors.</para>
487
488<para>Input and output devices support the streaming I/O method when the
489<constant>V4L2_CAP_STREAMING</constant> flag in the
490<structfield>capabilities</structfield> field of &v4l2-capability; returned by
491the &VIDIOC-QUERYCAP; ioctl is set. Whether importing DMA buffers through
492DMABUF file descriptors is supported is determined by calling the
493&VIDIOC-REQBUFS; ioctl with the memory type set to
494<constant>V4L2_MEMORY_DMABUF</constant>.</para>
495
496 <para>This I/O method is dedicated to sharing DMA buffers between different
497devices, which may be V4L devices or other video-related devices (e.g. DRM).
498Buffers (planes) are allocated by a driver on behalf of an application. Next,
499these buffers are exported to the application as file descriptors using an API
500which is specific for an allocator driver. Only such file descriptor are
501exchanged. The descriptors and meta-information are passed in &v4l2-buffer; (or
502in &v4l2-plane; in the multi-planar API case). The driver must be switched
503into DMABUF I/O mode by calling the &VIDIOC-REQBUFS; with the desired buffer
504type.</para>
505
506 <example>
507 <title>Initiating streaming I/O with DMABUF file descriptors</title>
508
509 <programlisting>
510&v4l2-requestbuffers; reqbuf;
511
512memset(&amp;reqbuf, 0, sizeof (reqbuf));
513reqbuf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
514reqbuf.memory = V4L2_MEMORY_DMABUF;
515reqbuf.count = 1;
516
517if (ioctl(fd, &VIDIOC-REQBUFS;, &amp;reqbuf) == -1) {
518 if (errno == EINVAL)
519 printf("Video capturing or DMABUF streaming is not supported\n");
520 else
521 perror("VIDIOC_REQBUFS");
522
523 exit(EXIT_FAILURE);
524}
525 </programlisting>
526 </example>
527
528 <para>The buffer (plane) file descriptor is passed on the fly with the
529&VIDIOC-QBUF; ioctl. In case of multiplanar buffers, every plane can be
530associated with a different DMABUF descriptor. Although buffers are commonly
531cycled, applications can pass a different DMABUF descriptor at each
532<constant>VIDIOC_QBUF</constant> call.</para>
533
534 <example>
535 <title>Queueing DMABUF using single plane API</title>
536
537 <programlisting>
538int buffer_queue(int v4lfd, int index, int dmafd)
539{
540 &v4l2-buffer; buf;
541
542 memset(&amp;buf, 0, sizeof buf);
543 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
544 buf.memory = V4L2_MEMORY_DMABUF;
545 buf.index = index;
546 buf.m.fd = dmafd;
547
548 if (ioctl(v4lfd, &VIDIOC-QBUF;, &amp;buf) == -1) {
549 perror("VIDIOC_QBUF");
550 return -1;
551 }
552
553 return 0;
554}
555 </programlisting>
556 </example>
557
558 <example>
559 <title>Queueing DMABUF using multi plane API</title>
560
561 <programlisting>
562int buffer_queue_mp(int v4lfd, int index, int dmafd[], int n_planes)
563{
564 &v4l2-buffer; buf;
565 &v4l2-plane; planes[VIDEO_MAX_PLANES];
566 int i;
567
568 memset(&amp;buf, 0, sizeof buf);
569 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
570 buf.memory = V4L2_MEMORY_DMABUF;
571 buf.index = index;
572 buf.m.planes = planes;
573 buf.length = n_planes;
574
575 memset(&amp;planes, 0, sizeof planes);
576
577 for (i = 0; i &lt; n_planes; ++i)
578 buf.m.planes[i].m.fd = dmafd[i];
579
580 if (ioctl(v4lfd, &VIDIOC-QBUF;, &amp;buf) == -1) {
581 perror("VIDIOC_QBUF");
582 return -1;
583 }
584
585 return 0;
586}
587 </programlisting>
588 </example>
589
590 <para>Captured or displayed buffers are dequeued with the
591&VIDIOC-DQBUF; ioctl. The driver can unlock the buffer at any
592time between the completion of the DMA and this ioctl. The memory is
593also unlocked when &VIDIOC-STREAMOFF; is called, &VIDIOC-REQBUFS;, or
594when the device is closed.</para>
595
596 <para>For capturing applications it is customary to enqueue a
597number of empty buffers, to start capturing and enter the read loop.
598Here the application waits until a filled buffer can be dequeued, and
599re-enqueues the buffer when the data is no longer needed. Output
600applications fill and enqueue buffers, when enough buffers are stacked
601up output is started. In the write loop, when the application
602runs out of free buffers it must wait until an empty buffer can be
603dequeued and reused. Two methods exist to suspend execution of the
604application until one or more buffers can be dequeued. By default
605<constant>VIDIOC_DQBUF</constant> blocks when no buffer is in the
606outgoing queue. When the <constant>O_NONBLOCK</constant> flag was
607given to the &func-open; function, <constant>VIDIOC_DQBUF</constant>
608returns immediately with an &EAGAIN; when no buffer is available. The
609&func-select; and &func-poll; functions are always available.</para>
610
611 <para>To start and stop capturing or displaying applications call the
612&VIDIOC-STREAMON; and &VIDIOC-STREAMOFF; ioctls. Note that
613<constant>VIDIOC_STREAMOFF</constant> removes all buffers from both queues and
614unlocks all buffers as a side effect. Since there is no notion of doing
615anything "now" on a multitasking system, if an application needs to synchronize
616with another event it should examine the &v4l2-buffer;
617<structfield>timestamp</structfield> of captured or outputted buffers.</para>
618
619 <para>Drivers implementing DMABUF importing I/O must support the
620<constant>VIDIOC_REQBUFS</constant>, <constant>VIDIOC_QBUF</constant>,
621<constant>VIDIOC_DQBUF</constant>, <constant>VIDIOC_STREAMON</constant> and
622<constant>VIDIOC_STREAMOFF</constant> ioctls, and the
623<function>select()</function> and <function>poll()</function> functions.</para>
624
625 </section>
626
627 <section id="async">
628 <title>Asynchronous I/O</title>
629
630 <para>This method is not defined yet.</para>
631 </section>
632
633 <section id="buffer">
634 <title>Buffers</title>
635
636 <para>A buffer contains data exchanged by application and
637driver using one of the Streaming I/O methods. In the multi-planar API, the
638data is held in planes, while the buffer structure acts as a container
639for the planes. Only pointers to buffers (planes) are exchanged, the data
640itself is not copied. These pointers, together with meta-information like
641timestamps or field parity, are stored in a struct
642<structname>v4l2_buffer</structname>, argument to
643the &VIDIOC-QUERYBUF;, &VIDIOC-QBUF; and &VIDIOC-DQBUF; ioctl.
644In the multi-planar API, some plane-specific members of struct
645<structname>v4l2_buffer</structname>, such as pointers and sizes for each
646plane, are stored in struct <structname>v4l2_plane</structname> instead.
647In that case, struct <structname>v4l2_buffer</structname> contains an array of
648plane structures.</para>
649
650 <para>Dequeued video buffers come with timestamps. The driver
651 decides at which part of the frame and with which clock the
652 timestamp is taken. Please see flags in the masks
653 <constant>V4L2_BUF_FLAG_TIMESTAMP_MASK</constant> and
654 <constant>V4L2_BUF_FLAG_TSTAMP_SRC_MASK</constant> in <xref
655 linkend="buffer-flags" />. These flags are always valid and constant
656 across all buffers during the whole video stream. Changes in these
657 flags may take place as a side effect of &VIDIOC-S-INPUT; or
658 &VIDIOC-S-OUTPUT; however. The
659 <constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant> timestamp type
660 which is used by e.g. on mem-to-mem devices is an exception to the
661 rule: the timestamp source flags are copied from the OUTPUT video
662 buffer to the CAPTURE video buffer.</para>
663
664 <table frame="none" pgwide="1" id="v4l2-buffer">
665 <title>struct <structname>v4l2_buffer</structname></title>
666 <tgroup cols="4">
667 &cs-ustr;
668 <tbody valign="top">
669 <row>
670 <entry>__u32</entry>
671 <entry><structfield>index</structfield></entry>
672 <entry></entry>
673 <entry>Number of the buffer, set by the application except
674when calling &VIDIOC-DQBUF;, then it is set by the driver.
675This field can range from zero to the number of buffers allocated
676with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>),
677plus any buffers allocated with &VIDIOC-CREATE-BUFS; minus one.</entry>
678 </row>
679 <row>
680 <entry>__u32</entry>
681 <entry><structfield>type</structfield></entry>
682 <entry></entry>
683 <entry>Type of the buffer, same as &v4l2-format;
684<structfield>type</structfield> or &v4l2-requestbuffers;
685<structfield>type</structfield>, set by the application. See <xref
686linkend="v4l2-buf-type" /></entry>
687 </row>
688 <row>
689 <entry>__u32</entry>
690 <entry><structfield>bytesused</structfield></entry>
691 <entry></entry>
692 <entry>The number of bytes occupied by the data in the
693buffer. It depends on the negotiated data format and may change with
694each buffer for compressed variable size data like JPEG images.
695Drivers must set this field when <structfield>type</structfield>
696refers to a capture stream, applications when it refers to an output stream.
697If the application sets this to 0 for an output stream, then
698<structfield>bytesused</structfield> will be set to the size of the
699buffer (see the <structfield>length</structfield> field of this struct) by
700the driver. For multiplanar formats this field is ignored and the
701<structfield>planes</structfield> pointer is used instead.</entry>
702 </row>
703 <row>
704 <entry>__u32</entry>
705 <entry><structfield>flags</structfield></entry>
706 <entry></entry>
707 <entry>Flags set by the application or driver, see <xref
708linkend="buffer-flags" />.</entry>
709 </row>
710 <row>
711 <entry>__u32</entry>
712 <entry><structfield>field</structfield></entry>
713 <entry></entry>
714 <entry>Indicates the field order of the image in the
715buffer, see <xref linkend="v4l2-field" />. This field is not used when
716the buffer contains VBI data. Drivers must set it when
717<structfield>type</structfield> refers to a capture stream,
718applications when it refers to an output stream.</entry>
719 </row>
720 <row>
721 <entry>struct timeval</entry>
722 <entry><structfield>timestamp</structfield></entry>
723 <entry></entry>
724 <entry><para>For capture streams this is time when the first data
725 byte was captured, as returned by the
726 <function>clock_gettime()</function> function for the relevant
727 clock id; see <constant>V4L2_BUF_FLAG_TIMESTAMP_*</constant> in
728 <xref linkend="buffer-flags" />. For output streams the driver
729 stores the time at which the last data byte was actually sent out
730 in the <structfield>timestamp</structfield> field. This permits
731 applications to monitor the drift between the video and system
732 clock. For output streams that use <constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant>
733 the application has to fill in the timestamp which will be copied
734 by the driver to the capture stream.</para></entry>
735 </row>
736 <row>
737 <entry>&v4l2-timecode;</entry>
738 <entry><structfield>timecode</structfield></entry>
739 <entry></entry>
740 <entry>When <structfield>type</structfield> is
741<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> and the
742<constant>V4L2_BUF_FLAG_TIMECODE</constant> flag is set in
743<structfield>flags</structfield>, this structure contains a frame
744timecode. In <link linkend="v4l2-field">V4L2_FIELD_ALTERNATE</link>
745mode the top and bottom field contain the same timecode.
746Timecodes are intended to help video editing and are typically recorded on
747video tapes, but also embedded in compressed formats like MPEG. This
748field is independent of the <structfield>timestamp</structfield> and
749<structfield>sequence</structfield> fields.</entry>
750 </row>
751 <row>
752 <entry>__u32</entry>
753 <entry><structfield>sequence</structfield></entry>
754 <entry></entry>
755 <entry>Set by the driver, counting the frames (not fields!) in
756sequence. This field is set for both input and output devices.</entry>
757 </row>
758 <row>
759 <entry spanname="hspan"><para>In <link
760linkend="v4l2-field">V4L2_FIELD_ALTERNATE</link> mode the top and
761bottom field have the same sequence number. The count starts at zero
762and includes dropped or repeated frames. A dropped frame was received
763by an input device but could not be stored due to lack of free buffer
764space. A repeated frame was displayed again by an output device
765because the application did not pass new data in
766time.</para><para>Note this may count the frames received
767e.g. over USB, without taking into account the frames dropped by the
768remote hardware due to limited compression throughput or bus
769bandwidth. These devices identify by not enumerating any video
770standards, see <xref linkend="standard" />.</para></entry>
771 </row>
772 <row>
773 <entry>__u32</entry>
774 <entry><structfield>memory</structfield></entry>
775 <entry></entry>
776 <entry>This field must be set by applications and/or drivers
777in accordance with the selected I/O method. See <xref linkend="v4l2-memory"
778 /></entry>
779 </row>
780 <row>
781 <entry>union</entry>
782 <entry><structfield>m</structfield></entry>
783 </row>
784 <row>
785 <entry></entry>
786 <entry>__u32</entry>
787 <entry><structfield>offset</structfield></entry>
788 <entry>For the single-planar API and when
789<structfield>memory</structfield> is <constant>V4L2_MEMORY_MMAP</constant> this
790is the offset of the buffer from the start of the device memory. The value is
791returned by the driver and apart of serving as parameter to the &func-mmap;
792function not useful for applications. See <xref linkend="mmap" /> for details
793 </entry>
794 </row>
795 <row>
796 <entry></entry>
797 <entry>unsigned long</entry>
798 <entry><structfield>userptr</structfield></entry>
799 <entry>For the single-planar API and when
800<structfield>memory</structfield> is <constant>V4L2_MEMORY_USERPTR</constant>
801this is a pointer to the buffer (casted to unsigned long type) in virtual
802memory, set by the application. See <xref linkend="userp" /> for details.
803 </entry>
804 </row>
805 <row>
806 <entry></entry>
807 <entry>struct v4l2_plane</entry>
808 <entry><structfield>*planes</structfield></entry>
809 <entry>When using the multi-planar API, contains a userspace pointer
810 to an array of &v4l2-plane;. The size of the array should be put
811 in the <structfield>length</structfield> field of this
812 <structname>v4l2_buffer</structname> structure.</entry>
813 </row>
814 <row>
815 <entry></entry>
816 <entry>int</entry>
817 <entry><structfield>fd</structfield></entry>
818 <entry>For the single-plane API and when
819<structfield>memory</structfield> is <constant>V4L2_MEMORY_DMABUF</constant> this
820is the file descriptor associated with a DMABUF buffer.</entry>
821 </row>
822 <row>
823 <entry>__u32</entry>
824 <entry><structfield>length</structfield></entry>
825 <entry></entry>
826 <entry>Size of the buffer (not the payload) in bytes for the
827 single-planar API. This is set by the driver based on the calls to
828 &VIDIOC-REQBUFS; and/or &VIDIOC-CREATE-BUFS;. For the multi-planar API the application sets
829 this to the number of elements in the <structfield>planes</structfield>
830 array. The driver will fill in the actual number of valid elements in
831 that array.
832 </entry>
833 </row>
834 <row>
835 <entry>__u32</entry>
836 <entry><structfield>reserved2</structfield></entry>
837 <entry></entry>
838 <entry>A place holder for future extensions. Drivers and applications
839must set this to 0.</entry>
840 </row>
841 <row>
842 <entry>__u32</entry>
843 <entry><structfield>reserved</structfield></entry>
844 <entry></entry>
845 <entry>A place holder for future extensions. Drivers and applications
846must set this to 0.</entry>
847 </row>
848 </tbody>
849 </tgroup>
850 </table>
851
852 <table frame="none" pgwide="1" id="v4l2-plane">
853 <title>struct <structname>v4l2_plane</structname></title>
854 <tgroup cols="4">
855 &cs-ustr;
856 <tbody valign="top">
857 <row>
858 <entry>__u32</entry>
859 <entry><structfield>bytesused</structfield></entry>
860 <entry></entry>
861 <entry>The number of bytes occupied by data in the plane
862 (its payload). Drivers must set this field when <structfield>type</structfield>
863 refers to a capture stream, applications when it refers to an output stream.
864 If the application sets this to 0 for an output stream, then
865 <structfield>bytesused</structfield> will be set to the size of the
866 plane (see the <structfield>length</structfield> field of this struct)
867 by the driver. Note that the actual image data starts at
868 <structfield>data_offset</structfield> which may not be 0.</entry>
869 </row>
870 <row>
871 <entry>__u32</entry>
872 <entry><structfield>length</structfield></entry>
873 <entry></entry>
874 <entry>Size in bytes of the plane (not its payload). This is set by the driver
875 based on the calls to &VIDIOC-REQBUFS; and/or &VIDIOC-CREATE-BUFS;.</entry>
876 </row>
877 <row>
878 <entry>union</entry>
879 <entry><structfield>m</structfield></entry>
880 <entry></entry>
881 <entry></entry>
882 </row>
883 <row>
884 <entry></entry>
885 <entry>__u32</entry>
886 <entry><structfield>mem_offset</structfield></entry>
887 <entry>When the memory type in the containing &v4l2-buffer; is
888 <constant>V4L2_MEMORY_MMAP</constant>, this is the value that
889 should be passed to &func-mmap;, similar to the
890 <structfield>offset</structfield> field in &v4l2-buffer;.</entry>
891 </row>
892 <row>
893 <entry></entry>
894 <entry>unsigned long</entry>
895 <entry><structfield>userptr</structfield></entry>
896 <entry>When the memory type in the containing &v4l2-buffer; is
897 <constant>V4L2_MEMORY_USERPTR</constant>, this is a userspace
898 pointer to the memory allocated for this plane by an application.
899 </entry>
900 </row>
901 <row>
902 <entry></entry>
903 <entry>int</entry>
904 <entry><structfield>fd</structfield></entry>
905 <entry>When the memory type in the containing &v4l2-buffer; is
906 <constant>V4L2_MEMORY_DMABUF</constant>, this is a file
907 descriptor associated with a DMABUF buffer, similar to the
908 <structfield>fd</structfield> field in &v4l2-buffer;.</entry>
909 </row>
910 <row>
911 <entry>__u32</entry>
912 <entry><structfield>data_offset</structfield></entry>
913 <entry></entry>
914 <entry>Offset in bytes to video data in the plane.
915 Drivers must set this field when <structfield>type</structfield>
916 refers to a capture stream, applications when it refers to an output stream.
917 Note that data_offset is included in <structfield>bytesused</structfield>.
918 So the size of the image in the plane is
919 <structfield>bytesused</structfield>-<structfield>data_offset</structfield> at
920 offset <structfield>data_offset</structfield> from the start of the plane.
921 </entry>
922 </row>
923 <row>
924 <entry>__u32</entry>
925 <entry><structfield>reserved[11]</structfield></entry>
926 <entry></entry>
927 <entry>Reserved for future use. Should be zeroed by drivers and
928 applications.</entry>
929 </row>
930 </tbody>
931 </tgroup>
932 </table>
933
934 <table frame="none" pgwide="1" id="v4l2-buf-type">
935 <title>enum v4l2_buf_type</title>
936 <tgroup cols="3">
937 &cs-def;
938 <tbody valign="top">
939 <row>
940 <entry><constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant></entry>
941 <entry>1</entry>
942 <entry>Buffer of a single-planar video capture stream, see <xref
943 linkend="capture" />.</entry>
944 </row>
945 <row>
946 <entry><constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>
947 </entry>
948 <entry>9</entry>
949 <entry>Buffer of a multi-planar video capture stream, see <xref
950 linkend="capture" />.</entry>
951 </row>
952 <row>
953 <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant></entry>
954 <entry>2</entry>
955 <entry>Buffer of a single-planar video output stream, see <xref
956 linkend="output" />.</entry>
957 </row>
958 <row>
959 <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>
960 </entry>
961 <entry>10</entry>
962 <entry>Buffer of a multi-planar video output stream, see <xref
963 linkend="output" />.</entry>
964 </row>
965 <row>
966 <entry><constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant></entry>
967 <entry>3</entry>
968 <entry>Buffer for video overlay, see <xref linkend="overlay" />.</entry>
969 </row>
970 <row>
971 <entry><constant>V4L2_BUF_TYPE_VBI_CAPTURE</constant></entry>
972 <entry>4</entry>
973 <entry>Buffer of a raw VBI capture stream, see <xref
974 linkend="raw-vbi" />.</entry>
975 </row>
976 <row>
977 <entry><constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant></entry>
978 <entry>5</entry>
979 <entry>Buffer of a raw VBI output stream, see <xref
980 linkend="raw-vbi" />.</entry>
981 </row>
982 <row>
983 <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant></entry>
984 <entry>6</entry>
985 <entry>Buffer of a sliced VBI capture stream, see <xref
986 linkend="sliced" />.</entry>
987 </row>
988 <row>
989 <entry><constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant></entry>
990 <entry>7</entry>
991 <entry>Buffer of a sliced VBI output stream, see <xref
992 linkend="sliced" />.</entry>
993 </row>
994 <row>
995 <entry><constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY</constant></entry>
996 <entry>8</entry>
997 <entry>Buffer for video output overlay (OSD), see <xref
998 linkend="osd" />.</entry>
999 </row>
1000 <row>
1001 <entry><constant>V4L2_BUF_TYPE_SDR_CAPTURE</constant></entry>
1002 <entry>11</entry>
1003 <entry>Buffer for Software Defined Radio (SDR) capture stream, see
1004 <xref linkend="sdr" />.</entry>
1005 </row>
1006 <row>
1007 <entry><constant>V4L2_BUF_TYPE_SDR_OUTPUT</constant></entry>
1008 <entry>12</entry>
1009 <entry>Buffer for Software Defined Radio (SDR) output stream, see
1010 <xref linkend="sdr" />.</entry>
1011 </row>
1012 </tbody>
1013 </tgroup>
1014 </table>
1015
1016 <table frame="none" pgwide="1" id="buffer-flags">
1017 <title>Buffer Flags</title>
1018 <tgroup cols="3">
1019 &cs-def;
1020 <tbody valign="top">
1021 <row>
1022 <entry><constant>V4L2_BUF_FLAG_MAPPED</constant></entry>
1023 <entry>0x00000001</entry>
1024 <entry>The buffer resides in device memory and has been mapped
1025into the application's address space, see <xref linkend="mmap" /> for details.
1026Drivers set or clear this flag when the
1027<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link>, <link
1028 linkend="vidioc-qbuf">VIDIOC_QBUF</link> or <link
1029 linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called. Set by the driver.</entry>
1030 </row>
1031 <row>
1032 <entry><constant>V4L2_BUF_FLAG_QUEUED</constant></entry>
1033 <entry>0x00000002</entry>
1034 <entry>Internally drivers maintain two buffer queues, an
1035incoming and outgoing queue. When this flag is set, the buffer is
1036currently on the incoming queue. It automatically moves to the
1037outgoing queue after the buffer has been filled (capture devices) or
1038displayed (output devices). Drivers set or clear this flag when the
1039<constant>VIDIOC_QUERYBUF</constant> ioctl is called. After
1040(successful) calling the <constant>VIDIOC_QBUF </constant>ioctl it is
1041always set and after <constant>VIDIOC_DQBUF</constant> always
1042cleared.</entry>
1043 </row>
1044 <row>
1045 <entry><constant>V4L2_BUF_FLAG_DONE</constant></entry>
1046 <entry>0x00000004</entry>
1047 <entry>When this flag is set, the buffer is currently on
1048the outgoing queue, ready to be dequeued from the driver. Drivers set
1049or clear this flag when the <constant>VIDIOC_QUERYBUF</constant> ioctl
1050is called. After calling the <constant>VIDIOC_QBUF</constant> or
1051<constant>VIDIOC_DQBUF</constant> it is always cleared. Of course a
1052buffer cannot be on both queues at the same time, the
1053<constant>V4L2_BUF_FLAG_QUEUED</constant> and
1054<constant>V4L2_BUF_FLAG_DONE</constant> flag are mutually exclusive.
1055They can be both cleared however, then the buffer is in "dequeued"
1056state, in the application domain so to say.</entry>
1057 </row>
1058 <row>
1059 <entry><constant>V4L2_BUF_FLAG_ERROR</constant></entry>
1060 <entry>0x00000040</entry>
1061 <entry>When this flag is set, the buffer has been dequeued
1062 successfully, although the data might have been corrupted.
1063 This is recoverable, streaming may continue as normal and
1064 the buffer may be reused normally.
1065 Drivers set this flag when the <constant>VIDIOC_DQBUF</constant>
1066 ioctl is called.</entry>
1067 </row>
1068 <row>
1069 <entry><constant>V4L2_BUF_FLAG_KEYFRAME</constant></entry>
1070 <entry>0x00000008</entry>
1071 <entry>Drivers set or clear this flag when calling the
1072<constant>VIDIOC_DQBUF</constant> ioctl. It may be set by video
1073capture devices when the buffer contains a compressed image which is a
1074key frame (or field), &ie; can be decompressed on its own. Also known as
1075an I-frame. Applications can set this bit when <structfield>type</structfield>
1076refers to an output stream.</entry>
1077 </row>
1078 <row>
1079 <entry><constant>V4L2_BUF_FLAG_PFRAME</constant></entry>
1080 <entry>0x00000010</entry>
1081 <entry>Similar to <constant>V4L2_BUF_FLAG_KEYFRAME</constant>
1082this flags predicted frames or fields which contain only differences to a
1083previous key frame. Applications can set this bit when <structfield>type</structfield>
1084refers to an output stream.</entry>
1085 </row>
1086 <row>
1087 <entry><constant>V4L2_BUF_FLAG_BFRAME</constant></entry>
1088 <entry>0x00000020</entry>
1089 <entry>Similar to <constant>V4L2_BUF_FLAG_KEYFRAME</constant>
1090this flags a bi-directional predicted frame or field which contains only
1091the differences between the current frame and both the preceding and following
1092key frames to specify its content. Applications can set this bit when
1093<structfield>type</structfield> refers to an output stream.</entry>
1094 </row>
1095 <row>
1096 <entry><constant>V4L2_BUF_FLAG_TIMECODE</constant></entry>
1097 <entry>0x00000100</entry>
1098 <entry>The <structfield>timecode</structfield> field is valid.
1099Drivers set or clear this flag when the <constant>VIDIOC_DQBUF</constant>
1100ioctl is called. Applications can set this bit and the corresponding
1101<structfield>timecode</structfield> structure when <structfield>type</structfield>
1102refers to an output stream.</entry>
1103 </row>
1104 <row>
1105 <entry><constant>V4L2_BUF_FLAG_PREPARED</constant></entry>
1106 <entry>0x00000400</entry>
1107 <entry>The buffer has been prepared for I/O and can be queued by the
1108application. Drivers set or clear this flag when the
1109<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link>, <link
1110 linkend="vidioc-qbuf">VIDIOC_PREPARE_BUF</link>, <link
1111 linkend="vidioc-qbuf">VIDIOC_QBUF</link> or <link
1112 linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called.</entry>
1113 </row>
1114 <row>
1115 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_INVALIDATE</constant></entry>
1116 <entry>0x00000800</entry>
1117 <entry>Caches do not have to be invalidated for this buffer.
1118Typically applications shall use this flag if the data captured in the buffer
1119is not going to be touched by the CPU, instead the buffer will, probably, be
1120passed on to a DMA-capable hardware unit for further processing or output.
1121</entry>
1122 </row>
1123 <row>
1124 <entry><constant>V4L2_BUF_FLAG_NO_CACHE_CLEAN</constant></entry>
1125 <entry>0x00001000</entry>
1126 <entry>Caches do not have to be cleaned for this buffer.
1127Typically applications shall use this flag for output buffers if the data
1128in this buffer has not been created by the CPU but by some DMA-capable unit,
1129in which case caches have not been used.</entry>
1130 </row>
1131 <row>
1132 <entry><constant>V4L2_BUF_FLAG_LAST</constant></entry>
1133 <entry>0x00100000</entry>
1134 <entry>Last buffer produced by the hardware. mem2mem codec drivers
1135set this flag on the capture queue for the last buffer when the
1136<link linkend="vidioc-querybuf">VIDIOC_QUERYBUF</link> or
1137<link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl is called. Due to hardware
1138limitations, the last buffer may be empty. In this case the driver will set the
1139<structfield>bytesused</structfield> field to 0, regardless of the format. Any
1140Any subsequent call to the <link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl
1141will not block anymore, but return an &EPIPE;.</entry>
1142 </row>
1143 <row>
1144 <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MASK</constant></entry>
1145 <entry>0x0000e000</entry>
1146 <entry>Mask for timestamp types below. To test the
1147 timestamp type, mask out bits not belonging to timestamp
1148 type by performing a logical and operation with buffer
1149 flags and timestamp mask.</entry>
1150 </row>
1151 <row>
1152 <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN</constant></entry>
1153 <entry>0x00000000</entry>
1154 <entry>Unknown timestamp type. This type is used by
1155 drivers before Linux 3.9 and may be either monotonic (see
1156 below) or realtime (wall clock). Monotonic clock has been
1157 favoured in embedded systems whereas most of the drivers
1158 use the realtime clock. Either kinds of timestamps are
1159 available in user space via
1160 <function>clock_gettime(2)</function> using clock IDs
1161 <constant>CLOCK_MONOTONIC</constant> and
1162 <constant>CLOCK_REALTIME</constant>, respectively.</entry>
1163 </row>
1164 <row>
1165 <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC</constant></entry>
1166 <entry>0x00002000</entry>
1167 <entry>The buffer timestamp has been taken from the
1168 <constant>CLOCK_MONOTONIC</constant> clock. To access the
1169 same clock outside V4L2, use
1170 <function>clock_gettime(2)</function>.</entry>
1171 </row>
1172 <row>
1173 <entry><constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant></entry>
1174 <entry>0x00004000</entry>
1175 <entry>The CAPTURE buffer timestamp has been taken from the
1176 corresponding OUTPUT buffer. This flag applies only to mem2mem devices.</entry>
1177 </row>
1178 <row>
1179 <entry><constant>V4L2_BUF_FLAG_TSTAMP_SRC_MASK</constant></entry>
1180 <entry>0x00070000</entry>
1181 <entry>Mask for timestamp sources below. The timestamp source
1182 defines the point of time the timestamp is taken in relation to
1183 the frame. Logical 'and' operation between the
1184 <structfield>flags</structfield> field and
1185 <constant>V4L2_BUF_FLAG_TSTAMP_SRC_MASK</constant> produces the
1186 value of the timestamp source. Applications must set the timestamp
1187 source when <structfield>type</structfield> refers to an output stream
1188 and <constant>V4L2_BUF_FLAG_TIMESTAMP_COPY</constant> is set.</entry>
1189 </row>
1190 <row>
1191 <entry><constant>V4L2_BUF_FLAG_TSTAMP_SRC_EOF</constant></entry>
1192 <entry>0x00000000</entry>
1193 <entry>End Of Frame. The buffer timestamp has been taken
1194 when the last pixel of the frame has been received or the
1195 last pixel of the frame has been transmitted. In practice,
1196 software generated timestamps will typically be read from
1197 the clock a small amount of time after the last pixel has
1198 been received or transmitten, depending on the system and
1199 other activity in it.</entry>
1200 </row>
1201 <row>
1202 <entry><constant>V4L2_BUF_FLAG_TSTAMP_SRC_SOE</constant></entry>
1203 <entry>0x00010000</entry>
1204 <entry>Start Of Exposure. The buffer timestamp has been
1205 taken when the exposure of the frame has begun. This is
1206 only valid for the
1207 <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> buffer
1208 type.</entry>
1209 </row>
1210 </tbody>
1211 </tgroup>
1212 </table>
1213
1214 <table pgwide="1" frame="none" id="v4l2-memory">
1215 <title>enum v4l2_memory</title>
1216 <tgroup cols="3">
1217 &cs-def;
1218 <tbody valign="top">
1219 <row>
1220 <entry><constant>V4L2_MEMORY_MMAP</constant></entry>
1221 <entry>1</entry>
1222 <entry>The buffer is used for <link linkend="mmap">memory
1223mapping</link> I/O.</entry>
1224 </row>
1225 <row>
1226 <entry><constant>V4L2_MEMORY_USERPTR</constant></entry>
1227 <entry>2</entry>
1228 <entry>The buffer is used for <link linkend="userp">user
1229pointer</link> I/O.</entry>
1230 </row>
1231 <row>
1232 <entry><constant>V4L2_MEMORY_OVERLAY</constant></entry>
1233 <entry>3</entry>
1234 <entry>[to do]</entry>
1235 </row>
1236 <row>
1237 <entry><constant>V4L2_MEMORY_DMABUF</constant></entry>
1238 <entry>4</entry>
1239 <entry>The buffer is used for <link linkend="dmabuf">DMA shared
1240buffer</link> I/O.</entry>
1241 </row>
1242 </tbody>
1243 </tgroup>
1244 </table>
1245
1246 <section>
1247 <title>Timecodes</title>
1248
1249 <para>The <structname>v4l2_timecode</structname> structure is
1250designed to hold a <xref linkend="smpte12m" /> or similar timecode.
1251(struct <structname>timeval</structname> timestamps are stored in
1252&v4l2-buffer; field <structfield>timestamp</structfield>.)</para>
1253
1254 <table frame="none" pgwide="1" id="v4l2-timecode">
1255 <title>struct <structname>v4l2_timecode</structname></title>
1256 <tgroup cols="3">
1257 &cs-str;
1258 <tbody valign="top">
1259 <row>
1260 <entry>__u32</entry>
1261 <entry><structfield>type</structfield></entry>
1262 <entry>Frame rate the timecodes are based on, see <xref
1263 linkend="timecode-type" />.</entry>
1264 </row>
1265 <row>
1266 <entry>__u32</entry>
1267 <entry><structfield>flags</structfield></entry>
1268 <entry>Timecode flags, see <xref linkend="timecode-flags" />.</entry>
1269 </row>
1270 <row>
1271 <entry>__u8</entry>
1272 <entry><structfield>frames</structfield></entry>
1273 <entry>Frame count, 0 ... 23/24/29/49/59, depending on the
1274 type of timecode.</entry>
1275 </row>
1276 <row>
1277 <entry>__u8</entry>
1278 <entry><structfield>seconds</structfield></entry>
1279 <entry>Seconds count, 0 ... 59. This is a binary, not BCD number.</entry>
1280 </row>
1281 <row>
1282 <entry>__u8</entry>
1283 <entry><structfield>minutes</structfield></entry>
1284 <entry>Minutes count, 0 ... 59. This is a binary, not BCD number.</entry>
1285 </row>
1286 <row>
1287 <entry>__u8</entry>
1288 <entry><structfield>hours</structfield></entry>
1289 <entry>Hours count, 0 ... 29. This is a binary, not BCD number.</entry>
1290 </row>
1291 <row>
1292 <entry>__u8</entry>
1293 <entry><structfield>userbits</structfield>[4]</entry>
1294 <entry>The "user group" bits from the timecode.</entry>
1295 </row>
1296 </tbody>
1297 </tgroup>
1298 </table>
1299
1300 <table frame="none" pgwide="1" id="timecode-type">
1301 <title>Timecode Types</title>
1302 <tgroup cols="3">
1303 &cs-def;
1304 <tbody valign="top">
1305 <row>
1306 <entry><constant>V4L2_TC_TYPE_24FPS</constant></entry>
1307 <entry>1</entry>
1308 <entry>24 frames per second, i.&nbsp;e. film.</entry>
1309 </row>
1310 <row>
1311 <entry><constant>V4L2_TC_TYPE_25FPS</constant></entry>
1312 <entry>2</entry>
1313 <entry>25 frames per second, &ie; PAL or SECAM video.</entry>
1314 </row>
1315 <row>
1316 <entry><constant>V4L2_TC_TYPE_30FPS</constant></entry>
1317 <entry>3</entry>
1318 <entry>30 frames per second, &ie; NTSC video.</entry>
1319 </row>
1320 <row>
1321 <entry><constant>V4L2_TC_TYPE_50FPS</constant></entry>
1322 <entry>4</entry>
1323 <entry></entry>
1324 </row>
1325 <row>
1326 <entry><constant>V4L2_TC_TYPE_60FPS</constant></entry>
1327 <entry>5</entry>
1328 <entry></entry>
1329 </row>
1330 </tbody>
1331 </tgroup>
1332 </table>
1333
1334 <table frame="none" pgwide="1" id="timecode-flags">
1335 <title>Timecode Flags</title>
1336 <tgroup cols="3">
1337 &cs-def;
1338 <tbody valign="top">
1339 <row>
1340 <entry><constant>V4L2_TC_FLAG_DROPFRAME</constant></entry>
1341 <entry>0x0001</entry>
1342 <entry>Indicates "drop frame" semantics for counting frames
1343in 29.97 fps material. When set, frame numbers 0 and 1 at the start of
1344each minute, except minutes 0, 10, 20, 30, 40, 50 are omitted from the
1345count.</entry>
1346 </row>
1347 <row>
1348 <entry><constant>V4L2_TC_FLAG_COLORFRAME</constant></entry>
1349 <entry>0x0002</entry>
1350 <entry>The "color frame" flag.</entry>
1351 </row>
1352 <row>
1353 <entry><constant>V4L2_TC_USERBITS_field</constant></entry>
1354 <entry>0x000C</entry>
1355 <entry>Field mask for the "binary group flags".</entry>
1356 </row>
1357 <row>
1358 <entry><constant>V4L2_TC_USERBITS_USERDEFINED</constant></entry>
1359 <entry>0x0000</entry>
1360 <entry>Unspecified format.</entry>
1361 </row>
1362 <row>
1363 <entry><constant>V4L2_TC_USERBITS_8BITCHARS</constant></entry>
1364 <entry>0x0008</entry>
1365 <entry>8-bit ISO characters.</entry>
1366 </row>
1367 </tbody>
1368 </tgroup>
1369 </table>
1370 </section>
1371 </section>
1372
1373 <section id="field-order">
1374 <title>Field Order</title>
1375
1376 <para>We have to distinguish between progressive and interlaced
1377video. Progressive video transmits all lines of a video image
1378sequentially. Interlaced video divides an image into two fields,
1379containing only the odd and even lines of the image, respectively.
1380Alternating the so called odd and even field are transmitted, and due
1381to a small delay between fields a cathode ray TV displays the lines
1382interleaved, yielding the original frame. This curious technique was
1383invented because at refresh rates similar to film the image would
1384fade out too quickly. Transmitting fields reduces the flicker without
1385the necessity of doubling the frame rate and with it the bandwidth
1386required for each channel.</para>
1387
1388 <para>It is important to understand a video camera does not expose
1389one frame at a time, merely transmitting the frames separated into
1390fields. The fields are in fact captured at two different instances in
1391time. An object on screen may well move between one field and the
1392next. For applications analysing motion it is of paramount importance
1393to recognize which field of a frame is older, the <emphasis>temporal
1394order</emphasis>.</para>
1395
1396 <para>When the driver provides or accepts images field by field
1397rather than interleaved, it is also important applications understand
1398how the fields combine to frames. We distinguish between top (aka odd) and
1399bottom (aka even) fields, the <emphasis>spatial order</emphasis>: The first line
1400of the top field is the first line of an interlaced frame, the first
1401line of the bottom field is the second line of that frame.</para>
1402
1403 <para>However because fields were captured one after the other,
1404arguing whether a frame commences with the top or bottom field is
1405pointless. Any two successive top and bottom, or bottom and top fields
1406yield a valid frame. Only when the source was progressive to begin
1407with, &eg; when transferring film to video, two fields may come from
1408the same frame, creating a natural order.</para>
1409
1410 <para>Counter to intuition the top field is not necessarily the
1411older field. Whether the older field contains the top or bottom lines
1412is a convention determined by the video standard. Hence the
1413distinction between temporal and spatial order of fields. The diagrams
1414below should make this clearer.</para>
1415
1416 <para>All video capture and output devices must report the current
1417field order. Some drivers may permit the selection of a different
1418order, to this end applications initialize the
1419<structfield>field</structfield> field of &v4l2-pix-format; before
1420calling the &VIDIOC-S-FMT; ioctl. If this is not desired it should
1421have the value <constant>V4L2_FIELD_ANY</constant> (0).</para>
1422
1423 <table frame="none" pgwide="1" id="v4l2-field">
1424 <title>enum v4l2_field</title>
1425 <tgroup cols="3">
1426 &cs-def;
1427 <tbody valign="top">
1428 <row>
1429 <entry><constant>V4L2_FIELD_ANY</constant></entry>
1430 <entry>0</entry>
1431 <entry>Applications request this field order when any
1432one of the <constant>V4L2_FIELD_NONE</constant>,
1433<constant>V4L2_FIELD_TOP</constant>,
1434<constant>V4L2_FIELD_BOTTOM</constant>, or
1435<constant>V4L2_FIELD_INTERLACED</constant> formats is acceptable.
1436Drivers choose depending on hardware capabilities or e.&nbsp;g. the
1437requested image size, and return the actual field order. Drivers must
1438never return <constant>V4L2_FIELD_ANY</constant>. If multiple
1439field orders are possible the driver must choose one of the possible
1440field orders during &VIDIOC-S-FMT; or &VIDIOC-TRY-FMT;. &v4l2-buffer;
1441<structfield>field</structfield> can never be
1442<constant>V4L2_FIELD_ANY</constant>.</entry>
1443 </row>
1444 <row>
1445 <entry><constant>V4L2_FIELD_NONE</constant></entry>
1446 <entry>1</entry>
1447 <entry>Images are in progressive format, not interlaced.
1448The driver may also indicate this order when it cannot distinguish
1449between <constant>V4L2_FIELD_TOP</constant> and
1450<constant>V4L2_FIELD_BOTTOM</constant>.</entry>
1451 </row>
1452 <row>
1453 <entry><constant>V4L2_FIELD_TOP</constant></entry>
1454 <entry>2</entry>
1455 <entry>Images consist of the top (aka odd) field only.</entry>
1456 </row>
1457 <row>
1458 <entry><constant>V4L2_FIELD_BOTTOM</constant></entry>
1459 <entry>3</entry>
1460 <entry>Images consist of the bottom (aka even) field only.
1461Applications may wish to prevent a device from capturing interlaced
1462images because they will have "comb" or "feathering" artefacts around
1463moving objects.</entry>
1464 </row>
1465 <row>
1466 <entry><constant>V4L2_FIELD_INTERLACED</constant></entry>
1467 <entry>4</entry>
1468 <entry>Images contain both fields, interleaved line by
1469line. The temporal order of the fields (whether the top or bottom
1470field is first transmitted) depends on the current video standard.
1471M/NTSC transmits the bottom field first, all other standards the top
1472field first.</entry>
1473 </row>
1474 <row>
1475 <entry><constant>V4L2_FIELD_SEQ_TB</constant></entry>
1476 <entry>5</entry>
1477 <entry>Images contain both fields, the top field lines
1478are stored first in memory, immediately followed by the bottom field
1479lines. Fields are always stored in temporal order, the older one first
1480in memory. Image sizes refer to the frame, not fields.</entry>
1481 </row>
1482 <row>
1483 <entry><constant>V4L2_FIELD_SEQ_BT</constant></entry>
1484 <entry>6</entry>
1485 <entry>Images contain both fields, the bottom field
1486lines are stored first in memory, immediately followed by the top
1487field lines. Fields are always stored in temporal order, the older one
1488first in memory. Image sizes refer to the frame, not fields.</entry>
1489 </row>
1490 <row>
1491 <entry><constant>V4L2_FIELD_ALTERNATE</constant></entry>
1492 <entry>7</entry>
1493 <entry>The two fields of a frame are passed in separate
1494buffers, in temporal order, &ie; the older one first. To indicate the field
1495parity (whether the current field is a top or bottom field) the driver
1496or application, depending on data direction, must set &v4l2-buffer;
1497<structfield>field</structfield> to
1498<constant>V4L2_FIELD_TOP</constant> or
1499<constant>V4L2_FIELD_BOTTOM</constant>. Any two successive fields pair
1500to build a frame. If fields are successive, without any dropped fields
1501between them (fields can drop individually), can be determined from
1502the &v4l2-buffer; <structfield>sequence</structfield> field. This format
1503cannot be selected when using the read/write I/O method since there
1504is no way to communicate if a field was a top or bottom field.</entry>
1505 </row>
1506 <row>
1507 <entry><constant>V4L2_FIELD_INTERLACED_TB</constant></entry>
1508 <entry>8</entry>
1509 <entry>Images contain both fields, interleaved line by
1510line, top field first. The top field is transmitted first.</entry>
1511 </row>
1512 <row>
1513 <entry><constant>V4L2_FIELD_INTERLACED_BT</constant></entry>
1514 <entry>9</entry>
1515 <entry>Images contain both fields, interleaved line by
1516line, top field first. The bottom field is transmitted first.</entry>
1517 </row>
1518 </tbody>
1519 </tgroup>
1520 </table>
1521
1522 <figure id="fieldseq-tb">
1523 <title>Field Order, Top Field First Transmitted</title>
1524 <mediaobject>
1525 <imageobject>
1526 <imagedata fileref="fieldseq_tb.pdf" format="PS" />
1527 </imageobject>
1528 <imageobject>
1529 <imagedata fileref="fieldseq_tb.gif" format="GIF" />
1530 </imageobject>
1531 </mediaobject>
1532 </figure>
1533
1534 <figure id="fieldseq-bt">
1535 <title>Field Order, Bottom Field First Transmitted</title>
1536 <mediaobject>
1537 <imageobject>
1538 <imagedata fileref="fieldseq_bt.pdf" format="PS" />
1539 </imageobject>
1540 <imageobject>
1541 <imagedata fileref="fieldseq_bt.gif" format="GIF" />
1542 </imageobject>
1543 </mediaobject>
1544 </figure>
1545 </section>
diff --git a/Documentation/DocBook/media/v4l/keytable.c.xml b/Documentation/DocBook/media/v4l/keytable.c.xml
deleted file mode 100644
index d53254a3be15..000000000000
--- a/Documentation/DocBook/media/v4l/keytable.c.xml
+++ /dev/null
@@ -1,172 +0,0 @@
1<programlisting>
2/* keytable.c - This program allows checking/replacing keys at IR
3
4 Copyright (C) 2006-2009 Mauro Carvalho Chehab &lt;mchehab@infradead.org&gt;
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, version 2 of the License.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14 */
15
16#include &lt;ctype.h&gt;
17#include &lt;errno.h&gt;
18#include &lt;fcntl.h&gt;
19#include &lt;stdio.h&gt;
20#include &lt;stdlib.h&gt;
21#include &lt;string.h&gt;
22#include &lt;linux/input.h&gt;
23#include &lt;sys/ioctl.h&gt;
24
25#include "parse.h"
26
27void prtcode (int *codes)
28{
29 struct parse_key *p;
30
31 for (p=keynames;p-&gt;name!=NULL;p++) {
32 if (p-&gt;value == (unsigned)codes[1]) {
33 printf("scancode 0x%04x = %s (0x%02x)\n", codes[0], p-&gt;name, codes[1]);
34 return;
35 }
36 }
37
38 if (isprint (codes[1]))
39 printf("scancode %d = '%c' (0x%02x)\n", codes[0], codes[1], codes[1]);
40 else
41 printf("scancode %d = 0x%02x\n", codes[0], codes[1]);
42}
43
44int parse_code(char *string)
45{
46 struct parse_key *p;
47
48 for (p=keynames;p-&gt;name!=NULL;p++) {
49 if (!strcasecmp(p-&gt;name, string)) {
50 return p-&gt;value;
51 }
52 }
53 return -1;
54}
55
56int main (int argc, char *argv[])
57{
58 int fd;
59 unsigned int i, j;
60 int codes[2];
61
62 if (argc&lt;2 || argc&gt;4) {
63 printf ("usage: %s &lt;device&gt; to get table; or\n"
64 " %s &lt;device&gt; &lt;scancode&gt; &lt;keycode&gt;\n"
65 " %s &lt;device&gt; &lt;keycode_file&gt;\n",*argv,*argv,*argv);
66 return -1;
67 }
68
69 if ((fd = open(argv[1], O_RDONLY)) &lt; 0) {
70 perror("Couldn't open input device");
71 return(-1);
72 }
73
74 if (argc==4) {
75 int value;
76
77 value=parse_code(argv[3]);
78
79 if (value==-1) {
80 value = strtol(argv[3], NULL, 0);
81 if (errno)
82 perror("value");
83 }
84
85 codes [0] = (unsigned) strtol(argv[2], NULL, 0);
86 codes [1] = (unsigned) value;
87
88 if(ioctl(fd, EVIOCSKEYCODE, codes))
89 perror ("EVIOCSKEYCODE");
90
91 if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
92 prtcode(codes);
93 return 0;
94 }
95
96 if (argc==3) {
97 FILE *fin;
98 int value;
99 char *scancode, *keycode, s[2048];
100
101 fin=fopen(argv[2],"r");
102 if (fin==NULL) {
103 perror ("opening keycode file");
104 return -1;
105 }
106
107 /* Clears old table */
108 for (j = 0; j &lt; 256; j++) {
109 for (i = 0; i &lt; 256; i++) {
110 codes[0] = (j &lt;&lt; 8) | i;
111 codes[1] = KEY_RESERVED;
112 ioctl(fd, EVIOCSKEYCODE, codes);
113 }
114 }
115
116 while (fgets(s,sizeof(s),fin)) {
117 scancode=strtok(s,"\n\t =:");
118 if (!scancode) {
119 perror ("parsing input file scancode");
120 return -1;
121 }
122 if (!strcasecmp(scancode, "scancode")) {
123 scancode = strtok(NULL,"\n\t =:");
124 if (!scancode) {
125 perror ("parsing input file scancode");
126 return -1;
127 }
128 }
129
130 keycode=strtok(NULL,"\n\t =:(");
131 if (!keycode) {
132 perror ("parsing input file keycode");
133 return -1;
134 }
135
136 // printf ("parsing %s=%s:", scancode, keycode);
137 value=parse_code(keycode);
138 // printf ("\tvalue=%d\n",value);
139
140 if (value==-1) {
141 value = strtol(keycode, NULL, 0);
142 if (errno)
143 perror("value");
144 }
145
146 codes [0] = (unsigned) strtol(scancode, NULL, 0);
147 codes [1] = (unsigned) value;
148
149 // printf("\t%04x=%04x\n",codes[0], codes[1]);
150 if(ioctl(fd, EVIOCSKEYCODE, codes)) {
151 fprintf(stderr, "Setting scancode 0x%04x with 0x%04x via ",codes[0], codes[1]);
152 perror ("EVIOCSKEYCODE");
153 }
154
155 if(ioctl(fd, EVIOCGKEYCODE, codes)==0)
156 prtcode(codes);
157 }
158 return 0;
159 }
160
161 /* Get scancode table */
162 for (j = 0; j &lt; 256; j++) {
163 for (i = 0; i &lt; 256; i++) {
164 codes[0] = (j &lt;&lt; 8) | i;
165 if (!ioctl(fd, EVIOCGKEYCODE, codes) &amp;&amp; codes[1] != KEY_RESERVED)
166 prtcode(codes);
167 }
168 }
169 return 0;
170}
171
172</programlisting>
diff --git a/Documentation/DocBook/media/v4l/libv4l.xml b/Documentation/DocBook/media/v4l/libv4l.xml
deleted file mode 100644
index d3b71e20003c..000000000000
--- a/Documentation/DocBook/media/v4l/libv4l.xml
+++ /dev/null
@@ -1,160 +0,0 @@
1<title>Libv4l Userspace Library</title>
2<section id="libv4l-introduction">
3 <title>Introduction</title>
4
5 <para>libv4l is a collection of libraries which adds a thin abstraction
6layer on top of video4linux2 devices. The purpose of this (thin) layer
7is to make it easy for application writers to support a wide variety of
8devices without having to write separate code for different devices in the
9same class.</para>
10<para>An example of using libv4l is provided by
11<link linkend='v4l2grab-example'>v4l2grab</link>.
12</para>
13
14 <para>libv4l consists of 3 different libraries:</para>
15 <section>
16 <title>libv4lconvert</title>
17
18 <para>libv4lconvert is a library that converts several
19different pixelformats found in V4L2 drivers into a few common RGB and
20YUY formats.</para>
21 <para>It currently accepts the following V4L2 driver formats:
22<link linkend="V4L2-PIX-FMT-BGR24"><constant>V4L2_PIX_FMT_BGR24</constant></link>,
23<link linkend="V4L2-PIX-FMT-HM12"><constant>V4L2_PIX_FMT_HM12</constant></link>,
24<link linkend="V4L2-PIX-FMT-JPEG"><constant>V4L2_PIX_FMT_JPEG</constant></link>,
25<link linkend="V4L2-PIX-FMT-MJPEG"><constant>V4L2_PIX_FMT_MJPEG</constant></link>,
26<link linkend="V4L2-PIX-FMT-MR97310A"><constant>V4L2_PIX_FMT_MR97310A</constant></link>,
27<link linkend="V4L2-PIX-FMT-OV511"><constant>V4L2_PIX_FMT_OV511</constant></link>,
28<link linkend="V4L2-PIX-FMT-OV518"><constant>V4L2_PIX_FMT_OV518</constant></link>,
29<link linkend="V4L2-PIX-FMT-PAC207"><constant>V4L2_PIX_FMT_PAC207</constant></link>,
30<link linkend="V4L2-PIX-FMT-PJPG"><constant>V4L2_PIX_FMT_PJPG</constant></link>,
31<link linkend="V4L2-PIX-FMT-RGB24"><constant>V4L2_PIX_FMT_RGB24</constant></link>,
32<link linkend="V4L2-PIX-FMT-SBGGR8"><constant>V4L2_PIX_FMT_SBGGR8</constant></link>,
33<link linkend="V4L2-PIX-FMT-SGBRG8"><constant>V4L2_PIX_FMT_SGBRG8</constant></link>,
34<link linkend="V4L2-PIX-FMT-SGRBG8"><constant>V4L2_PIX_FMT_SGRBG8</constant></link>,
35<link linkend="V4L2-PIX-FMT-SN9C10X"><constant>V4L2_PIX_FMT_SN9C10X</constant></link>,
36<link linkend="V4L2-PIX-FMT-SN9C20X-I420"><constant>V4L2_PIX_FMT_SN9C20X_I420</constant></link>,
37<link linkend="V4L2-PIX-FMT-SPCA501"><constant>V4L2_PIX_FMT_SPCA501</constant></link>,
38<link linkend="V4L2-PIX-FMT-SPCA505"><constant>V4L2_PIX_FMT_SPCA505</constant></link>,
39<link linkend="V4L2-PIX-FMT-SPCA508"><constant>V4L2_PIX_FMT_SPCA508</constant></link>,
40<link linkend="V4L2-PIX-FMT-SPCA561"><constant>V4L2_PIX_FMT_SPCA561</constant></link>,
41<link linkend="V4L2-PIX-FMT-SQ905C"><constant>V4L2_PIX_FMT_SQ905C</constant></link>,
42<constant>V4L2_PIX_FMT_SRGGB8</constant>,
43<link linkend="V4L2-PIX-FMT-UYVY"><constant>V4L2_PIX_FMT_UYVY</constant></link>,
44<link linkend="V4L2-PIX-FMT-YUV420"><constant>V4L2_PIX_FMT_YUV420</constant></link>,
45<link linkend="V4L2-PIX-FMT-YUYV"><constant>V4L2_PIX_FMT_YUYV</constant></link>,
46<link linkend="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></link>,
47and <link linkend="V4L2-PIX-FMT-YVYU"><constant>V4L2_PIX_FMT_YVYU</constant></link>.
48</para>
49 <para>Later on libv4lconvert was expanded to also be able to do
50various video processing functions to improve webcam video quality.
51The video processing is split in to 2 parts: libv4lconvert/control and
52libv4lconvert/processing.</para>
53
54 <para>The control part is used to offer video controls which can
55be used to control the video processing functions made available by
56 libv4lconvert/processing. These controls are stored application wide
57(until reboot) by using a persistent shared memory object.</para>
58
59 <para>libv4lconvert/processing offers the actual video
60processing functionality.</para>
61 </section>
62 <section>
63 <title>libv4l1</title>
64 <para>This library offers functions that can be used to quickly
65make v4l1 applications work with v4l2 devices. These functions work exactly
66like the normal open/close/etc, except that libv4l1 does full emulation of
67the v4l1 api on top of v4l2 drivers, in case of v4l1 drivers it
68will just pass calls through.</para>
69 <para>Since those functions are emulations of the old V4L1 API,
70it shouldn't be used for new applications.</para>
71 </section>
72 <section>
73 <title>libv4l2</title>
74 <para>This library should be used for all modern V4L2
75applications.</para>
76 <para>It provides handles to call V4L2 open/ioctl/close/poll
77methods. Instead of just providing the raw output of the device, it enhances
78the calls in the sense that it will use libv4lconvert to provide more video
79formats and to enhance the image quality.</para>
80 <para>In most cases, libv4l2 just passes the calls directly
81through to the v4l2 driver, intercepting the calls to
82<link linkend='vidioc-g-fmt'><constant>VIDIOC_TRY_FMT</constant></link>,
83<link linkend='vidioc-g-fmt'><constant>VIDIOC_G_FMT</constant></link>
84<link linkend='vidioc-g-fmt'><constant>VIDIOC_S_FMT</constant></link>
85<link linkend='vidioc-enum-framesizes'><constant>VIDIOC_ENUM_FRAMESIZES</constant></link>
86and <link linkend='vidioc-enum-frameintervals'><constant>VIDIOC_ENUM_FRAMEINTERVALS</constant></link>
87in order to emulate the formats
88<link linkend="V4L2-PIX-FMT-BGR24"><constant>V4L2_PIX_FMT_BGR24</constant></link>,
89<link linkend="V4L2-PIX-FMT-RGB24"><constant>V4L2_PIX_FMT_RGB24</constant></link>,
90<link linkend="V4L2-PIX-FMT-YUV420"><constant>V4L2_PIX_FMT_YUV420</constant></link>,
91and <link linkend="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></link>,
92if they aren't available in the driver.
93<link linkend='vidioc-enum-fmt'><constant>VIDIOC_ENUM_FMT</constant></link>
94keeps enumerating the hardware supported formats, plus the emulated formats
95offered by libv4l at the end.
96</para>
97 <section id="libv4l-ops">
98 <title>Libv4l device control functions</title>
99 <para>The common file operation methods are provided by
100libv4l.</para>
101 <para>Those functions operate just like glibc
102open/close/dup/ioctl/read/mmap/munmap:</para>
103<itemizedlist><listitem>
104 <para>int v4l2_open(const char *file, int oflag,
105...) -
106operates like the standard <link linkend='func-open'>open()</link> function.
107</para></listitem><listitem>
108 <para>int v4l2_close(int fd) -
109operates like the standard <link linkend='func-close'>close()</link> function.
110</para></listitem><listitem>
111 <para>int v4l2_dup(int fd) -
112operates like the standard dup() function, duplicating a file handler.
113</para></listitem><listitem>
114 <para>int v4l2_ioctl (int fd, unsigned long int request, ...) -
115operates like the standard <link linkend='func-ioctl'>ioctl()</link> function.
116</para></listitem><listitem>
117 <para>int v4l2_read (int fd, void* buffer, size_t n) -
118operates like the standard <link linkend='func-read'>read()</link> function.
119</para></listitem><listitem>
120 <para>void v4l2_mmap(void *start, size_t length, int prot, int flags, int fd, int64_t offset); -
121operates like the standard <link linkend='func-mmap'>mmap()</link> function.
122</para></listitem><listitem>
123 <para>int v4l2_munmap(void *_start, size_t length); -
124operates like the standard <link linkend='func-munmap'>munmap()</link> function.
125</para></listitem>
126</itemizedlist>
127 <para>Those functions provide additional control:</para>
128<itemizedlist><listitem>
129 <para>int v4l2_fd_open(int fd, int v4l2_flags) -
130opens an already opened fd for further use through v4l2lib and possibly
131modify libv4l2's default behavior through the v4l2_flags argument.
132Currently, v4l2_flags can be <constant>V4L2_DISABLE_CONVERSION</constant>,
133to disable format conversion.
134</para></listitem><listitem>
135 <para>int v4l2_set_control(int fd, int cid, int value) -
136This function takes a value of 0 - 65535, and then scales that range to
137the actual range of the given v4l control id, and then if the cid exists
138and is not locked sets the cid to the scaled value.
139</para></listitem><listitem>
140 <para>int v4l2_get_control(int fd, int cid) -
141This function returns a value of 0 - 65535, scaled to from the actual range
142of the given v4l control id. when the cid does not exist, could not be
143accessed for some reason, or some error occurred 0 is returned.
144</para></listitem>
145</itemizedlist>
146 </section>
147 </section>
148 <section>
149
150 <title>v4l1compat.so wrapper library</title>
151
152 <para>This library intercepts calls to
153open/close/ioctl/mmap/mmunmap operations and redirects them to the libv4l
154counterparts, by using LD_PRELOAD=/usr/lib/v4l1compat.so. It also
155emulates V4L1 calls via V4L2 API.</para>
156 <para>It allows usage of binary legacy applications that
157still don't use libv4l.</para>
158 </section>
159
160</section>
diff --git a/Documentation/DocBook/media/v4l/lirc_device_interface.xml b/Documentation/DocBook/media/v4l/lirc_device_interface.xml
deleted file mode 100644
index f53ad58027a7..000000000000
--- a/Documentation/DocBook/media/v4l/lirc_device_interface.xml
+++ /dev/null
@@ -1,255 +0,0 @@
1<section id="lirc_dev">
2<title>LIRC Device Interface</title>
3
4
5<section id="lirc_dev_intro">
6<title>Introduction</title>
7
8<para>The LIRC device interface is a bi-directional interface for
9transporting raw IR data between userspace and kernelspace. Fundamentally,
10it is just a chardev (/dev/lircX, for X = 0, 1, 2, ...), with a number
11of standard struct file_operations defined on it. With respect to
12transporting raw IR data to and fro, the essential fops are read, write
13and ioctl.</para>
14
15<para>Example dmesg output upon a driver registering w/LIRC:</para>
16 <blockquote>
17 <para>$ dmesg |grep lirc_dev</para>
18 <para>lirc_dev: IR Remote Control driver registered, major 248</para>
19 <para>rc rc0: lirc_dev: driver ir-lirc-codec (mceusb) registered at minor = 0</para>
20 </blockquote>
21
22<para>What you should see for a chardev:</para>
23 <blockquote>
24 <para>$ ls -l /dev/lirc*</para>
25 <para>crw-rw---- 1 root root 248, 0 Jul 2 22:20 /dev/lirc0</para>
26 </blockquote>
27</section>
28
29<section id="lirc_read">
30<title>LIRC read fop</title>
31
32<para>The lircd userspace daemon reads raw IR data from the LIRC chardev. The
33exact format of the data depends on what modes a driver supports, and what
34mode has been selected. lircd obtains supported modes and sets the active mode
35via the ioctl interface, detailed at <xref linkend="lirc_ioctl"/>. The generally
36preferred mode is LIRC_MODE_MODE2, in which packets containing an int value
37describing an IR signal are read from the chardev.</para>
38
39<para>See also <ulink url="http://www.lirc.org/html/technical.html">http://www.lirc.org/html/technical.html</ulink> for more info.</para>
40</section>
41
42<section id="lirc_write">
43<title>LIRC write fop</title>
44
45<para>The data written to the chardev is a pulse/space sequence of integer
46values. Pulses and spaces are only marked implicitly by their position. The
47data must start and end with a pulse, therefore, the data must always include
48an uneven number of samples. The write function must block until the data has
49been transmitted by the hardware. If more data is provided than the hardware
50can send, the driver returns EINVAL.</para>
51
52</section>
53
54<section id="lirc_ioctl">
55<title>LIRC ioctl fop</title>
56
57<para>The LIRC device's ioctl definition is bound by the ioctl function
58definition of struct file_operations, leaving us with an unsigned int
59for the ioctl command and an unsigned long for the arg. For the purposes
60of ioctl portability across 32-bit and 64-bit, these values are capped
61to their 32-bit sizes.</para>
62
63<para>The following ioctls can be used to change specific hardware settings.
64In general each driver should have a default set of settings. The driver
65implementation is expected to re-apply the default settings when the device
66is closed by user-space, so that every application opening the device can rely
67on working with the default settings initially.</para>
68
69<variablelist>
70 <varlistentry>
71 <term>LIRC_GET_FEATURES</term>
72 <listitem>
73 <para>Obviously, get the underlying hardware device's features. If a driver
74 does not announce support of certain features, calling of the corresponding
75 ioctls is undefined.</para>
76 </listitem>
77 </varlistentry>
78 <varlistentry>
79 <term>LIRC_GET_SEND_MODE</term>
80 <listitem>
81 <para>Get supported transmit mode. Only LIRC_MODE_PULSE is supported by lircd.</para>
82 </listitem>
83 </varlistentry>
84 <varlistentry>
85 <term>LIRC_GET_REC_MODE</term>
86 <listitem>
87 <para>Get supported receive modes. Only LIRC_MODE_MODE2 and LIRC_MODE_LIRCCODE
88 are supported by lircd.</para>
89 </listitem>
90 </varlistentry>
91 <varlistentry>
92 <term>LIRC_GET_SEND_CARRIER</term>
93 <listitem>
94 <para>Get carrier frequency (in Hz) currently used for transmit.</para>
95 </listitem>
96 </varlistentry>
97 <varlistentry>
98 <term>LIRC_GET_REC_CARRIER</term>
99 <listitem>
100 <para>Get carrier frequency (in Hz) currently used for IR reception.</para>
101 </listitem>
102 </varlistentry>
103 <varlistentry>
104 <term>LIRC_{G,S}ET_{SEND,REC}_DUTY_CYCLE</term>
105 <listitem>
106 <para>Get/set the duty cycle (from 0 to 100) of the carrier signal. Currently,
107 no special meaning is defined for 0 or 100, but this could be used to switch
108 off carrier generation in the future, so these values should be reserved.</para>
109 </listitem>
110 </varlistentry>
111 <varlistentry>
112 <term>LIRC_GET_REC_RESOLUTION</term>
113 <listitem>
114 <para>Some receiver have maximum resolution which is defined by internal
115 sample rate or data format limitations. E.g. it's common that signals can
116 only be reported in 50 microsecond steps. This integer value is used by
117 lircd to automatically adjust the steps tolerance value in the lircd
118 config file.</para>
119 </listitem>
120 </varlistentry>
121 <varlistentry>
122 <term>LIRC_GET_M{IN,AX}_TIMEOUT</term>
123 <listitem>
124 <para>Some devices have internal timers that can be used to detect when
125 there's no IR activity for a long time. This can help lircd in detecting
126 that a IR signal is finished and can speed up the decoding process.
127 Returns an integer value with the minimum/maximum timeout that can be
128 set. Some devices have a fixed timeout, in that case both ioctls will
129 return the same value even though the timeout cannot be changed.</para>
130 </listitem>
131 </varlistentry>
132 <varlistentry>
133 <term>LIRC_GET_M{IN,AX}_FILTER_{PULSE,SPACE}</term>
134 <listitem>
135 <para>Some devices are able to filter out spikes in the incoming signal
136 using given filter rules. These ioctls return the hardware capabilities
137 that describe the bounds of the possible filters. Filter settings depend
138 on the IR protocols that are expected. lircd derives the settings from
139 all protocols definitions found in its config file.</para>
140 </listitem>
141 </varlistentry>
142 <varlistentry>
143 <term>LIRC_GET_LENGTH</term>
144 <listitem>
145 <para>Retrieves the code length in bits (only for LIRC_MODE_LIRCCODE).
146 Reads on the device must be done in blocks matching the bit count.
147 The bit could should be rounded up so that it matches full bytes.</para>
148 </listitem>
149 </varlistentry>
150 <varlistentry>
151 <term>LIRC_SET_{SEND,REC}_MODE</term>
152 <listitem>
153 <para>Set send/receive mode. Largely obsolete for send, as only
154 LIRC_MODE_PULSE is supported.</para>
155 </listitem>
156 </varlistentry>
157 <varlistentry>
158 <term>LIRC_SET_{SEND,REC}_CARRIER</term>
159 <listitem>
160 <para>Set send/receive carrier (in Hz). Return 0 on success.</para>
161 </listitem>
162 </varlistentry>
163 <varlistentry>
164 <term>LIRC_SET_TRANSMITTER_MASK</term>
165 <listitem>
166 <para>This enables the given set of transmitters. The first transmitter
167 is encoded by the least significant bit, etc. When an invalid bit mask
168 is given, i.e. a bit is set, even though the device does not have so many
169 transitters, then this ioctl returns the number of available transitters
170 and does nothing otherwise.</para>
171 </listitem>
172 </varlistentry>
173 <varlistentry>
174 <term>LIRC_SET_REC_TIMEOUT</term>
175 <listitem>
176 <para>Sets the integer value for IR inactivity timeout (cf.
177 LIRC_GET_MIN_TIMEOUT and LIRC_GET_MAX_TIMEOUT). A value of 0 (if
178 supported by the hardware) disables all hardware timeouts and data should
179 be reported as soon as possible. If the exact value cannot be set, then
180 the next possible value _greater_ than the given value should be set.</para>
181 </listitem>
182 </varlistentry>
183 <varlistentry>
184 <term>LIRC_SET_REC_TIMEOUT_REPORTS</term>
185 <listitem>
186 <para>Enable (1) or disable (0) timeout reports in LIRC_MODE_MODE2. By
187 default, timeout reports should be turned off.</para>
188 </listitem>
189 </varlistentry>
190 <varlistentry>
191 <term>LIRC_SET_REC_FILTER_{,PULSE,SPACE}</term>
192 <listitem>
193 <para>Pulses/spaces shorter than this are filtered out by hardware. If
194 filters cannot be set independently for pulse/space, the corresponding
195 ioctls must return an error and LIRC_SET_REC_FILTER shall be used instead.</para>
196 </listitem>
197 </varlistentry>
198 <varlistentry>
199 <term>LIRC_SET_MEASURE_CARRIER_MODE</term>
200 <listitem>
201 <para>Enable (1)/disable (0) measure mode. If enabled, from the next key
202 press on, the driver will send LIRC_MODE2_FREQUENCY packets. By default
203 this should be turned off.</para>
204 </listitem>
205 </varlistentry>
206 <varlistentry>
207 <term>LIRC_SET_REC_{DUTY_CYCLE,CARRIER}_RANGE</term>
208 <listitem>
209 <para>To set a range use LIRC_SET_REC_DUTY_CYCLE_RANGE/LIRC_SET_REC_CARRIER_RANGE
210 with the lower bound first and later LIRC_SET_REC_DUTY_CYCLE/LIRC_SET_REC_CARRIER
211 with the upper bound.</para>
212 </listitem>
213 </varlistentry>
214 <varlistentry>
215 <term>LIRC_NOTIFY_DECODE</term>
216 <listitem>
217 <para>This ioctl is called by lircd whenever a successful decoding of an
218 incoming IR signal could be done. This can be used by supporting hardware
219 to give visual feedback to the user e.g. by flashing a LED.</para>
220 </listitem>
221 </varlistentry>
222 <varlistentry>
223 <term>LIRC_SETUP_{START,END}</term>
224 <listitem>
225 <para>Setting of several driver parameters can be optimized by encapsulating
226 the according ioctl calls with LIRC_SETUP_START/LIRC_SETUP_END. When a
227 driver receives a LIRC_SETUP_START ioctl it can choose to not commit
228 further setting changes to the hardware until a LIRC_SETUP_END is received.
229 But this is open to the driver implementation and every driver must also
230 handle parameter changes which are not encapsulated by LIRC_SETUP_START
231 and LIRC_SETUP_END. Drivers can also choose to ignore these ioctls.</para>
232 </listitem>
233 </varlistentry>
234 <varlistentry>
235 <term>LIRC_SET_WIDEBAND_RECEIVER</term>
236 <listitem>
237 <para>Some receivers are equipped with special wide band receiver which is intended
238 to be used to learn output of existing remote.
239 Calling that ioctl with (1) will enable it, and with (0) disable it.
240 This might be useful of receivers that have otherwise narrow band receiver
241 that prevents them to be used with some remotes.
242 Wide band receiver might also be more precise
243 On the other hand its disadvantage it usually reduced range of reception.
244 Note: wide band receiver might be implictly enabled if you enable
245 carrier reports. In that case it will be disabled as soon as you disable
246 carrier reports. Trying to disable wide band receiver while carrier
247 reports are active will do nothing.</para>
248 </listitem>
249 </varlistentry>
250</variablelist>
251<section id="lirc_dev_errors">
252 &return-value;
253</section>
254</section>
255</section>
diff --git a/Documentation/DocBook/media/v4l/media-controller.xml b/Documentation/DocBook/media/v4l/media-controller.xml
deleted file mode 100644
index 5f2fc07a93d7..000000000000
--- a/Documentation/DocBook/media/v4l/media-controller.xml
+++ /dev/null
@@ -1,105 +0,0 @@
1<partinfo>
2 <authorgroup>
3 <author>
4 <firstname>Laurent</firstname>
5 <surname>Pinchart</surname>
6 <affiliation><address><email>laurent.pinchart@ideasonboard.com</email></address></affiliation>
7 <contrib>Initial version.</contrib>
8 </author>
9 </authorgroup>
10 <copyright>
11 <year>2010</year>
12 <holder>Laurent Pinchart</holder>
13 </copyright>
14
15 <revhistory>
16 <!-- Put document revisions here, newest first. -->
17 <revision>
18 <revnumber>1.0.0</revnumber>
19 <date>2010-11-10</date>
20 <authorinitials>lp</authorinitials>
21 <revremark>Initial revision</revremark>
22 </revision>
23 </revhistory>
24</partinfo>
25
26<title>Media Controller API</title>
27
28<chapter id="media_controller">
29 <title>Media Controller</title>
30
31 <section id="media-controller-intro">
32 <title>Introduction</title>
33 <para>Media devices increasingly handle multiple related functions. Many USB
34 cameras include microphones, video capture hardware can also output video,
35 or SoC camera interfaces also perform memory-to-memory operations similar to
36 video codecs.</para>
37 <para>Independent functions, even when implemented in the same hardware, can
38 be modelled as separate devices. A USB camera with a microphone will be
39 presented to userspace applications as V4L2 and ALSA capture devices. The
40 devices' relationships (when using a webcam, end-users shouldn't have to
41 manually select the associated USB microphone), while not made available
42 directly to applications by the drivers, can usually be retrieved from
43 sysfs.</para>
44 <para>With more and more advanced SoC devices being introduced, the current
45 approach will not scale. Device topologies are getting increasingly complex
46 and can't always be represented by a tree structure. Hardware blocks are
47 shared between different functions, creating dependencies between seemingly
48 unrelated devices.</para>
49 <para>Kernel abstraction APIs such as V4L2 and ALSA provide means for
50 applications to access hardware parameters. As newer hardware expose an
51 increasingly high number of those parameters, drivers need to guess what
52 applications really require based on limited information, thereby
53 implementing policies that belong to userspace.</para>
54 <para>The media controller API aims at solving those problems.</para>
55 </section>
56
57 <section id="media-controller-model">
58 <title>Media device model</title>
59 <para>Discovering a device internal topology, and configuring it at runtime,
60 is one of the goals of the media controller API. To achieve this, hardware
61 devices and Linux Kernel interfaces are modelled as graph objects on
62 an oriented graph. The object types that constitute the graph are:</para>
63 <itemizedlist>
64 <listitem><para>An <emphasis role="bold">entity</emphasis>
65 is a basic media hardware or software building block. It can correspond to
66 a large variety of logical blocks such as physical hardware devices
67 (CMOS sensor for instance), logical hardware devices (a building block in
68 a System-on-Chip image processing pipeline), DMA channels or physical
69 connectors.</para></listitem>
70 <listitem><para>An <emphasis role="bold">interface</emphasis>
71 is a graph representation of a Linux Kernel userspace API interface,
72 like a device node or a sysfs file that controls one or more entities
73 in the graph.</para></listitem>
74 <listitem><para>A <emphasis role="bold">pad</emphasis>
75 is a data connection endpoint through which an entity can interact with
76 other entities. Data (not restricted to video) produced by an entity
77 flows from the entity's output to one or more entity inputs. Pads should
78 not be confused with physical pins at chip boundaries.</para></listitem>
79 <listitem><para>A <emphasis role="bold">data link</emphasis>
80 is a point-to-point oriented connection between two pads, either on the
81 same entity or on different entities. Data flows from a source pad to a
82 sink pad.</para></listitem>
83 <listitem><para>An <emphasis role="bold">interface link</emphasis>
84 is a point-to-point bidirectional control connection between a Linux
85 Kernel interface and an entity.m</para></listitem>
86 </itemizedlist>
87 </section>
88
89 <!-- All non-ioctl specific data types go here. -->
90 &sub-media-types;
91</chapter>
92
93<appendix id="media-user-func">
94 <title>Function Reference</title>
95 <!-- Keep this alphabetically sorted. -->
96 &sub-media-func-open;
97 &sub-media-func-close;
98 &sub-media-func-ioctl;
99 <!-- All ioctls go here. -->
100 &sub-media-ioc-device-info;
101 &sub-media-ioc-g-topology;
102 &sub-media-ioc-enum-entities;
103 &sub-media-ioc-enum-links;
104 &sub-media-ioc-setup-link;
105</appendix>
diff --git a/Documentation/DocBook/media/v4l/media-func-close.xml b/Documentation/DocBook/media/v4l/media-func-close.xml
deleted file mode 100644
index be149c802aeb..000000000000
--- a/Documentation/DocBook/media/v4l/media-func-close.xml
+++ /dev/null
@@ -1,59 +0,0 @@
1<refentry id="media-func-close">
2 <refmeta>
3 <refentrytitle>media close()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>media-close</refname>
9 <refpurpose>Close a media device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;unistd.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>close</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 </funcprototype>
19 </funcsynopsis>
20 </refsynopsisdiv>
21
22 <refsect1>
23 <title>Arguments</title>
24
25 <variablelist>
26 <varlistentry>
27 <term><parameter>fd</parameter></term>
28 <listitem>
29 <para>&fd;</para>
30 </listitem>
31 </varlistentry>
32 </variablelist>
33 </refsect1>
34
35 <refsect1>
36 <title>Description</title>
37
38 <para>Closes the media device. Resources associated with the file descriptor
39 are freed. The device configuration remain unchanged.</para>
40 </refsect1>
41
42 <refsect1>
43 <title>Return Value</title>
44
45 <para><function>close</function> returns 0 on success. On error, -1 is
46 returned, and <varname>errno</varname> is set appropriately. Possible error
47 codes are:</para>
48
49 <variablelist>
50 <varlistentry>
51 <term><errorcode>EBADF</errorcode></term>
52 <listitem>
53 <para><parameter>fd</parameter> is not a valid open file descriptor.
54 </para>
55 </listitem>
56 </varlistentry>
57 </variablelist>
58 </refsect1>
59</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-func-ioctl.xml b/Documentation/DocBook/media/v4l/media-func-ioctl.xml
deleted file mode 100644
index 39478d0fbcaa..000000000000
--- a/Documentation/DocBook/media/v4l/media-func-ioctl.xml
+++ /dev/null
@@ -1,73 +0,0 @@
1<refentry id="media-func-ioctl">
2 <refmeta>
3 <refentrytitle>media ioctl()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>media-ioctl</refname>
9 <refpurpose>Control a media 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>Media ioctl request code as defined in the media.h header file,
38 for example MEDIA_IOC_SETUP_LINK.</para>
39 </listitem>
40 </varlistentry>
41 <varlistentry>
42 <term><parameter>argp</parameter></term>
43 <listitem>
44 <para>Pointer to a request-specific structure.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52 <para>The <function>ioctl()</function> function manipulates media device
53 parameters. The argument <parameter>fd</parameter> must be an open file
54 descriptor.</para>
55 <para>The ioctl <parameter>request</parameter> code specifies the media
56 function to be called. It has encoded in it whether the argument is an
57 input, output or read/write parameter, and the size of the argument
58 <parameter>argp</parameter> in bytes.</para>
59 <para>Macros and structures definitions specifying media ioctl requests and
60 their parameters are located in the media.h header file. All media ioctl
61 requests, their respective function and parameters are specified in
62 <xref linkend="media-user-func" />.</para>
63 </refsect1>
64
65 <refsect1>
66 &return-value;
67
68 <para>Request-specific error codes are listed in the
69 individual requests descriptions.</para>
70 <para>When an ioctl that takes an output or read/write parameter fails,
71 the parameter remains unmodified.</para>
72 </refsect1>
73</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-func-open.xml b/Documentation/DocBook/media/v4l/media-func-open.xml
deleted file mode 100644
index 122374a3e894..000000000000
--- a/Documentation/DocBook/media/v4l/media-func-open.xml
+++ /dev/null
@@ -1,94 +0,0 @@
1<refentry id="media-func-open">
2 <refmeta>
3 <refentrytitle>media open()</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>media-open</refname>
9 <refpurpose>Open a media device</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcsynopsisinfo>#include &lt;fcntl.h&gt;</funcsynopsisinfo>
15 <funcprototype>
16 <funcdef>int <function>open</function></funcdef>
17 <paramdef>const char *<parameter>device_name</parameter></paramdef>
18 <paramdef>int <parameter>flags</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>device_name</parameter></term>
29 <listitem>
30 <para>Device to be opened.</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>flags</parameter></term>
35 <listitem>
36 <para>Open flags. Access mode must be either <constant>O_RDONLY</constant>
37 or <constant>O_RDWR</constant>. Other flags have no effect.</para>
38 </listitem>
39 </varlistentry>
40 </variablelist>
41 </refsect1>
42 <refsect1>
43 <title>Description</title>
44 <para>To open a media device applications call <function>open()</function>
45 with the desired device name. The function has no side effects; the device
46 configuration remain unchanged.</para>
47 <para>When the device is opened in read-only mode, attempts to modify its
48 configuration will result in an error, and <varname>errno</varname> will be
49 set to <errorcode>EBADF</errorcode>.</para>
50 </refsect1>
51 <refsect1>
52 <title>Return Value</title>
53
54 <para><function>open</function> returns the new file descriptor on success.
55 On error, -1 is returned, and <varname>errno</varname> is set appropriately.
56 Possible error codes are:</para>
57
58 <variablelist>
59 <varlistentry>
60 <term><errorcode>EACCES</errorcode></term>
61 <listitem>
62 <para>The requested access to the file is not allowed.</para>
63 </listitem>
64 </varlistentry>
65 <varlistentry>
66 <term><errorcode>EMFILE</errorcode></term>
67 <listitem>
68 <para>The process already has the maximum number of files open.
69 </para>
70 </listitem>
71 </varlistentry>
72 <varlistentry>
73 <term><errorcode>ENFILE</errorcode></term>
74 <listitem>
75 <para>The system limit on the total number of open files has been
76 reached.</para>
77 </listitem>
78 </varlistentry>
79 <varlistentry>
80 <term><errorcode>ENOMEM</errorcode></term>
81 <listitem>
82 <para>Insufficient kernel memory was available.</para>
83 </listitem>
84 </varlistentry>
85 <varlistentry>
86 <term><errorcode>ENXIO</errorcode></term>
87 <listitem>
88 <para>No device corresponding to this device special file exists.
89 </para>
90 </listitem>
91 </varlistentry>
92 </variablelist>
93 </refsect1>
94</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-device-info.xml b/Documentation/DocBook/media/v4l/media-ioc-device-info.xml
deleted file mode 100644
index b0a21ac300b8..000000000000
--- a/Documentation/DocBook/media/v4l/media-ioc-device-info.xml
+++ /dev/null
@@ -1,132 +0,0 @@
1<refentry id="media-ioc-device-info">
2 <refmeta>
3 <refentrytitle>ioctl MEDIA_IOC_DEVICE_INFO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>MEDIA_IOC_DEVICE_INFO</refname>
9 <refpurpose>Query device information</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 media_device_info *<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>File descriptor returned by
31 <link linkend='media-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>MEDIA_IOC_DEVICE_INFO</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>All media devices must support the <constant>MEDIA_IOC_DEVICE_INFO</constant>
53 ioctl. To query device information, applications call the ioctl with a
54 pointer to a &media-device-info;. The driver fills the structure and returns
55 the information to the application.
56 The ioctl never fails.</para>
57
58 <table pgwide="1" frame="none" id="media-device-info">
59 <title>struct <structname>media_device_info</structname></title>
60 <tgroup cols="3">
61 &cs-str;
62 <tbody valign="top">
63 <row>
64 <entry>char</entry>
65 <entry><structfield>driver</structfield>[16]</entry>
66 <entry><para>Name of the driver implementing the media API as a
67 NUL-terminated ASCII string. The driver version is stored in the
68 <structfield>driver_version</structfield> field.</para>
69 <para>Driver specific applications can use this information to
70 verify the driver identity. It is also useful to work around
71 known bugs, or to identify drivers in error reports.</para></entry>
72 </row>
73 <row>
74 <entry>char</entry>
75 <entry><structfield>model</structfield>[32]</entry>
76 <entry>Device model name as a NUL-terminated UTF-8 string. The
77 device version is stored in the <structfield>device_version</structfield>
78 field and is not be appended to the model name.</entry>
79 </row>
80 <row>
81 <entry>char</entry>
82 <entry><structfield>serial</structfield>[40]</entry>
83 <entry>Serial number as a NUL-terminated ASCII string.</entry>
84 </row>
85 <row>
86 <entry>char</entry>
87 <entry><structfield>bus_info</structfield>[32]</entry>
88 <entry>Location of the device in the system as a NUL-terminated
89 ASCII string. This includes the bus type name (PCI, USB, ...) and a
90 bus-specific identifier.</entry>
91 </row>
92 <row>
93 <entry>__u32</entry>
94 <entry><structfield>media_version</structfield></entry>
95 <entry>Media API version, formatted with the
96 <constant>KERNEL_VERSION()</constant> macro.</entry>
97 </row>
98 <row>
99 <entry>__u32</entry>
100 <entry><structfield>hw_revision</structfield></entry>
101 <entry>Hardware device revision in a driver-specific format.</entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>driver_version</structfield></entry>
106 <entry>Media device driver version, formatted with the
107 <constant>KERNEL_VERSION()</constant> macro. Together with the
108 <structfield>driver</structfield> field this identifies a particular
109 driver.</entry>
110 </row>
111 <row>
112 <entry>__u32</entry>
113 <entry><structfield>reserved</structfield>[31]</entry>
114 <entry>Reserved for future extensions. Drivers and applications must
115 set this array to zero.</entry>
116 </row>
117 </tbody>
118 </tgroup>
119 </table>
120 <para>The <structfield>serial</structfield> and <structfield>bus_info</structfield>
121 fields can be used to distinguish between multiple instances of otherwise
122 identical hardware. The serial number takes precedence when provided and can
123 be assumed to be unique. If the serial number is an empty string, the
124 <structfield>bus_info</structfield> field can be used instead. The
125 <structfield>bus_info</structfield> field is guaranteed to be unique, but
126 can vary across reboots or device unplug/replug.</para>
127 </refsect1>
128
129 <refsect1>
130 &return-value;
131 </refsect1>
132</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
deleted file mode 100644
index 0c4f96bfc2de..000000000000
--- a/Documentation/DocBook/media/v4l/media-ioc-enum-entities.xml
+++ /dev/null
@@ -1,180 +0,0 @@
1<refentry id="media-ioc-enum-entities">
2 <refmeta>
3 <refentrytitle>ioctl MEDIA_IOC_ENUM_ENTITIES</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>MEDIA_IOC_ENUM_ENTITIES</refname>
9 <refpurpose>Enumerate entities and their properties</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 media_entity_desc *<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>File descriptor returned by
31 <link linkend='media-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>MEDIA_IOC_ENUM_ENTITIES</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 <para>To query the attributes of an entity, applications set the id field
52 of a &media-entity-desc; structure and call the MEDIA_IOC_ENUM_ENTITIES
53 ioctl with a pointer to this structure. The driver fills the rest of the
54 structure or returns an &EINVAL; when the id is invalid.</para>
55 <para>Entities can be enumerated by or'ing the id with the
56 <constant>MEDIA_ENT_ID_FLAG_NEXT</constant> flag. The driver will return
57 information about the entity with the smallest id strictly larger than the
58 requested one ('next entity'), or the &EINVAL; if there is none.</para>
59 <para>Entity IDs can be non-contiguous. Applications must
60 <emphasis>not</emphasis> try to enumerate entities by calling
61 MEDIA_IOC_ENUM_ENTITIES with increasing id's until they get an error.</para>
62
63 <table pgwide="1" frame="none" id="media-entity-desc">
64 <title>struct <structname>media_entity_desc</structname></title>
65 <tgroup cols="5">
66 <colspec colname="c1" />
67 <colspec colname="c2" />
68 <colspec colname="c3" />
69 <colspec colname="c4" />
70 <colspec colname="c5" />
71 <tbody valign="top">
72 <row>
73 <entry>__u32</entry>
74 <entry><structfield>id</structfield></entry>
75 <entry></entry>
76 <entry></entry>
77 <entry>Entity id, set by the application. When the id is or'ed with
78 <constant>MEDIA_ENT_ID_FLAG_NEXT</constant>, the driver clears the
79 flag and returns the first entity with a larger id.</entry>
80 </row>
81 <row>
82 <entry>char</entry>
83 <entry><structfield>name</structfield>[32]</entry>
84 <entry></entry>
85 <entry></entry>
86 <entry>Entity name as an UTF-8 NULL-terminated string.</entry>
87 </row>
88 <row>
89 <entry>__u32</entry>
90 <entry><structfield>type</structfield></entry>
91 <entry></entry>
92 <entry></entry>
93 <entry>Entity type, see <xref linkend="media-entity-type" /> for details.</entry>
94 </row>
95 <row>
96 <entry>__u32</entry>
97 <entry><structfield>revision</structfield></entry>
98 <entry></entry>
99 <entry></entry>
100 <entry>Entity revision. Always zero (obsolete)</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>flags</structfield></entry>
105 <entry></entry>
106 <entry></entry>
107 <entry>Entity flags, see <xref linkend="media-entity-flag" /> for details.</entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>group_id</structfield></entry>
112 <entry></entry>
113 <entry></entry>
114 <entry>Entity group ID. Always zero (obsolete)</entry>
115 </row>
116 <row>
117 <entry>__u16</entry>
118 <entry><structfield>pads</structfield></entry>
119 <entry></entry>
120 <entry></entry>
121 <entry>Number of pads</entry>
122 </row>
123 <row>
124 <entry>__u16</entry>
125 <entry><structfield>links</structfield></entry>
126 <entry></entry>
127 <entry></entry>
128 <entry>Total number of outbound links. Inbound links are not counted
129 in this field.</entry>
130 </row>
131 <row>
132 <entry>union</entry>
133 </row>
134 <row>
135 <entry></entry>
136 <entry>struct</entry>
137 <entry><structfield>dev</structfield></entry>
138 <entry></entry>
139 <entry>Valid for (sub-)devices that create a single device node.</entry>
140 </row>
141 <row>
142 <entry></entry>
143 <entry></entry>
144 <entry>__u32</entry>
145 <entry><structfield>major</structfield></entry>
146 <entry>Device node major number.</entry>
147 </row>
148 <row>
149 <entry></entry>
150 <entry></entry>
151 <entry>__u32</entry>
152 <entry><structfield>minor</structfield></entry>
153 <entry>Device node minor number.</entry>
154 </row>
155 <row>
156 <entry></entry>
157 <entry>__u8</entry>
158 <entry><structfield>raw</structfield>[184]</entry>
159 <entry></entry>
160 <entry></entry>
161 </row>
162 </tbody>
163 </tgroup>
164 </table>
165 </refsect1>
166
167 <refsect1>
168 &return-value;
169
170 <variablelist>
171 <varlistentry>
172 <term><errorcode>EINVAL</errorcode></term>
173 <listitem>
174 <para>The &media-entity-desc; <structfield>id</structfield> references
175 a non-existing entity.</para>
176 </listitem>
177 </varlistentry>
178 </variablelist>
179 </refsect1>
180</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml b/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml
deleted file mode 100644
index 2bbeea9f3e18..000000000000
--- a/Documentation/DocBook/media/v4l/media-ioc-enum-links.xml
+++ /dev/null
@@ -1,160 +0,0 @@
1<refentry id="media-ioc-enum-links">
2 <refmeta>
3 <refentrytitle>ioctl MEDIA_IOC_ENUM_LINKS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>MEDIA_IOC_ENUM_LINKS</refname>
9 <refpurpose>Enumerate all pads and links for a given entity</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 media_links_enum *<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>File descriptor returned by
31 <link linkend='media-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>MEDIA_IOC_ENUM_LINKS</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>To enumerate pads and/or links for a given entity, applications set
53 the entity field of a &media-links-enum; structure and initialize the
54 &media-pad-desc; and &media-link-desc; structure arrays pointed by the
55 <structfield>pads</structfield> and <structfield>links</structfield> fields.
56 They then call the MEDIA_IOC_ENUM_LINKS ioctl with a pointer to this
57 structure.</para>
58 <para>If the <structfield>pads</structfield> field is not NULL, the driver
59 fills the <structfield>pads</structfield> array with information about the
60 entity's pads. The array must have enough room to store all the entity's
61 pads. The number of pads can be retrieved with the &MEDIA-IOC-ENUM-ENTITIES;
62 ioctl.</para>
63 <para>If the <structfield>links</structfield> field is not NULL, the driver
64 fills the <structfield>links</structfield> array with information about the
65 entity's outbound links. The array must have enough room to store all the
66 entity's outbound links. The number of outbound links can be retrieved with
67 the &MEDIA-IOC-ENUM-ENTITIES; ioctl.</para>
68 <para>Only forward links that originate at one of the entity's source pads
69 are returned during the enumeration process.</para>
70
71 <table pgwide="1" frame="none" id="media-links-enum">
72 <title>struct <structname>media_links_enum</structname></title>
73 <tgroup cols="3">
74 &cs-str;
75 <tbody valign="top">
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>entity</structfield></entry>
79 <entry>Entity id, set by the application.</entry>
80 </row>
81 <row>
82 <entry>&media-pad-desc;</entry>
83 <entry>*<structfield>pads</structfield></entry>
84 <entry>Pointer to a pads array allocated by the application. Ignored
85 if NULL.</entry>
86 </row>
87 <row>
88 <entry>&media-link-desc;</entry>
89 <entry>*<structfield>links</structfield></entry>
90 <entry>Pointer to a links array allocated by the application. Ignored
91 if NULL.</entry>
92 </row>
93 </tbody>
94 </tgroup>
95 </table>
96
97 <table pgwide="1" frame="none" id="media-pad-desc">
98 <title>struct <structname>media_pad_desc</structname></title>
99 <tgroup cols="3">
100 &cs-str;
101 <tbody valign="top">
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>entity</structfield></entry>
105 <entry>ID of the entity this pad belongs to.</entry>
106 </row>
107 <row>
108 <entry>__u16</entry>
109 <entry><structfield>index</structfield></entry>
110 <entry>0-based pad index.</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>flags</structfield></entry>
115 <entry>Pad flags, see <xref linkend="media-pad-flag" /> for more details.</entry>
116 </row>
117 </tbody>
118 </tgroup>
119 </table>
120
121 <table pgwide="1" frame="none" id="media-link-desc">
122 <title>struct <structname>media_link_desc</structname></title>
123 <tgroup cols="3">
124 &cs-str;
125 <tbody valign="top">
126 <row>
127 <entry>&media-pad-desc;</entry>
128 <entry><structfield>source</structfield></entry>
129 <entry>Pad at the origin of this link.</entry>
130 </row>
131 <row>
132 <entry>&media-pad-desc;</entry>
133 <entry><structfield>sink</structfield></entry>
134 <entry>Pad at the target of this link.</entry>
135 </row>
136 <row>
137 <entry>__u32</entry>
138 <entry><structfield>flags</structfield></entry>
139 <entry>Link flags, see <xref linkend="media-link-flag" /> for more details.</entry>
140 </row>
141 </tbody>
142 </tgroup>
143 </table>
144
145 </refsect1>
146
147 <refsect1>
148 &return-value;
149
150 <variablelist>
151 <varlistentry>
152 <term><errorcode>EINVAL</errorcode></term>
153 <listitem>
154 <para>The &media-links-enum; <structfield>id</structfield> references
155 a non-existing entity.</para>
156 </listitem>
157 </varlistentry>
158 </variablelist>
159 </refsect1>
160</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-g-topology.xml b/Documentation/DocBook/media/v4l/media-ioc-g-topology.xml
deleted file mode 100644
index e0d49fa329f0..000000000000
--- a/Documentation/DocBook/media/v4l/media-ioc-g-topology.xml
+++ /dev/null
@@ -1,391 +0,0 @@
1<refentry id="media-g-topology">
2 <refmeta>
3 <refentrytitle>ioctl MEDIA_IOC_G_TOPOLOGY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>MEDIA_IOC_G_TOPOLOGY</refname>
9 <refpurpose>Enumerate the graph topology and graph element properties</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 media_v2_topology *<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>File descriptor returned by
31 <link linkend='media-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>MEDIA_IOC_G_TOPOLOGY</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 <para>The typical usage of this ioctl is to call it twice.
52 On the first call, the structure defined at &media-v2-topology; should
53 be zeroed. At return, if no errors happen, this ioctl will return the
54 <constant>topology_version</constant> and the total number of entities,
55 interfaces, pads and links.</para>
56 <para>Before the second call, the userspace should allocate arrays to
57 store the graph elements that are desired, putting the pointers to them
58 at the ptr_entities, ptr_interfaces, ptr_links and/or ptr_pads, keeping
59 the other values untouched.</para>
60 <para>If the <constant>topology_version</constant> remains the same, the
61 ioctl should fill the desired arrays with the media graph elements.</para>
62
63 <table pgwide="1" frame="none" id="media-v2-topology">
64 <title>struct <structname>media_v2_topology</structname></title>
65 <tgroup cols="5">
66 <colspec colname="c1" />
67 <colspec colname="c2" />
68 <colspec colname="c3" />
69 <colspec colname="c4" />
70 <colspec colname="c5" />
71 <tbody valign="top">
72 <row>
73 <entry>__u64</entry>
74 <entry><structfield>topology_version</structfield></entry>
75 <entry></entry>
76 <entry></entry>
77 <entry>Version of the media graph topology. When the graph is
78 created, this field starts with zero. Every time a graph
79 element is added or removed, this field is
80 incremented.</entry>
81 </row>
82 <row>
83 <entry>__u64</entry>
84 <entry><structfield>num_entities</structfield></entry>
85 <entry></entry>
86 <entry></entry>
87 <entry>Number of entities in the graph</entry>
88 </row>
89 <row>
90 <entry>__u64</entry>
91 <entry><structfield>ptr_entities</structfield></entry>
92 <entry></entry>
93 <entry></entry>
94 <entry>A pointer to a memory area where the entities array
95 will be stored, converted to a 64-bits integer.
96 It can be zero. if zero, the ioctl won't store the
97 entities. It will just update
98 <constant>num_entities</constant></entry>
99 </row>
100 <row>
101 <entry>__u64</entry>
102 <entry><structfield>num_interfaces</structfield></entry>
103 <entry></entry>
104 <entry></entry>
105 <entry>Number of interfaces in the graph</entry>
106 </row>
107 <row>
108 <entry>__u64</entry>
109 <entry><structfield>ptr_interfaces</structfield></entry>
110 <entry></entry>
111 <entry></entry>
112 <entry>A pointer to a memory area where the interfaces array
113 will be stored, converted to a 64-bits integer.
114 It can be zero. if zero, the ioctl won't store the
115 interfaces. It will just update
116 <constant>num_interfaces</constant></entry>
117 </row>
118 <row>
119 <entry>__u64</entry>
120 <entry><structfield>num_pads</structfield></entry>
121 <entry></entry>
122 <entry></entry>
123 <entry>Total number of pads in the graph</entry>
124 </row>
125 <row>
126 <entry>__u64</entry>
127 <entry><structfield>ptr_pads</structfield></entry>
128 <entry></entry>
129 <entry></entry>
130 <entry>A pointer to a memory area where the pads array
131 will be stored, converted to a 64-bits integer.
132 It can be zero. if zero, the ioctl won't store the
133 pads. It will just update
134 <constant>num_pads</constant></entry>
135 </row>
136 <row>
137 <entry>__u64</entry>
138 <entry><structfield>num_links</structfield></entry>
139 <entry></entry>
140 <entry></entry>
141 <entry>Total number of data and interface links in the graph</entry>
142 </row>
143 <row>
144 <entry>__u64</entry>
145 <entry><structfield>ptr_links</structfield></entry>
146 <entry></entry>
147 <entry></entry>
148 <entry>A pointer to a memory area where the links array
149 will be stored, converted to a 64-bits integer.
150 It can be zero. if zero, the ioctl won't store the
151 links. It will just update
152 <constant>num_links</constant></entry>
153 </row>
154 </tbody>
155 </tgroup>
156 </table>
157
158 <table pgwide="1" frame="none" id="media-v2-entity">
159 <title>struct <structname>media_v2_entity</structname></title>
160 <tgroup cols="5">
161 <colspec colname="c1" />
162 <colspec colname="c2" />
163 <colspec colname="c3" />
164 <colspec colname="c4" />
165 <colspec colname="c5" />
166 <tbody valign="top">
167 <row>
168 <entry>__u32</entry>
169 <entry><structfield>id</structfield></entry>
170 <entry></entry>
171 <entry></entry>
172 <entry>Unique ID for the entity.</entry>
173 </row>
174 <row>
175 <entry>char</entry>
176 <entry><structfield>name</structfield>[64]</entry>
177 <entry></entry>
178 <entry></entry>
179 <entry>Entity name as an UTF-8 NULL-terminated string.</entry>
180 </row>
181 <row>
182 <entry>__u32</entry>
183 <entry><structfield>function</structfield></entry>
184 <entry></entry>
185 <entry></entry>
186 <entry>Entity main function, see <xref linkend="media-entity-type" /> for details.</entry>
187 </row>
188 <row>
189 <entry>__u32</entry>
190 <entry><structfield>reserved</structfield>[12]</entry>
191 <entry>Reserved for future extensions. Drivers and applications must
192 set this array to zero.</entry>
193 </row>
194 </tbody>
195 </tgroup>
196 </table>
197
198 <table pgwide="1" frame="none" id="media-v2-interface">
199 <title>struct <structname>media_v2_interface</structname></title>
200 <tgroup cols="5">
201 <colspec colname="c1" />
202 <colspec colname="c2" />
203 <colspec colname="c3" />
204 <colspec colname="c4" />
205 <colspec colname="c5" />
206 <tbody valign="top">
207 <row>
208 <entry>__u32</entry>
209 <entry><structfield>id</structfield></entry>
210 <entry></entry>
211 <entry></entry>
212 <entry>Unique ID for the interface.</entry>
213 </row>
214 <row>
215 <entry>__u32</entry>
216 <entry><structfield>intf_type</structfield></entry>
217 <entry></entry>
218 <entry></entry>
219 <entry>Interface type, see <xref linkend="media-intf-type" /> for details.</entry>
220 </row>
221 <row>
222 <entry>__u32</entry>
223 <entry><structfield>flags</structfield></entry>
224 <entry></entry>
225 <entry></entry>
226 <entry>Interface flags. Currently unused.</entry>
227 </row>
228 <row>
229 <entry>__u32</entry>
230 <entry><structfield>reserved</structfield>[9]</entry>
231 <entry></entry>
232 <entry></entry>
233 <entry>Reserved for future extensions. Drivers and applications must
234 set this array to zero.</entry>
235 </row>
236 <row>
237 <entry>struct media_v2_intf_devnode</entry>
238 <entry><structfield>devnode</structfield></entry>
239 <entry></entry>
240 <entry></entry>
241 <entry>Used only for device node interfaces. See <xref linkend="media-v2-intf-devnode" /> for details..</entry>
242 </row>
243 </tbody>
244 </tgroup>
245 </table>
246
247 <table pgwide="1" frame="none" id="media-v2-intf-devnode">
248 <title>struct <structname>media_v2_interface</structname></title>
249 <tgroup cols="5">
250 <colspec colname="c1" />
251 <colspec colname="c2" />
252 <colspec colname="c3" />
253 <colspec colname="c4" />
254 <colspec colname="c5" />
255 <tbody valign="top">
256 <row>
257 <entry>__u32</entry>
258 <entry><structfield>major</structfield></entry>
259 <entry></entry>
260 <entry></entry>
261 <entry>Device node major number.</entry>
262 </row>
263 <row>
264 <entry>__u32</entry>
265 <entry><structfield>minor</structfield></entry>
266 <entry></entry>
267 <entry></entry>
268 <entry>Device node minor number.</entry>
269 </row>
270 </tbody>
271 </tgroup>
272 </table>
273
274 <table pgwide="1" frame="none" id="media-v2-pad">
275 <title>struct <structname>media_v2_pad</structname></title>
276 <tgroup cols="5">
277 <colspec colname="c1" />
278 <colspec colname="c2" />
279 <colspec colname="c3" />
280 <colspec colname="c4" />
281 <colspec colname="c5" />
282 <tbody valign="top">
283 <row>
284 <entry>__u32</entry>
285 <entry><structfield>id</structfield></entry>
286 <entry></entry>
287 <entry></entry>
288 <entry>Unique ID for the pad.</entry>
289 </row>
290 <row>
291 <entry>__u32</entry>
292 <entry><structfield>entity_id</structfield></entry>
293 <entry></entry>
294 <entry></entry>
295 <entry>Unique ID for the entity where this pad belongs.</entry>
296 </row>
297 <row>
298 <entry>__u32</entry>
299 <entry><structfield>flags</structfield></entry>
300 <entry></entry>
301 <entry></entry>
302 <entry>Pad flags, see <xref linkend="media-pad-flag" /> for more details.</entry>
303 </row>
304 <row>
305 <entry>__u32</entry>
306 <entry><structfield>reserved</structfield>[9]</entry>
307 <entry></entry>
308 <entry></entry>
309 <entry>Reserved for future extensions. Drivers and applications must
310 set this array to zero.</entry>
311 </row>
312 </tbody>
313 </tgroup>
314 </table>
315
316 <table pgwide="1" frame="none" id="media-v2-link">
317 <title>struct <structname>media_v2_pad</structname></title>
318 <tgroup cols="5">
319 <colspec colname="c1" />
320 <colspec colname="c2" />
321 <colspec colname="c3" />
322 <colspec colname="c4" />
323 <colspec colname="c5" />
324 <tbody valign="top">
325 <row>
326 <entry>__u32</entry>
327 <entry><structfield>id</structfield></entry>
328 <entry></entry>
329 <entry></entry>
330 <entry>Unique ID for the pad.</entry>
331 </row>
332 <row>
333 <entry>__u32</entry>
334 <entry><structfield>source_id</structfield></entry>
335 <entry></entry>
336 <entry></entry>
337 <entry>
338 <para>On pad to pad links: unique ID for the source pad.</para>
339 <para>On interface to entity links: unique ID for the interface.</para>
340 </entry>
341 </row>
342 <row>
343 <entry>__u32</entry>
344 <entry><structfield>sink_id</structfield></entry>
345 <entry></entry>
346 <entry></entry>
347 <entry>
348 <para>On pad to pad links: unique ID for the sink pad.</para>
349 <para>On interface to entity links: unique ID for the entity.</para>
350 </entry>
351 </row>
352 <row>
353 <entry>__u32</entry>
354 <entry><structfield>flags</structfield></entry>
355 <entry></entry>
356 <entry></entry>
357 <entry>Link flags, see <xref linkend="media-link-flag" /> for more details.</entry>
358 </row>
359 <row>
360 <entry>__u32</entry>
361 <entry><structfield>reserved</structfield>[5]</entry>
362 <entry></entry>
363 <entry></entry>
364 <entry>Reserved for future extensions. Drivers and applications must
365 set this array to zero.</entry>
366 </row>
367 </tbody>
368 </tgroup>
369 </table>
370
371 </refsect1>
372
373 <refsect1>
374 &return-value;
375
376 <variablelist>
377 <varlistentry>
378 <term><errorcode>ENOSPC</errorcode></term>
379 <listitem>
380 <para>This is returned when either one or more of the num_entities,
381 num_interfaces, num_links or num_pads are non-zero and are smaller
382 than the actual number of elements inside the graph. This may happen
383 if the <constant>topology_version</constant> changed when compared
384 to the last time this ioctl was called. Userspace should usually
385 free the area for the pointers, zero the struct elements and call
386 this ioctl again.</para>
387 </listitem>
388 </varlistentry>
389 </variablelist>
390 </refsect1>
391</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml b/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml
deleted file mode 100644
index fc2e522ee65a..000000000000
--- a/Documentation/DocBook/media/v4l/media-ioc-setup-link.xml
+++ /dev/null
@@ -1,84 +0,0 @@
1<refentry id="media-ioc-setup-link">
2 <refmeta>
3 <refentrytitle>ioctl MEDIA_IOC_SETUP_LINK</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>MEDIA_IOC_SETUP_LINK</refname>
9 <refpurpose>Modify the properties of a link</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 media_link_desc *<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>File descriptor returned by
31 <link linkend='media-func-open'><function>open()</function></link>.</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>MEDIA_IOC_SETUP_LINK</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>To change link properties applications fill a &media-link-desc; with
53 link identification information (source and sink pad) and the new requested
54 link flags. They then call the MEDIA_IOC_SETUP_LINK ioctl with a pointer to
55 that structure.</para>
56 <para>The only configurable property is the <constant>ENABLED</constant>
57 link flag to enable/disable a link. Links marked with the
58 <constant>IMMUTABLE</constant> link flag can not be enabled or disabled.
59 </para>
60 <para>Link configuration has no side effect on other links. If an enabled
61 link at the sink pad prevents the link from being enabled, the driver
62 returns with an &EBUSY;.</para>
63 <para>Only links marked with the <constant>DYNAMIC</constant> link flag can
64 be enabled/disabled while streaming media data. Attempting to enable or
65 disable a streaming non-dynamic link will return an &EBUSY;.</para>
66 <para>If the specified link can't be found the driver returns with an
67 &EINVAL;.</para>
68 </refsect1>
69
70 <refsect1>
71 &return-value;
72
73 <variablelist>
74 <varlistentry>
75 <term><errorcode>EINVAL</errorcode></term>
76 <listitem>
77 <para>The &media-link-desc; references a non-existing link, or the
78 link is immutable and an attempt to modify its configuration was made.
79 </para>
80 </listitem>
81 </varlistentry>
82 </variablelist>
83 </refsect1>
84</refentry>
diff --git a/Documentation/DocBook/media/v4l/media-types.xml b/Documentation/DocBook/media/v4l/media-types.xml
deleted file mode 100644
index 95aa1f9c836a..000000000000
--- a/Documentation/DocBook/media/v4l/media-types.xml
+++ /dev/null
@@ -1,379 +0,0 @@
1<section id="media-controller-types">
2<title>Types and flags used to represent the media graph elements</title>
3
4 <table frame="none" pgwide="1" id="media-entity-type">
5 <title>Media entity types</title>
6 <tgroup cols="2">
7 <colspec colname="c1"/>
8 <colspec colname="c2"/>
9 <tbody valign="top">
10 <row>
11 <entry><constant>MEDIA_ENT_F_UNKNOWN</constant> and <constant>MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN</constant></entry>
12 <entry>Unknown entity. That generally indicates that
13 a driver didn't initialize properly the entity, with is a Kernel bug</entry>
14 </row>
15 <row>
16 <entry><constant>MEDIA_ENT_F_IO_V4L</constant></entry>
17 <entry>Data streaming input and/or output entity.</entry>
18 </row>
19 <row>
20 <entry><constant>MEDIA_ENT_F_IO_VBI</constant></entry>
21 <entry>V4L VBI streaming input or output entity</entry>
22 </row>
23 <row>
24 <entry><constant>MEDIA_ENT_F_IO_SWRADIO</constant></entry>
25 <entry>V4L Software Digital Radio (SDR) streaming input or output entity</entry>
26 </row>
27 <row>
28 <entry><constant>MEDIA_ENT_F_IO_DTV</constant></entry>
29 <entry>DVB Digital TV streaming input or output entity</entry>
30 </row>
31 <row>
32 <entry><constant>MEDIA_ENT_F_DTV_DEMOD</constant></entry>
33 <entry>Digital TV demodulator entity.</entry>
34 </row>
35 <row>
36 <entry><constant>MEDIA_ENT_F_TS_DEMUX</constant></entry>
37 <entry>MPEG Transport stream demux entity. Could be implemented on hardware or in Kernelspace by the Linux DVB subsystem.</entry>
38 </row>
39 <row>
40 <entry><constant>MEDIA_ENT_F_DTV_CA</constant></entry>
41 <entry>Digital TV Conditional Access module (CAM) entity</entry>
42 </row>
43 <row>
44 <entry><constant>MEDIA_ENT_F_DTV_NET_DECAP</constant></entry>
45 <entry>Digital TV network ULE/MLE desencapsulation entity. Could be implemented on hardware or in Kernelspace</entry>
46 </row>
47 <row>
48 <entry><constant>MEDIA_ENT_F_CONN_RF</constant></entry>
49 <entry>Connector for a Radio Frequency (RF) signal.</entry>
50 </row>
51 <row>
52 <entry><constant>MEDIA_ENT_F_CONN_SVIDEO</constant></entry>
53 <entry>Connector for a S-Video signal.</entry>
54 </row>
55 <row>
56 <entry><constant>MEDIA_ENT_F_CONN_COMPOSITE</constant></entry>
57 <entry>Connector for a RGB composite signal.</entry>
58 </row>
59 <row>
60 <entry><constant>MEDIA_ENT_F_CAM_SENSOR</constant></entry>
61 <entry>Camera video sensor entity.</entry>
62 </row>
63 <row>
64 <entry><constant>MEDIA_ENT_F_FLASH</constant></entry>
65 <entry>Flash controller entity.</entry>
66 </row>
67 <row>
68 <entry><constant>MEDIA_ENT_F_LENS</constant></entry>
69 <entry>Lens controller entity.</entry>
70 </row>
71 <row>
72 <entry><constant>MEDIA_ENT_F_ATV_DECODER</constant></entry>
73 <entry>Analog video decoder, the basic function of the video decoder
74 is to accept analogue video from a wide variety of sources such as
75 broadcast, DVD players, cameras and video cassette recorders, in
76 either NTSC, PAL, SECAM or HD format, separating the stream
77 into its component parts, luminance and chrominance, and output
78 it in some digital video standard, with appropriate timing
79 signals.</entry>
80 </row>
81 <row>
82 <entry><constant>MEDIA_ENT_F_TUNER</constant></entry>
83 <entry>Digital TV, analog TV, radio and/or software radio tuner,
84 with consists on a PLL tuning stage that converts radio
85 frequency (RF) signal into an Intermediate Frequency (IF).
86 Modern tuners have internally IF-PLL decoders for audio
87 and video, but older models have those stages implemented
88 on separate entities.
89 </entry>
90 </row>
91 <row>
92 <entry><constant>MEDIA_ENT_F_IF_VID_DECODER</constant></entry>
93 <entry>IF-PLL video decoder. It receives the IF from a PLL
94 and decodes the analog TV video signal. This is commonly
95 found on some very old analog tuners, like Philips MK3
96 designs. They all contain a tda9887 (or some software
97 compatible similar chip, like tda9885). Those devices
98 use a different I2C address than the tuner PLL.
99 </entry>
100 </row>
101 <row>
102 <entry><constant>MEDIA_ENT_F_IF_AUD_DECODER</constant></entry>
103 <entry>IF-PLL sound decoder. It receives the IF from a PLL
104 and decodes the analog TV audio signal. This is commonly
105 found on some very old analog hardware, like Micronas
106 msp3400, Philips tda9840, tda985x, etc. Those devices
107 use a different I2C address than the tuner PLL and
108 should be controlled together with the IF-PLL video
109 decoder.
110 </entry>
111 </row>
112 <row>
113 <entry><constant>MEDIA_ENT_F_AUDIO_CAPTURE</constant></entry>
114 <entry>Audio Capture Function Entity.</entry>
115 </row>
116 <row>
117 <entry><constant>MEDIA_ENT_F_AUDIO_PLAYBACK</constant></entry>
118 <entry>Audio Playback Function Entity.</entry>
119 </row>
120 <row>
121 <entry><constant>MEDIA_ENT_F_AUDIO_MIXER</constant></entry>
122 <entry>Audio Mixer Function Entity.</entry>
123 </row>
124 <row>
125 <entry><constant>MEDIA_ENT_F_PROC_VIDEO_COMPOSER</constant></entry>
126 <entry>Video composer (blender). An entity capable of video
127 composing must have at least two sink pads and one source
128 pad, and composes input video frames onto output video
129 frames. Composition can be performed using alpha blending,
130 color keying, raster operations (ROP), stitching or any other
131 means.
132 </entry>
133 </row>
134 <row>
135 <entry><constant>MEDIA_ENT_F_PROC_VIDEO_PIXEL_FORMATTER</constant></entry>
136 <entry>Video pixel formatter. An entity capable of pixel formatting
137 must have at least one sink pad and one source pad. Read
138 pixel formatters read pixels from memory and perform a subset
139 of unpacking, cropping, color keying, alpha multiplication
140 and pixel encoding conversion. Write pixel formatters perform
141 a subset of dithering, pixel encoding conversion and packing
142 and write pixels to memory.
143 </entry>
144 </row>
145 <row>
146 <entry><constant>MEDIA_ENT_F_PROC_VIDEO_PIXEL_ENC_CONV</constant></entry>
147 <entry>Video pixel encoding converter. An entity capable of pixel
148 enconding conversion must have at least one sink pad and one
149 source pad, and convert the encoding of pixels received on
150 its sink pad(s) to a different encoding output on its source
151 pad(s). Pixel encoding conversion includes but isn't limited
152 to RGB to/from HSV, RGB to/from YUV and CFA (Bayer) to RGB
153 conversions.
154 </entry>
155 </row>
156 <row>
157 <entry><constant>MEDIA_ENT_F_PROC_VIDEO_LUT</constant></entry>
158 <entry>Video look-up table. An entity capable of video lookup table
159 processing must have one sink pad and one source pad. It uses
160 the values of the pixels received on its sink pad to look up
161 entries in internal tables and output them on its source pad.
162 The lookup processing can be performed on all components
163 separately or combine them for multi-dimensional table
164 lookups.
165 </entry>
166 </row>
167 <row>
168 <entry><constant>MEDIA_ENT_F_PROC_VIDEO_SCALER</constant></entry>
169 <entry>Video scaler. An entity capable of video scaling must have
170 at least one sink pad and one source pad, and scale the
171 video frame(s) received on its sink pad(s) to a different
172 resolution output on its source pad(s). The range of
173 supported scaling ratios is entity-specific and can differ
174 between the horizontal and vertical directions (in particular
175 scaling can be supported in one direction only). Binning and
176 skipping are considered as scaling.
177 </entry>
178 </row>
179 <row>
180 <entry><constant>MEDIA_ENT_F_PROC_VIDEO_STATISTICS</constant></entry>
181 <entry>Video statistics computation (histogram, 3A, ...). An entity
182 capable of statistics computation must have one sink pad and
183 one source pad. It computes statistics over the frames
184 received on its sink pad and outputs the statistics data on
185 its source pad.
186 </entry>
187 </row>
188 </tbody>
189 </tgroup>
190 </table>
191
192 <table frame="none" pgwide="1" id="media-entity-flag">
193 <title>Media entity flags</title>
194 <tgroup cols="2">
195 <colspec colname="c1"/>
196 <colspec colname="c2"/>
197 <tbody valign="top">
198 <row>
199 <entry><constant>MEDIA_ENT_FL_DEFAULT</constant></entry>
200 <entry>Default entity for its type. Used to discover the default
201 audio, VBI and video devices, the default camera sensor, ...</entry>
202 </row>
203 <row>
204 <entry><constant>MEDIA_ENT_FL_CONNECTOR</constant></entry>
205 <entry>The entity represents a data conector</entry>
206 </row>
207 </tbody>
208 </tgroup>
209 </table>
210
211 <table frame="none" pgwide="1" id="media-intf-type">
212 <title>Media interface types</title>
213 <tgroup cols="3">
214 <colspec colname="c1"/>
215 <colspec colname="c2"/>
216 <colspec colname="c3"/>
217 <tbody valign="top">
218 <row>
219 <entry><constant>MEDIA_INTF_T_DVB_FE</constant></entry>
220 <entry>Device node interface for the Digital TV frontend</entry>
221 <entry>typically, /dev/dvb/adapter?/frontend?</entry>
222 </row>
223 <row>
224 <entry><constant>MEDIA_INTF_T_DVB_DEMUX</constant></entry>
225 <entry>Device node interface for the Digital TV demux</entry>
226 <entry>typically, /dev/dvb/adapter?/demux?</entry>
227 </row>
228 <row>
229 <entry><constant>MEDIA_INTF_T_DVB_DVR</constant></entry>
230 <entry>Device node interface for the Digital TV DVR</entry>
231 <entry>typically, /dev/dvb/adapter?/dvr?</entry>
232 </row>
233 <row>
234 <entry><constant>MEDIA_INTF_T_DVB_CA</constant></entry>
235 <entry>Device node interface for the Digital TV Conditional Access</entry>
236 <entry>typically, /dev/dvb/adapter?/ca?</entry>
237 </row>
238 <row>
239 <entry><constant>MEDIA_INTF_T_DVB_FE</constant></entry>
240 <entry>Device node interface for the Digital TV network control</entry>
241 <entry>typically, /dev/dvb/adapter?/net?</entry>
242 </row>
243 <row>
244 <entry><constant>MEDIA_INTF_T_V4L_VIDEO</constant></entry>
245 <entry>Device node interface for video (V4L)</entry>
246 <entry>typically, /dev/video?</entry>
247 </row>
248 <row>
249 <entry><constant>MEDIA_INTF_T_V4L_VBI</constant></entry>
250 <entry>Device node interface for VBI (V4L)</entry>
251 <entry>typically, /dev/vbi?</entry>
252 </row>
253 <row>
254 <entry><constant>MEDIA_INTF_T_V4L_RADIO</constant></entry>
255 <entry>Device node interface for radio (V4L)</entry>
256 <entry>typically, /dev/vbi?</entry>
257 </row>
258 <row>
259 <entry><constant>MEDIA_INTF_T_V4L_SUBDEV</constant></entry>
260 <entry>Device node interface for a V4L subdevice</entry>
261 <entry>typically, /dev/v4l-subdev?</entry>
262 </row>
263 <row>
264 <entry><constant>MEDIA_INTF_T_V4L_SWRADIO</constant></entry>
265 <entry>Device node interface for Software Defined Radio (V4L)</entry>
266 <entry>typically, /dev/swradio?</entry>
267 </row>
268 <row>
269 <entry><constant>MEDIA_INTF_T_ALSA_PCM_CAPTURE</constant></entry>
270 <entry>Device node interface for ALSA PCM Capture</entry>
271 <entry>typically, /dev/snd/pcmC?D?c</entry>
272 </row>
273 <row>
274 <entry><constant>MEDIA_INTF_T_ALSA_PCM_PLAYBACK</constant></entry>
275 <entry>Device node interface for ALSA PCM Playback</entry>
276 <entry>typically, /dev/snd/pcmC?D?p</entry>
277 </row>
278 <row>
279 <entry><constant>MEDIA_INTF_T_ALSA_CONTROL</constant></entry>
280 <entry>Device node interface for ALSA Control</entry>
281 <entry>typically, /dev/snd/controlC?</entry>
282 </row>
283 <row>
284 <entry><constant>MEDIA_INTF_T_ALSA_COMPRESS</constant></entry>
285 <entry>Device node interface for ALSA Compress</entry>
286 <entry>typically, /dev/snd/compr?</entry>
287 </row>
288 <row>
289 <entry><constant>MEDIA_INTF_T_ALSA_RAWMIDI</constant></entry>
290 <entry>Device node interface for ALSA Raw MIDI</entry>
291 <entry>typically, /dev/snd/midi?</entry>
292 </row>
293 <row>
294 <entry><constant>MEDIA_INTF_T_ALSA_HWDEP</constant></entry>
295 <entry>Device node interface for ALSA Hardware Dependent</entry>
296 <entry>typically, /dev/snd/hwC?D?</entry>
297 </row>
298 <row>
299 <entry><constant>MEDIA_INTF_T_ALSA_SEQUENCER</constant></entry>
300 <entry>Device node interface for ALSA Sequencer</entry>
301 <entry>typically, /dev/snd/seq</entry>
302 </row>
303 <row>
304 <entry><constant>MEDIA_INTF_T_ALSA_TIMER</constant></entry>
305 <entry>Device node interface for ALSA Timer</entry>
306 <entry>typically, /dev/snd/timer</entry>
307 </row>
308 </tbody>
309 </tgroup>
310 </table>
311
312 <table frame="none" pgwide="1" id="media-pad-flag">
313 <title>Media pad flags</title>
314 <tgroup cols="2">
315 <colspec colname="c1"/>
316 <colspec colname="c2"/>
317 <tbody valign="top">
318 <row>
319 <entry><constant>MEDIA_PAD_FL_SINK</constant></entry>
320 <entry>Input pad, relative to the entity. Input pads sink data and
321 are targets of links.</entry>
322 </row>
323 <row>
324 <entry><constant>MEDIA_PAD_FL_SOURCE</constant></entry>
325 <entry>Output pad, relative to the entity. Output pads source data
326 and are origins of links.</entry>
327 </row>
328 <row>
329 <entry><constant>MEDIA_PAD_FL_MUST_CONNECT</constant></entry>
330 <entry>If this flag is set and the pad is linked to any other
331 pad, then at least one of those links must be enabled for the
332 entity to be able to stream. There could be temporary reasons
333 (e.g. device configuration dependent) for the pad to need
334 enabled links even when this flag isn't set; the absence of the
335 flag doesn't imply there is none.</entry>
336 </row>
337 </tbody>
338 </tgroup>
339 </table>
340
341 <para>One and only one of <constant>MEDIA_PAD_FL_SINK</constant> and
342 <constant>MEDIA_PAD_FL_SOURCE</constant> must be set for every pad.</para>
343
344 <table frame="none" pgwide="1" id="media-link-flag">
345 <title>Media link flags</title>
346 <tgroup cols="2">
347 <colspec colname="c1"/>
348 <colspec colname="c2"/>
349 <tbody valign="top">
350 <row>
351 <entry><constant>MEDIA_LNK_FL_ENABLED</constant></entry>
352 <entry>The link is enabled and can be used to transfer media data.
353 When two or more links target a sink pad, only one of them can be
354 enabled at a time.</entry>
355 </row>
356 <row>
357 <entry><constant>MEDIA_LNK_FL_IMMUTABLE</constant></entry>
358 <entry>The link enabled state can't be modified at runtime. An
359 immutable link is always enabled.</entry>
360 </row>
361 <row>
362 <entry><constant>MEDIA_LNK_FL_DYNAMIC</constant></entry>
363 <entry>The link enabled state can be modified during streaming. This
364 flag is set by drivers and is read-only for applications.</entry>
365 </row>
366 <row>
367 <entry><constant>MEDIA_LNK_FL_LINK_TYPE</constant></entry>
368 <entry><para>This is a bitmask that defines the type of the link.
369 Currently, two types of links are supported:</para>
370 <para><constant>MEDIA_LNK_FL_DATA_LINK</constant>
371 if the link is between two pads</para>
372 <para><constant>MEDIA_LNK_FL_INTERFACE_LINK</constant>
373 if the link is between an interface and an entity</para></entry>
374 </row>
375 </tbody>
376 </tgroup>
377 </table>
378
379</section>
diff --git a/Documentation/DocBook/media/v4l/pipeline.pdf b/Documentation/DocBook/media/v4l/pipeline.pdf
deleted file mode 100644
index ee3e37f04b6a..000000000000
--- a/Documentation/DocBook/media/v4l/pipeline.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/pixfmt-grey.xml b/Documentation/DocBook/media/v4l/pixfmt-grey.xml
deleted file mode 100644
index bee970d3f76d..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-grey.xml
+++ /dev/null
@@ -1,62 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-GREY">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_GREY ('GREY')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_GREY</constant></refname>
8 <refpurpose>Grey-scale image</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image. It is really a degenerate
14Y'CbCr format which simply contains no Cb or Cr data.</para>
15
16 <example>
17 <title><constant>V4L2_PIX_FMT_GREY</constant> 4 &times; 4
18pixel image</title>
19
20 <formalpara>
21 <title>Byte Order.</title>
22 <para>Each cell is one byte.
23 <informaltable frame="none">
24 <tgroup cols="5" align="center">
25 <colspec align="left" colwidth="2*" />
26 <tbody valign="top">
27 <row>
28 <entry>start&nbsp;+&nbsp;0:</entry>
29 <entry>Y'<subscript>00</subscript></entry>
30 <entry>Y'<subscript>01</subscript></entry>
31 <entry>Y'<subscript>02</subscript></entry>
32 <entry>Y'<subscript>03</subscript></entry>
33 </row>
34 <row>
35 <entry>start&nbsp;+&nbsp;4:</entry>
36 <entry>Y'<subscript>10</subscript></entry>
37 <entry>Y'<subscript>11</subscript></entry>
38 <entry>Y'<subscript>12</subscript></entry>
39 <entry>Y'<subscript>13</subscript></entry>
40 </row>
41 <row>
42 <entry>start&nbsp;+&nbsp;8:</entry>
43 <entry>Y'<subscript>20</subscript></entry>
44 <entry>Y'<subscript>21</subscript></entry>
45 <entry>Y'<subscript>22</subscript></entry>
46 <entry>Y'<subscript>23</subscript></entry>
47 </row>
48 <row>
49 <entry>start&nbsp;+&nbsp;12:</entry>
50 <entry>Y'<subscript>30</subscript></entry>
51 <entry>Y'<subscript>31</subscript></entry>
52 <entry>Y'<subscript>32</subscript></entry>
53 <entry>Y'<subscript>33</subscript></entry>
54 </row>
55 </tbody>
56 </tgroup>
57 </informaltable>
58 </para>
59 </formalpara>
60 </example>
61 </refsect1>
62 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-m420.xml b/Documentation/DocBook/media/v4l/pixfmt-m420.xml
deleted file mode 100644
index aadae92c5d04..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-m420.xml
+++ /dev/null
@@ -1,139 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-M420">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_M420 ('M420')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_M420</constant></refname>
8 <refpurpose>Format with &frac12; horizontal and vertical chroma
9 resolution, also known as YUV 4:2:0. Hybrid plane line-interleaved
10 layout.</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>M420 is a YUV format with &frac12; horizontal and vertical chroma
16 subsampling (YUV 4:2:0). Pixels are organized as interleaved luma and
17 chroma planes. Two lines of luma data are followed by one line of chroma
18 data.</para>
19 <para>The luma plane has one byte per pixel. The chroma plane contains
20 interleaved CbCr pixels subsampled by &frac12; in the horizontal and
21 vertical directions. Each CbCr pair belongs to four pixels. For example,
22Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
23Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
24Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.</para>
25
26 <para>All line lengths are identical: if the Y lines include pad bytes
27 so do the CbCr lines.</para>
28
29 <example>
30 <title><constant>V4L2_PIX_FMT_M420</constant> 4 &times; 4
31pixel image</title>
32
33 <formalpara>
34 <title>Byte Order.</title>
35 <para>Each cell is one byte.
36 <informaltable frame="none">
37 <tgroup cols="5" align="center">
38 <colspec align="left" colwidth="2*" />
39 <tbody valign="top">
40 <row>
41 <entry>start&nbsp;+&nbsp;0:</entry>
42 <entry>Y'<subscript>00</subscript></entry>
43 <entry>Y'<subscript>01</subscript></entry>
44 <entry>Y'<subscript>02</subscript></entry>
45 <entry>Y'<subscript>03</subscript></entry>
46 </row>
47 <row>
48 <entry>start&nbsp;+&nbsp;4:</entry>
49 <entry>Y'<subscript>10</subscript></entry>
50 <entry>Y'<subscript>11</subscript></entry>
51 <entry>Y'<subscript>12</subscript></entry>
52 <entry>Y'<subscript>13</subscript></entry>
53 </row>
54 <row>
55 <entry>start&nbsp;+&nbsp;8:</entry>
56 <entry>Cb<subscript>00</subscript></entry>
57 <entry>Cr<subscript>00</subscript></entry>
58 <entry>Cb<subscript>01</subscript></entry>
59 <entry>Cr<subscript>01</subscript></entry>
60 </row>
61 <row>
62 <entry>start&nbsp;+&nbsp;16:</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>start&nbsp;+&nbsp;20:</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>
76 <entry>start&nbsp;+&nbsp;24:</entry>
77 <entry>Cb<subscript>10</subscript></entry>
78 <entry>Cr<subscript>10</subscript></entry>
79 <entry>Cb<subscript>11</subscript></entry>
80 <entry>Cr<subscript>11</subscript></entry>
81 </row>
82 </tbody>
83 </tgroup>
84 </informaltable>
85 </para>
86 </formalpara>
87
88 <formalpara>
89 <title>Color Sample Location.</title>
90 <para>
91 <informaltable frame="none">
92 <tgroup cols="7" align="center">
93 <tbody valign="top">
94 <row>
95 <entry></entry>
96 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
97 <entry>2</entry><entry></entry><entry>3</entry>
98 </row>
99 <row>
100 <entry>0</entry>
101 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
102 <entry>Y</entry><entry></entry><entry>Y</entry>
103 </row>
104 <row>
105 <entry></entry>
106 <entry></entry><entry>C</entry><entry></entry><entry></entry>
107 <entry></entry><entry>C</entry><entry></entry>
108 </row>
109 <row>
110 <entry>1</entry>
111 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
112 <entry>Y</entry><entry></entry><entry>Y</entry>
113 </row>
114 <row>
115 <entry></entry>
116 </row>
117 <row>
118 <entry>2</entry>
119 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
120 <entry>Y</entry><entry></entry><entry>Y</entry>
121 </row>
122 <row>
123 <entry></entry>
124 <entry></entry><entry>C</entry><entry></entry><entry></entry>
125 <entry></entry><entry>C</entry><entry></entry>
126 </row>
127 <row>
128 <entry>3</entry>
129 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
130 <entry>Y</entry><entry></entry><entry>Y</entry>
131 </row>
132 </tbody>
133 </tgroup>
134 </informaltable>
135 </para>
136 </formalpara>
137 </example>
138 </refsect1>
139 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv12.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12.xml
deleted file mode 100644
index 84dd4fd7cb80..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-nv12.xml
+++ /dev/null
@@ -1,143 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV12 ('NV12'), V4L2_PIX_FMT_NV21 ('NV21')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV12"><constant>V4L2_PIX_FMT_NV12</constant></refname>
8 <refname id="V4L2-PIX-FMT-NV21"><constant>V4L2_PIX_FMT_NV21</constant></refname>
9 <refpurpose>Formats with &frac12; horizontal and vertical
10chroma resolution, also known as YUV 4:2:0. 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:2:0 format.
18The three components are separated into two sub-images or planes. The
19Y plane is first. The Y plane has one byte per pixel. For
20<constant>V4L2_PIX_FMT_NV12</constant>, a combined CbCr plane
21immediately follows the Y plane in memory. The CbCr plane is the same
22width, in bytes, as the Y plane (and of the image), but is half as
23tall in pixels. Each CbCr pair belongs to four pixels. For example,
24Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
25Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
26Y'<subscript>10</subscript>, Y'<subscript>11</subscript>.
27<constant>V4L2_PIX_FMT_NV21</constant> is the same except the Cb and
28Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para>
29
30 <para>If the Y plane has pad bytes after each row, then the
31CbCr plane has as many pad bytes after its rows.</para>
32
33 <example>
34 <title><constant>V4L2_PIX_FMT_NV12</constant> 4 &times; 4
35pixel image</title>
36
37 <formalpara>
38 <title>Byte Order.</title>
39 <para>Each cell is one byte.
40 <informaltable frame="none">
41 <tgroup cols="5" align="center">
42 <colspec align="left" colwidth="2*" />
43 <tbody valign="top">
44 <row>
45 <entry>start&nbsp;+&nbsp;0:</entry>
46 <entry>Y'<subscript>00</subscript></entry>
47 <entry>Y'<subscript>01</subscript></entry>
48 <entry>Y'<subscript>02</subscript></entry>
49 <entry>Y'<subscript>03</subscript></entry>
50 </row>
51 <row>
52 <entry>start&nbsp;+&nbsp;4:</entry>
53 <entry>Y'<subscript>10</subscript></entry>
54 <entry>Y'<subscript>11</subscript></entry>
55 <entry>Y'<subscript>12</subscript></entry>
56 <entry>Y'<subscript>13</subscript></entry>
57 </row>
58 <row>
59 <entry>start&nbsp;+&nbsp;8:</entry>
60 <entry>Y'<subscript>20</subscript></entry>
61 <entry>Y'<subscript>21</subscript></entry>
62 <entry>Y'<subscript>22</subscript></entry>
63 <entry>Y'<subscript>23</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;12:</entry>
67 <entry>Y'<subscript>30</subscript></entry>
68 <entry>Y'<subscript>31</subscript></entry>
69 <entry>Y'<subscript>32</subscript></entry>
70 <entry>Y'<subscript>33</subscript></entry>
71 </row>
72 <row>
73 <entry>start&nbsp;+&nbsp;16:</entry>
74 <entry>Cb<subscript>00</subscript></entry>
75 <entry>Cr<subscript>00</subscript></entry>
76 <entry>Cb<subscript>01</subscript></entry>
77 <entry>Cr<subscript>01</subscript></entry>
78 </row>
79 <row>
80 <entry>start&nbsp;+&nbsp;20:</entry>
81 <entry>Cb<subscript>10</subscript></entry>
82 <entry>Cr<subscript>10</subscript></entry>
83 <entry>Cb<subscript>11</subscript></entry>
84 <entry>Cr<subscript>11</subscript></entry>
85 </row>
86 </tbody>
87 </tgroup>
88 </informaltable>
89 </para>
90 </formalpara>
91
92 <formalpara>
93 <title>Color Sample Location.</title>
94 <para>
95 <informaltable frame="none">
96 <tgroup cols="7" align="center">
97 <tbody valign="top">
98 <row>
99 <entry></entry>
100 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
101 <entry>2</entry><entry></entry><entry>3</entry>
102 </row>
103 <row>
104 <entry>0</entry>
105 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
106 <entry>Y</entry><entry></entry><entry>Y</entry>
107 </row>
108 <row>
109 <entry></entry>
110 <entry></entry><entry>C</entry><entry></entry><entry></entry>
111 <entry></entry><entry>C</entry><entry></entry>
112 </row>
113 <row>
114 <entry>1</entry>
115 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
116 <entry>Y</entry><entry></entry><entry>Y</entry>
117 </row>
118 <row>
119 <entry></entry>
120 </row>
121 <row>
122 <entry>2</entry>
123 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
124 <entry>Y</entry><entry></entry><entry>Y</entry>
125 </row>
126 <row>
127 <entry></entry>
128 <entry></entry><entry>C</entry><entry></entry><entry></entry>
129 <entry></entry><entry>C</entry><entry></entry>
130 </row>
131 <row>
132 <entry>3</entry>
133 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
134 <entry>Y</entry><entry></entry><entry>Y</entry>
135 </row>
136 </tbody>
137 </tgroup>
138 </informaltable>
139 </para>
140 </formalpara>
141 </example>
142 </refsect1>
143 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml
deleted file mode 100644
index f3a3d459fcdf..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-nv12m.xml
+++ /dev/null
@@ -1,153 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV12M ('NM12'), V4L2_PIX_FMT_NV21M ('NM21'), V4L2_PIX_FMT_NV12MT_16X16</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV12M"><constant>V4L2_PIX_FMT_NV12M</constant></refname>
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
11 non contiguous in memory. </refpurpose>
12 </refnamediv>
13 <refsect1>
14 <title>Description</title>
15
16 <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format.
17The three components are separated into two sub-images or planes.
18<constant>V4L2_PIX_FMT_NV12M</constant> differs from <constant>V4L2_PIX_FMT_NV12
19</constant> in that the two planes are non-contiguous in memory, i.e. the chroma
20plane do not necessarily immediately follows the luma plane.
21The luminance data occupies the first plane. The Y plane has one byte per pixel.
22In the second plane there is a chrominance data with alternating chroma samples.
23The CbCr plane is the same width, in bytes, as the Y plane (and of the image),
24but is half as tall in pixels. Each CbCr pair belongs to four pixels. For example,
25Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
26Y'<subscript>00</subscript>, Y'<subscript>01</subscript>,
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>
33
34 <para><constant>V4L2_PIX_FMT_NV12M</constant> is intended to be
35used only in drivers and applications that support the multi-planar API,
36described in <xref linkend="planar-apis"/>. </para>
37
38 <para>If the Y plane has pad bytes after each row, then the
39CbCr plane has as many pad bytes after its rows.</para>
40
41 <example>
42 <title><constant>V4L2_PIX_FMT_NV12M</constant> 4 &times; 4 pixel image</title>
43
44 <formalpara>
45 <title>Byte Order.</title>
46 <para>Each cell is one byte.
47 <informaltable frame="none">
48 <tgroup cols="5" align="center">
49 <colspec align="left" colwidth="2*" />
50 <tbody valign="top">
51 <row>
52 <entry>start0&nbsp;+&nbsp;0:</entry>
53 <entry>Y'<subscript>00</subscript></entry>
54 <entry>Y'<subscript>01</subscript></entry>
55 <entry>Y'<subscript>02</subscript></entry>
56 <entry>Y'<subscript>03</subscript></entry>
57 </row>
58 <row>
59 <entry>start0&nbsp;+&nbsp;4:</entry>
60 <entry>Y'<subscript>10</subscript></entry>
61 <entry>Y'<subscript>11</subscript></entry>
62 <entry>Y'<subscript>12</subscript></entry>
63 <entry>Y'<subscript>13</subscript></entry>
64 </row>
65 <row>
66 <entry>start0&nbsp;+&nbsp;8:</entry>
67 <entry>Y'<subscript>20</subscript></entry>
68 <entry>Y'<subscript>21</subscript></entry>
69 <entry>Y'<subscript>22</subscript></entry>
70 <entry>Y'<subscript>23</subscript></entry>
71 </row>
72 <row>
73 <entry>start0&nbsp;+&nbsp;12:</entry>
74 <entry>Y'<subscript>30</subscript></entry>
75 <entry>Y'<subscript>31</subscript></entry>
76 <entry>Y'<subscript>32</subscript></entry>
77 <entry>Y'<subscript>33</subscript></entry>
78 </row>
79 <row>
80 <entry></entry>
81 </row>
82 <row>
83 <entry>start1&nbsp;+&nbsp;0:</entry>
84 <entry>Cb<subscript>00</subscript></entry>
85 <entry>Cr<subscript>00</subscript></entry>
86 <entry>Cb<subscript>01</subscript></entry>
87 <entry>Cr<subscript>01</subscript></entry>
88 </row>
89 <row>
90 <entry>start1&nbsp;+&nbsp;4:</entry>
91 <entry>Cb<subscript>10</subscript></entry>
92 <entry>Cr<subscript>10</subscript></entry>
93 <entry>Cb<subscript>11</subscript></entry>
94 <entry>Cr<subscript>11</subscript></entry>
95 </row>
96 </tbody>
97 </tgroup>
98 </informaltable>
99 </para>
100 </formalpara>
101
102 <formalpara>
103 <title>Color Sample Location.</title>
104 <para>
105 <informaltable frame="none">
106 <tgroup cols="7" align="center">
107 <tbody valign="top">
108 <row>
109 <entry></entry>
110 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
111 <entry>2</entry><entry></entry><entry>3</entry>
112 </row>
113 <row>
114 <entry>0</entry>
115 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
116 <entry>Y</entry><entry></entry><entry>Y</entry>
117 </row>
118 <row>
119 <entry></entry>
120 <entry></entry><entry>C</entry><entry></entry><entry></entry>
121 <entry></entry><entry>C</entry><entry></entry>
122 </row>
123 <row>
124 <entry>1</entry>
125 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
126 <entry>Y</entry><entry></entry><entry>Y</entry>
127 </row>
128 <row>
129 <entry></entry>
130 </row>
131 <row>
132 <entry>2</entry>
133 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
134 <entry>Y</entry><entry></entry><entry>Y</entry>
135 </row>
136 <row>
137 <entry></entry>
138 <entry></entry><entry>C</entry><entry></entry><entry></entry>
139 <entry></entry><entry>C</entry><entry></entry>
140 </row>
141 <row>
142 <entry>3</entry>
143 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
144 <entry>Y</entry><entry></entry><entry>Y</entry>
145 </row>
146 </tbody>
147 </tgroup>
148 </informaltable>
149 </para>
150 </formalpara>
151 </example>
152 </refsect1>
153 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml
deleted file mode 100644
index 8a70a1707b7a..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-nv12mt.xml
+++ /dev/null
@@ -1,66 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV12MT ('TM12')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV12MT"><constant>V4L2_PIX_FMT_NV12MT
8</constant></refname>
9 <refpurpose>Formats with &frac12; horizontal and vertical
10chroma resolution. This format has two planes - one for luminance and one for
11chrominance. Chroma samples are interleaved. The difference to
12<constant>V4L2_PIX_FMT_NV12</constant> is the memory layout. Pixels are
13grouped in macroblocks of 64x32 size. The order of macroblocks in memory is
14also not standard.
15 </refpurpose>
16 </refnamediv>
17 <refsect1>
18 <title>Description</title>
19
20 <para>This is the two-plane versions of the YUV 4:2:0 format where data
21is grouped into 64x32 macroblocks. The three components are separated into two
22sub-images or planes. The Y plane has one byte per pixel and pixels are grouped
23into 64x32 macroblocks. The CbCr plane has the same width, in bytes, as the Y
24plane (and the image), but is half as tall in pixels. The chroma plane is also
25grouped into 64x32 macroblocks.</para>
26 <para>Width of the buffer has to be aligned to the multiple of 128, and
27height alignment is 32. Every four adjacent buffers - two horizontally and two
28vertically are grouped together and are located in memory in Z or flipped Z
29order. </para>
30 <para>Layout of macroblocks in memory is presented in the following
31figure.</para>
32 <para><figure id="nv12mt">
33 <title><constant>V4L2_PIX_FMT_NV12MT</constant> macroblock Z shape
34memory layout</title>
35 <mediaobject>
36 <imageobject>
37 <imagedata fileref="nv12mt.gif" format="GIF" />
38 </imageobject>
39 </mediaobject>
40 </figure>
41 The requirement that width is multiple of 128 is implemented because,
42the Z shape cannot be cut in half horizontally. In case the vertical resolution
43of macroblocks is odd then the last row of macroblocks is arranged in a linear
44order. </para>
45 <para>In case of chroma the layout is identical. Cb and Cr samples are
46interleaved. Height of the buffer is aligned to 32.
47 </para>
48 <example>
49 <title>Memory layout of macroblocks in <constant>V4L2_PIX_FMT_NV12
50</constant> format pixel image - extreme case</title>
51 <para>
52 <figure id="nv12mt_ex">
53 <title>Example <constant>V4L2_PIX_FMT_NV12MT</constant> memory
54layout of macroblocks</title>
55 <mediaobject>
56 <imageobject>
57 <imagedata fileref="nv12mt_example.gif" format="GIF" />
58 </imageobject>
59 </mediaobject>
60 </figure>
61 Memory layout of macroblocks of <constant>V4L2_PIX_FMT_NV12MT
62</constant> format in most extreme case.
63 </para>
64 </example>
65 </refsect1>
66 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16.xml
deleted file mode 100644
index 8ae1f8a810d0..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-nv16.xml
+++ /dev/null
@@ -1,166 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV16 ('NV16'), V4L2_PIX_FMT_NV61 ('NV61')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV16"><constant>V4L2_PIX_FMT_NV16</constant></refname>
8 <refname id="V4L2-PIX-FMT-NV61"><constant>V4L2_PIX_FMT_NV61</constant></refname>
9 <refpurpose>Formats with &frac12; horizontal
10chroma resolution, also known as YUV 4:2:2. 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:2:2 format.
18The three components are separated into two sub-images or planes. The
19Y plane is first. The Y plane has one byte per pixel. For
20<constant>V4L2_PIX_FMT_NV16</constant>, a combined CbCr plane
21immediately follows the Y plane in memory. The CbCr plane is the same
22width and height, in bytes, as the Y plane (and of the image).
23Each CbCr pair belongs to two pixels. For example,
24Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
25Y'<subscript>00</subscript>, Y'<subscript>01</subscript>.
26<constant>V4L2_PIX_FMT_NV61</constant> is the same except the Cb and
27Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para>
28
29 <para>If the Y plane has pad bytes after each row, then the
30CbCr plane has as many pad bytes after its rows.</para>
31
32 <example>
33 <title><constant>V4L2_PIX_FMT_NV16</constant> 4 &times; 4
34pixel image</title>
35
36 <formalpara>
37 <title>Byte Order.</title>
38 <para>Each cell is one byte.
39 <informaltable frame="none">
40 <tgroup cols="5" align="center">
41 <colspec align="left" colwidth="2*" />
42 <tbody valign="top">
43 <row>
44 <entry>start&nbsp;+&nbsp;0:</entry>
45 <entry>Y'<subscript>00</subscript></entry>
46 <entry>Y'<subscript>01</subscript></entry>
47 <entry>Y'<subscript>02</subscript></entry>
48 <entry>Y'<subscript>03</subscript></entry>
49 </row>
50 <row>
51 <entry>start&nbsp;+&nbsp;4:</entry>
52 <entry>Y'<subscript>10</subscript></entry>
53 <entry>Y'<subscript>11</subscript></entry>
54 <entry>Y'<subscript>12</subscript></entry>
55 <entry>Y'<subscript>13</subscript></entry>
56 </row>
57 <row>
58 <entry>start&nbsp;+&nbsp;8:</entry>
59 <entry>Y'<subscript>20</subscript></entry>
60 <entry>Y'<subscript>21</subscript></entry>
61 <entry>Y'<subscript>22</subscript></entry>
62 <entry>Y'<subscript>23</subscript></entry>
63 </row>
64 <row>
65 <entry>start&nbsp;+&nbsp;12:</entry>
66 <entry>Y'<subscript>30</subscript></entry>
67 <entry>Y'<subscript>31</subscript></entry>
68 <entry>Y'<subscript>32</subscript></entry>
69 <entry>Y'<subscript>33</subscript></entry>
70 </row>
71 <row>
72 <entry>start&nbsp;+&nbsp;16:</entry>
73 <entry>Cb<subscript>00</subscript></entry>
74 <entry>Cr<subscript>00</subscript></entry>
75 <entry>Cb<subscript>01</subscript></entry>
76 <entry>Cr<subscript>01</subscript></entry>
77 </row>
78 <row>
79 <entry>start&nbsp;+&nbsp;20:</entry>
80 <entry>Cb<subscript>10</subscript></entry>
81 <entry>Cr<subscript>10</subscript></entry>
82 <entry>Cb<subscript>11</subscript></entry>
83 <entry>Cr<subscript>11</subscript></entry>
84 </row>
85 <row>
86 <entry>start&nbsp;+&nbsp;24:</entry>
87 <entry>Cb<subscript>20</subscript></entry>
88 <entry>Cr<subscript>20</subscript></entry>
89 <entry>Cb<subscript>21</subscript></entry>
90 <entry>Cr<subscript>21</subscript></entry>
91 </row>
92 <row>
93 <entry>start&nbsp;+&nbsp;28:</entry>
94 <entry>Cb<subscript>30</subscript></entry>
95 <entry>Cr<subscript>30</subscript></entry>
96 <entry>Cb<subscript>31</subscript></entry>
97 <entry>Cr<subscript>31</subscript></entry>
98 </row>
99 </tbody>
100 </tgroup>
101 </informaltable>
102 </para>
103 </formalpara>
104
105 <formalpara>
106 <title>Color Sample Location.</title>
107 <para>
108 <informaltable frame="none">
109 <tgroup cols="7" align="center">
110 <tbody valign="top">
111 <row>
112 <entry></entry>
113 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
114 <entry>2</entry><entry></entry><entry>3</entry>
115 </row>
116 <row>
117 <entry>0</entry>
118 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
119 <entry>Y</entry><entry></entry><entry>Y</entry>
120 </row>
121 <row>
122 <entry></entry>
123 <entry></entry><entry>C</entry><entry></entry><entry></entry>
124 <entry></entry><entry>C</entry><entry></entry>
125 </row>
126 <row>
127 <entry>1</entry>
128 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
129 <entry>Y</entry><entry></entry><entry>Y</entry>
130 </row>
131 <row>
132 <entry></entry>
133 <entry></entry><entry>C</entry><entry></entry><entry></entry>
134 <entry></entry><entry>C</entry><entry></entry>
135 </row>
136 <row>
137 <entry></entry>
138 </row>
139 <row>
140 <entry>2</entry>
141 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
142 <entry>Y</entry><entry></entry><entry>Y</entry>
143 </row>
144 <row>
145 <entry></entry>
146 <entry></entry><entry>C</entry><entry></entry><entry></entry>
147 <entry></entry><entry>C</entry><entry></entry>
148 </row>
149 <row>
150 <entry>3</entry>
151 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
152 <entry>Y</entry><entry></entry><entry>Y</entry>
153 </row>
154 <row>
155 <entry></entry>
156 <entry></entry><entry>C</entry><entry></entry><entry></entry>
157 <entry></entry><entry>C</entry><entry></entry>
158 </row>
159 </tbody>
160 </tgroup>
161 </informaltable>
162 </para>
163 </formalpara>
164 </example>
165 </refsect1>
166 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
deleted file mode 100644
index fb2b5e35d665..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml
+++ /dev/null
@@ -1,170 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname>
8 <refname id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname>
9 <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and <constant>V4L2_PIX_FMT_NV61</constant> with planes
10 non contiguous in memory. </refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>This is a multi-planar, two-plane version of the YUV 4:2:2 format.
16The three components are separated into two sub-images or planes.
17<constant>V4L2_PIX_FMT_NV16M</constant> differs from <constant>V4L2_PIX_FMT_NV16
18</constant> in that the two planes are non-contiguous in memory, i.e. the chroma
19plane does not necessarily immediately follow the luma plane.
20The luminance data occupies the first plane. The Y plane has one byte per pixel.
21In the second plane there is chrominance data with alternating chroma samples.
22The CbCr plane is the same width and height, in bytes, as the Y plane.
23Each CbCr pair belongs to two pixels. For example,
24Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to
25Y'<subscript>00</subscript>, Y'<subscript>01</subscript>.
26<constant>V4L2_PIX_FMT_NV61M</constant> is the same as <constant>V4L2_PIX_FMT_NV16M</constant>
27except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para>
28
29 <para><constant>V4L2_PIX_FMT_NV16M</constant> and
30<constant>V4L2_PIX_FMT_NV61M</constant> are intended to be used only in drivers
31and applications that support the multi-planar API, described in
32<xref linkend="planar-apis"/>. </para>
33
34 <example>
35 <title><constant>V4L2_PIX_FMT_NV16M</constant> 4 &times; 4 pixel image</title>
36
37 <formalpara>
38 <title>Byte Order.</title>
39 <para>Each cell is one byte.
40 <informaltable frame="none">
41 <tgroup cols="5" align="center">
42 <colspec align="left" colwidth="2*" />
43 <tbody valign="top">
44 <row>
45 <entry>start0&nbsp;+&nbsp;0:</entry>
46 <entry>Y'<subscript>00</subscript></entry>
47 <entry>Y'<subscript>01</subscript></entry>
48 <entry>Y'<subscript>02</subscript></entry>
49 <entry>Y'<subscript>03</subscript></entry>
50 </row>
51 <row>
52 <entry>start0&nbsp;+&nbsp;4:</entry>
53 <entry>Y'<subscript>10</subscript></entry>
54 <entry>Y'<subscript>11</subscript></entry>
55 <entry>Y'<subscript>12</subscript></entry>
56 <entry>Y'<subscript>13</subscript></entry>
57 </row>
58 <row>
59 <entry>start0&nbsp;+&nbsp;8:</entry>
60 <entry>Y'<subscript>20</subscript></entry>
61 <entry>Y'<subscript>21</subscript></entry>
62 <entry>Y'<subscript>22</subscript></entry>
63 <entry>Y'<subscript>23</subscript></entry>
64 </row>
65 <row>
66 <entry>start0&nbsp;+&nbsp;12:</entry>
67 <entry>Y'<subscript>30</subscript></entry>
68 <entry>Y'<subscript>31</subscript></entry>
69 <entry>Y'<subscript>32</subscript></entry>
70 <entry>Y'<subscript>33</subscript></entry>
71 </row>
72 <row>
73 <entry></entry>
74 </row>
75 <row>
76 <entry>start1&nbsp;+&nbsp;0:</entry>
77 <entry>Cb<subscript>00</subscript></entry>
78 <entry>Cr<subscript>00</subscript></entry>
79 <entry>Cb<subscript>02</subscript></entry>
80 <entry>Cr<subscript>02</subscript></entry>
81 </row>
82 <row>
83 <entry>start1&nbsp;+&nbsp;4:</entry>
84 <entry>Cb<subscript>10</subscript></entry>
85 <entry>Cr<subscript>10</subscript></entry>
86 <entry>Cb<subscript>12</subscript></entry>
87 <entry>Cr<subscript>12</subscript></entry>
88 </row>
89 <row>
90 <entry>start1&nbsp;+&nbsp;8:</entry>
91 <entry>Cb<subscript>20</subscript></entry>
92 <entry>Cr<subscript>20</subscript></entry>
93 <entry>Cb<subscript>22</subscript></entry>
94 <entry>Cr<subscript>22</subscript></entry>
95 </row>
96 <row>
97 <entry>start1&nbsp;+&nbsp;12:</entry>
98 <entry>Cb<subscript>30</subscript></entry>
99 <entry>Cr<subscript>30</subscript></entry>
100 <entry>Cb<subscript>32</subscript></entry>
101 <entry>Cr<subscript>32</subscript></entry>
102 </row>
103 </tbody>
104 </tgroup>
105 </informaltable>
106 </para>
107 </formalpara>
108
109 <formalpara>
110 <title>Color Sample Location.</title>
111 <para>
112 <informaltable frame="none">
113 <tgroup cols="7" align="center">
114 <tbody valign="top">
115 <row>
116 <entry></entry>
117 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
118 <entry>2</entry><entry></entry><entry>3</entry>
119 </row>
120 <row>
121 <entry>0</entry>
122 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
123 <entry>Y</entry><entry></entry><entry>Y</entry>
124 </row>
125 <row>
126 <entry></entry>
127 <entry></entry><entry>C</entry><entry></entry><entry></entry>
128 <entry></entry><entry>C</entry><entry></entry>
129 </row>
130 <row>
131 <entry>1</entry>
132 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
133 <entry>Y</entry><entry></entry><entry>Y</entry>
134 </row>
135 <row>
136 <entry></entry>
137 <entry></entry><entry>C</entry><entry></entry><entry></entry>
138 <entry></entry><entry>C</entry><entry></entry>
139 </row>
140 <row>
141 <entry></entry>
142 </row>
143 <row>
144 <entry>2</entry>
145 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
146 <entry>Y</entry><entry></entry><entry>Y</entry>
147 </row>
148 <row>
149 <entry></entry>
150 <entry></entry><entry>C</entry><entry></entry><entry></entry>
151 <entry></entry><entry>C</entry><entry></entry>
152 </row>
153 <row>
154 <entry>3</entry>
155 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
156 <entry>Y</entry><entry></entry><entry>Y</entry>
157 </row>
158 <row>
159 <entry></entry>
160 <entry></entry><entry>C</entry><entry></entry><entry></entry>
161 <entry></entry><entry>C</entry><entry></entry>
162 </row>
163 </tbody>
164 </tgroup>
165 </informaltable>
166 </para>
167 </formalpara>
168 </example>
169 </refsect1>
170 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv24.xml b/Documentation/DocBook/media/v4l/pixfmt-nv24.xml
deleted file mode 100644
index fb255f2ca9dd..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-nv24.xml
+++ /dev/null
@@ -1,121 +0,0 @@
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/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
deleted file mode 100644
index b60fb935b91b..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
+++ /dev/null
@@ -1,937 +0,0 @@
1<refentry id="packed-rgb">
2 <refmeta>
3 <refentrytitle>Packed RGB formats</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>Packed RGB formats</refname>
8 <refpurpose>Packed RGB formats</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>These formats are designed to match the pixel formats of
14typical PC graphics frame buffers. They occupy 8, 16, 24 or 32 bits
15per pixel. These are all packed-pixel formats, meaning all the data
16for a pixel lie next to each other in memory.</para>
17
18 <table pgwide="1" frame="none" id="rgb-formats">
19 <title>Packed RGB Image Formats</title>
20 <tgroup cols="37" align="center">
21 <colspec colname="id" align="left" />
22 <colspec colname="fourcc" />
23 <colspec colname="bit" />
24
25 <colspec colnum="4" colname="b07" align="center" />
26 <colspec colnum="5" colname="b06" align="center" />
27 <colspec colnum="6" colname="b05" align="center" />
28 <colspec colnum="7" colname="b04" align="center" />
29 <colspec colnum="8" colname="b03" align="center" />
30 <colspec colnum="9" colname="b02" align="center" />
31 <colspec colnum="10" colname="b01" align="center" />
32 <colspec colnum="11" colname="b00" align="center" />
33
34 <colspec colnum="13" colname="b17" align="center" />
35 <colspec colnum="14" colname="b16" align="center" />
36 <colspec colnum="15" colname="b15" align="center" />
37 <colspec colnum="16" colname="b14" align="center" />
38 <colspec colnum="17" colname="b13" align="center" />
39 <colspec colnum="18" colname="b12" align="center" />
40 <colspec colnum="19" colname="b11" align="center" />
41 <colspec colnum="20" colname="b10" align="center" />
42
43 <colspec colnum="22" colname="b27" align="center" />
44 <colspec colnum="23" colname="b26" align="center" />
45 <colspec colnum="24" colname="b25" align="center" />
46 <colspec colnum="25" colname="b24" align="center" />
47 <colspec colnum="26" colname="b23" align="center" />
48 <colspec colnum="27" colname="b22" align="center" />
49 <colspec colnum="28" colname="b21" align="center" />
50 <colspec colnum="29" colname="b20" align="center" />
51
52 <colspec colnum="31" colname="b37" align="center" />
53 <colspec colnum="32" colname="b36" align="center" />
54 <colspec colnum="33" colname="b35" align="center" />
55 <colspec colnum="34" colname="b34" align="center" />
56 <colspec colnum="35" colname="b33" align="center" />
57 <colspec colnum="36" colname="b32" align="center" />
58 <colspec colnum="37" colname="b31" align="center" />
59 <colspec colnum="38" colname="b30" align="center" />
60
61 <spanspec namest="b07" nameend="b00" spanname="b0" />
62 <spanspec namest="b17" nameend="b10" spanname="b1" />
63 <spanspec namest="b27" nameend="b20" spanname="b2" />
64 <spanspec namest="b37" nameend="b30" spanname="b3" />
65 <thead>
66 <row>
67 <entry>Identifier</entry>
68 <entry>Code</entry>
69 <entry>&nbsp;</entry>
70 <entry spanname="b0">Byte&nbsp;0 in memory</entry>
71 <entry spanname="b1">Byte&nbsp;1</entry>
72 <entry spanname="b2">Byte&nbsp;2</entry>
73 <entry spanname="b3">Byte&nbsp;3</entry>
74 </row>
75 <row>
76 <entry>&nbsp;</entry>
77 <entry>&nbsp;</entry>
78 <entry>Bit</entry>
79 <entry>7</entry>
80 <entry>6</entry>
81 <entry>5</entry>
82 <entry>4</entry>
83 <entry>3</entry>
84 <entry>2</entry>
85 <entry>1</entry>
86 <entry>0</entry>
87 <entry>&nbsp;</entry>
88 <entry>7</entry>
89 <entry>6</entry>
90 <entry>5</entry>
91 <entry>4</entry>
92 <entry>3</entry>
93 <entry>2</entry>
94 <entry>1</entry>
95 <entry>0</entry>
96 <entry>&nbsp;</entry>
97 <entry>7</entry>
98 <entry>6</entry>
99 <entry>5</entry>
100 <entry>4</entry>
101 <entry>3</entry>
102 <entry>2</entry>
103 <entry>1</entry>
104 <entry>0</entry>
105 <entry>&nbsp;</entry>
106 <entry>7</entry>
107 <entry>6</entry>
108 <entry>5</entry>
109 <entry>4</entry>
110 <entry>3</entry>
111 <entry>2</entry>
112 <entry>1</entry>
113 <entry>0</entry>
114 </row>
115 </thead>
116 <tbody valign="top">
117 <row id="V4L2-PIX-FMT-RGB332">
118 <entry><constant>V4L2_PIX_FMT_RGB332</constant></entry>
119 <entry>'RGB1'</entry>
120 <entry></entry>
121 <entry>r<subscript>2</subscript></entry>
122 <entry>r<subscript>1</subscript></entry>
123 <entry>r<subscript>0</subscript></entry>
124 <entry>g<subscript>2</subscript></entry>
125 <entry>g<subscript>1</subscript></entry>
126 <entry>g<subscript>0</subscript></entry>
127 <entry>b<subscript>1</subscript></entry>
128 <entry>b<subscript>0</subscript></entry>
129 </row>
130 <row id="V4L2-PIX-FMT-ARGB444">
131 <entry><constant>V4L2_PIX_FMT_ARGB444</constant></entry>
132 <entry>'AR12'</entry>
133 <entry></entry>
134 <entry>g<subscript>3</subscript></entry>
135 <entry>g<subscript>2</subscript></entry>
136 <entry>g<subscript>1</subscript></entry>
137 <entry>g<subscript>0</subscript></entry>
138 <entry>b<subscript>3</subscript></entry>
139 <entry>b<subscript>2</subscript></entry>
140 <entry>b<subscript>1</subscript></entry>
141 <entry>b<subscript>0</subscript></entry>
142 <entry></entry>
143 <entry>a<subscript>3</subscript></entry>
144 <entry>a<subscript>2</subscript></entry>
145 <entry>a<subscript>1</subscript></entry>
146 <entry>a<subscript>0</subscript></entry>
147 <entry>r<subscript>3</subscript></entry>
148 <entry>r<subscript>2</subscript></entry>
149 <entry>r<subscript>1</subscript></entry>
150 <entry>r<subscript>0</subscript></entry>
151 </row>
152 <row id="V4L2-PIX-FMT-XRGB444">
153 <entry><constant>V4L2_PIX_FMT_XRGB444</constant></entry>
154 <entry>'XR12'</entry>
155 <entry></entry>
156 <entry>g<subscript>3</subscript></entry>
157 <entry>g<subscript>2</subscript></entry>
158 <entry>g<subscript>1</subscript></entry>
159 <entry>g<subscript>0</subscript></entry>
160 <entry>b<subscript>3</subscript></entry>
161 <entry>b<subscript>2</subscript></entry>
162 <entry>b<subscript>1</subscript></entry>
163 <entry>b<subscript>0</subscript></entry>
164 <entry></entry>
165 <entry>-</entry>
166 <entry>-</entry>
167 <entry>-</entry>
168 <entry>-</entry>
169 <entry>r<subscript>3</subscript></entry>
170 <entry>r<subscript>2</subscript></entry>
171 <entry>r<subscript>1</subscript></entry>
172 <entry>r<subscript>0</subscript></entry>
173 </row>
174 <row id="V4L2-PIX-FMT-ARGB555">
175 <entry><constant>V4L2_PIX_FMT_ARGB555</constant></entry>
176 <entry>'AR15'</entry>
177 <entry></entry>
178 <entry>g<subscript>2</subscript></entry>
179 <entry>g<subscript>1</subscript></entry>
180 <entry>g<subscript>0</subscript></entry>
181 <entry>b<subscript>4</subscript></entry>
182 <entry>b<subscript>3</subscript></entry>
183 <entry>b<subscript>2</subscript></entry>
184 <entry>b<subscript>1</subscript></entry>
185 <entry>b<subscript>0</subscript></entry>
186 <entry></entry>
187 <entry>a</entry>
188 <entry>r<subscript>4</subscript></entry>
189 <entry>r<subscript>3</subscript></entry>
190 <entry>r<subscript>2</subscript></entry>
191 <entry>r<subscript>1</subscript></entry>
192 <entry>r<subscript>0</subscript></entry>
193 <entry>g<subscript>4</subscript></entry>
194 <entry>g<subscript>3</subscript></entry>
195 </row>
196 <row id="V4L2-PIX-FMT-XRGB555">
197 <entry><constant>V4L2_PIX_FMT_XRGB555</constant></entry>
198 <entry>'XR15'</entry>
199 <entry></entry>
200 <entry>g<subscript>2</subscript></entry>
201 <entry>g<subscript>1</subscript></entry>
202 <entry>g<subscript>0</subscript></entry>
203 <entry>b<subscript>4</subscript></entry>
204 <entry>b<subscript>3</subscript></entry>
205 <entry>b<subscript>2</subscript></entry>
206 <entry>b<subscript>1</subscript></entry>
207 <entry>b<subscript>0</subscript></entry>
208 <entry></entry>
209 <entry>-</entry>
210 <entry>r<subscript>4</subscript></entry>
211 <entry>r<subscript>3</subscript></entry>
212 <entry>r<subscript>2</subscript></entry>
213 <entry>r<subscript>1</subscript></entry>
214 <entry>r<subscript>0</subscript></entry>
215 <entry>g<subscript>4</subscript></entry>
216 <entry>g<subscript>3</subscript></entry>
217 </row>
218 <row id="V4L2-PIX-FMT-RGB565">
219 <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry>
220 <entry>'RGBP'</entry>
221 <entry></entry>
222 <entry>g<subscript>2</subscript></entry>
223 <entry>g<subscript>1</subscript></entry>
224 <entry>g<subscript>0</subscript></entry>
225 <entry>b<subscript>4</subscript></entry>
226 <entry>b<subscript>3</subscript></entry>
227 <entry>b<subscript>2</subscript></entry>
228 <entry>b<subscript>1</subscript></entry>
229 <entry>b<subscript>0</subscript></entry>
230 <entry></entry>
231 <entry>r<subscript>4</subscript></entry>
232 <entry>r<subscript>3</subscript></entry>
233 <entry>r<subscript>2</subscript></entry>
234 <entry>r<subscript>1</subscript></entry>
235 <entry>r<subscript>0</subscript></entry>
236 <entry>g<subscript>5</subscript></entry>
237 <entry>g<subscript>4</subscript></entry>
238 <entry>g<subscript>3</subscript></entry>
239 </row>
240 <row id="V4L2-PIX-FMT-ARGB555X">
241 <entry><constant>V4L2_PIX_FMT_ARGB555X</constant></entry>
242 <entry>'AR15' | (1 &lt;&lt; 31)</entry>
243 <entry></entry>
244 <entry>a</entry>
245 <entry>r<subscript>4</subscript></entry>
246 <entry>r<subscript>3</subscript></entry>
247 <entry>r<subscript>2</subscript></entry>
248 <entry>r<subscript>1</subscript></entry>
249 <entry>r<subscript>0</subscript></entry>
250 <entry>g<subscript>4</subscript></entry>
251 <entry>g<subscript>3</subscript></entry>
252 <entry></entry>
253 <entry>g<subscript>2</subscript></entry>
254 <entry>g<subscript>1</subscript></entry>
255 <entry>g<subscript>0</subscript></entry>
256 <entry>b<subscript>4</subscript></entry>
257 <entry>b<subscript>3</subscript></entry>
258 <entry>b<subscript>2</subscript></entry>
259 <entry>b<subscript>1</subscript></entry>
260 <entry>b<subscript>0</subscript></entry>
261 </row>
262 <row id="V4L2-PIX-FMT-XRGB555X">
263 <entry><constant>V4L2_PIX_FMT_XRGB555X</constant></entry>
264 <entry>'XR15' | (1 &lt;&lt; 31)</entry>
265 <entry></entry>
266 <entry>-</entry>
267 <entry>r<subscript>4</subscript></entry>
268 <entry>r<subscript>3</subscript></entry>
269 <entry>r<subscript>2</subscript></entry>
270 <entry>r<subscript>1</subscript></entry>
271 <entry>r<subscript>0</subscript></entry>
272 <entry>g<subscript>4</subscript></entry>
273 <entry>g<subscript>3</subscript></entry>
274 <entry></entry>
275 <entry>g<subscript>2</subscript></entry>
276 <entry>g<subscript>1</subscript></entry>
277 <entry>g<subscript>0</subscript></entry>
278 <entry>b<subscript>4</subscript></entry>
279 <entry>b<subscript>3</subscript></entry>
280 <entry>b<subscript>2</subscript></entry>
281 <entry>b<subscript>1</subscript></entry>
282 <entry>b<subscript>0</subscript></entry>
283 </row>
284 <row id="V4L2-PIX-FMT-RGB565X">
285 <entry><constant>V4L2_PIX_FMT_RGB565X</constant></entry>
286 <entry>'RGBR'</entry>
287 <entry></entry>
288 <entry>r<subscript>4</subscript></entry>
289 <entry>r<subscript>3</subscript></entry>
290 <entry>r<subscript>2</subscript></entry>
291 <entry>r<subscript>1</subscript></entry>
292 <entry>r<subscript>0</subscript></entry>
293 <entry>g<subscript>5</subscript></entry>
294 <entry>g<subscript>4</subscript></entry>
295 <entry>g<subscript>3</subscript></entry>
296 <entry></entry>
297 <entry>g<subscript>2</subscript></entry>
298 <entry>g<subscript>1</subscript></entry>
299 <entry>g<subscript>0</subscript></entry>
300 <entry>b<subscript>4</subscript></entry>
301 <entry>b<subscript>3</subscript></entry>
302 <entry>b<subscript>2</subscript></entry>
303 <entry>b<subscript>1</subscript></entry>
304 <entry>b<subscript>0</subscript></entry>
305 </row>
306 <row id="V4L2-PIX-FMT-BGR24">
307 <entry><constant>V4L2_PIX_FMT_BGR24</constant></entry>
308 <entry>'BGR3'</entry>
309 <entry></entry>
310 <entry>b<subscript>7</subscript></entry>
311 <entry>b<subscript>6</subscript></entry>
312 <entry>b<subscript>5</subscript></entry>
313 <entry>b<subscript>4</subscript></entry>
314 <entry>b<subscript>3</subscript></entry>
315 <entry>b<subscript>2</subscript></entry>
316 <entry>b<subscript>1</subscript></entry>
317 <entry>b<subscript>0</subscript></entry>
318 <entry></entry>
319 <entry>g<subscript>7</subscript></entry>
320 <entry>g<subscript>6</subscript></entry>
321 <entry>g<subscript>5</subscript></entry>
322 <entry>g<subscript>4</subscript></entry>
323 <entry>g<subscript>3</subscript></entry>
324 <entry>g<subscript>2</subscript></entry>
325 <entry>g<subscript>1</subscript></entry>
326 <entry>g<subscript>0</subscript></entry>
327 <entry></entry>
328 <entry>r<subscript>7</subscript></entry>
329 <entry>r<subscript>6</subscript></entry>
330 <entry>r<subscript>5</subscript></entry>
331 <entry>r<subscript>4</subscript></entry>
332 <entry>r<subscript>3</subscript></entry>
333 <entry>r<subscript>2</subscript></entry>
334 <entry>r<subscript>1</subscript></entry>
335 <entry>r<subscript>0</subscript></entry>
336 </row>
337 <row id="V4L2-PIX-FMT-RGB24">
338 <entry><constant>V4L2_PIX_FMT_RGB24</constant></entry>
339 <entry>'RGB3'</entry>
340 <entry></entry>
341 <entry>r<subscript>7</subscript></entry>
342 <entry>r<subscript>6</subscript></entry>
343 <entry>r<subscript>5</subscript></entry>
344 <entry>r<subscript>4</subscript></entry>
345 <entry>r<subscript>3</subscript></entry>
346 <entry>r<subscript>2</subscript></entry>
347 <entry>r<subscript>1</subscript></entry>
348 <entry>r<subscript>0</subscript></entry>
349 <entry></entry>
350 <entry>g<subscript>7</subscript></entry>
351 <entry>g<subscript>6</subscript></entry>
352 <entry>g<subscript>5</subscript></entry>
353 <entry>g<subscript>4</subscript></entry>
354 <entry>g<subscript>3</subscript></entry>
355 <entry>g<subscript>2</subscript></entry>
356 <entry>g<subscript>1</subscript></entry>
357 <entry>g<subscript>0</subscript></entry>
358 <entry></entry>
359 <entry>b<subscript>7</subscript></entry>
360 <entry>b<subscript>6</subscript></entry>
361 <entry>b<subscript>5</subscript></entry>
362 <entry>b<subscript>4</subscript></entry>
363 <entry>b<subscript>3</subscript></entry>
364 <entry>b<subscript>2</subscript></entry>
365 <entry>b<subscript>1</subscript></entry>
366 <entry>b<subscript>0</subscript></entry>
367 </row>
368 <row id="V4L2-PIX-FMT-BGR666">
369 <entry><constant>V4L2_PIX_FMT_BGR666</constant></entry>
370 <entry>'BGRH'</entry>
371 <entry></entry>
372 <entry>b<subscript>5</subscript></entry>
373 <entry>b<subscript>4</subscript></entry>
374 <entry>b<subscript>3</subscript></entry>
375 <entry>b<subscript>2</subscript></entry>
376 <entry>b<subscript>1</subscript></entry>
377 <entry>b<subscript>0</subscript></entry>
378 <entry>g<subscript>5</subscript></entry>
379 <entry>g<subscript>4</subscript></entry>
380 <entry></entry>
381 <entry>g<subscript>3</subscript></entry>
382 <entry>g<subscript>2</subscript></entry>
383 <entry>g<subscript>1</subscript></entry>
384 <entry>g<subscript>0</subscript></entry>
385 <entry>r<subscript>5</subscript></entry>
386 <entry>r<subscript>4</subscript></entry>
387 <entry>r<subscript>3</subscript></entry>
388 <entry>r<subscript>2</subscript></entry>
389 <entry></entry>
390 <entry>r<subscript>1</subscript></entry>
391 <entry>r<subscript>0</subscript></entry>
392 <entry>-</entry>
393 <entry>-</entry>
394 <entry>-</entry>
395 <entry>-</entry>
396 <entry>-</entry>
397 <entry>-</entry>
398 <entry></entry>
399 <entry>-</entry>
400 <entry>-</entry>
401 <entry>-</entry>
402 <entry>-</entry>
403 <entry>-</entry>
404 <entry>-</entry>
405 <entry>-</entry>
406 <entry>-</entry>
407 </row>
408 <row id="V4L2-PIX-FMT-ABGR32">
409 <entry><constant>V4L2_PIX_FMT_ABGR32</constant></entry>
410 <entry>'AR24'</entry>
411 <entry></entry>
412 <entry>b<subscript>7</subscript></entry>
413 <entry>b<subscript>6</subscript></entry>
414 <entry>b<subscript>5</subscript></entry>
415 <entry>b<subscript>4</subscript></entry>
416 <entry>b<subscript>3</subscript></entry>
417 <entry>b<subscript>2</subscript></entry>
418 <entry>b<subscript>1</subscript></entry>
419 <entry>b<subscript>0</subscript></entry>
420 <entry></entry>
421 <entry>g<subscript>7</subscript></entry>
422 <entry>g<subscript>6</subscript></entry>
423 <entry>g<subscript>5</subscript></entry>
424 <entry>g<subscript>4</subscript></entry>
425 <entry>g<subscript>3</subscript></entry>
426 <entry>g<subscript>2</subscript></entry>
427 <entry>g<subscript>1</subscript></entry>
428 <entry>g<subscript>0</subscript></entry>
429 <entry></entry>
430 <entry>r<subscript>7</subscript></entry>
431 <entry>r<subscript>6</subscript></entry>
432 <entry>r<subscript>5</subscript></entry>
433 <entry>r<subscript>4</subscript></entry>
434 <entry>r<subscript>3</subscript></entry>
435 <entry>r<subscript>2</subscript></entry>
436 <entry>r<subscript>1</subscript></entry>
437 <entry>r<subscript>0</subscript></entry>
438 <entry></entry>
439 <entry>a<subscript>7</subscript></entry>
440 <entry>a<subscript>6</subscript></entry>
441 <entry>a<subscript>5</subscript></entry>
442 <entry>a<subscript>4</subscript></entry>
443 <entry>a<subscript>3</subscript></entry>
444 <entry>a<subscript>2</subscript></entry>
445 <entry>a<subscript>1</subscript></entry>
446 <entry>a<subscript>0</subscript></entry>
447 </row>
448 <row id="V4L2-PIX-FMT-XBGR32">
449 <entry><constant>V4L2_PIX_FMT_XBGR32</constant></entry>
450 <entry>'XR24'</entry>
451 <entry></entry>
452 <entry>b<subscript>7</subscript></entry>
453 <entry>b<subscript>6</subscript></entry>
454 <entry>b<subscript>5</subscript></entry>
455 <entry>b<subscript>4</subscript></entry>
456 <entry>b<subscript>3</subscript></entry>
457 <entry>b<subscript>2</subscript></entry>
458 <entry>b<subscript>1</subscript></entry>
459 <entry>b<subscript>0</subscript></entry>
460 <entry></entry>
461 <entry>g<subscript>7</subscript></entry>
462 <entry>g<subscript>6</subscript></entry>
463 <entry>g<subscript>5</subscript></entry>
464 <entry>g<subscript>4</subscript></entry>
465 <entry>g<subscript>3</subscript></entry>
466 <entry>g<subscript>2</subscript></entry>
467 <entry>g<subscript>1</subscript></entry>
468 <entry>g<subscript>0</subscript></entry>
469 <entry></entry>
470 <entry>r<subscript>7</subscript></entry>
471 <entry>r<subscript>6</subscript></entry>
472 <entry>r<subscript>5</subscript></entry>
473 <entry>r<subscript>4</subscript></entry>
474 <entry>r<subscript>3</subscript></entry>
475 <entry>r<subscript>2</subscript></entry>
476 <entry>r<subscript>1</subscript></entry>
477 <entry>r<subscript>0</subscript></entry>
478 <entry></entry>
479 <entry>-</entry>
480 <entry>-</entry>
481 <entry>-</entry>
482 <entry>-</entry>
483 <entry>-</entry>
484 <entry>-</entry>
485 <entry>-</entry>
486 <entry>-</entry>
487 </row>
488 <row id="V4L2-PIX-FMT-ARGB32">
489 <entry><constant>V4L2_PIX_FMT_ARGB32</constant></entry>
490 <entry>'BA24'</entry>
491 <entry></entry>
492 <entry>a<subscript>7</subscript></entry>
493 <entry>a<subscript>6</subscript></entry>
494 <entry>a<subscript>5</subscript></entry>
495 <entry>a<subscript>4</subscript></entry>
496 <entry>a<subscript>3</subscript></entry>
497 <entry>a<subscript>2</subscript></entry>
498 <entry>a<subscript>1</subscript></entry>
499 <entry>a<subscript>0</subscript></entry>
500 <entry></entry>
501 <entry>r<subscript>7</subscript></entry>
502 <entry>r<subscript>6</subscript></entry>
503 <entry>r<subscript>5</subscript></entry>
504 <entry>r<subscript>4</subscript></entry>
505 <entry>r<subscript>3</subscript></entry>
506 <entry>r<subscript>2</subscript></entry>
507 <entry>r<subscript>1</subscript></entry>
508 <entry>r<subscript>0</subscript></entry>
509 <entry></entry>
510 <entry>g<subscript>7</subscript></entry>
511 <entry>g<subscript>6</subscript></entry>
512 <entry>g<subscript>5</subscript></entry>
513 <entry>g<subscript>4</subscript></entry>
514 <entry>g<subscript>3</subscript></entry>
515 <entry>g<subscript>2</subscript></entry>
516 <entry>g<subscript>1</subscript></entry>
517 <entry>g<subscript>0</subscript></entry>
518 <entry></entry>
519 <entry>b<subscript>7</subscript></entry>
520 <entry>b<subscript>6</subscript></entry>
521 <entry>b<subscript>5</subscript></entry>
522 <entry>b<subscript>4</subscript></entry>
523 <entry>b<subscript>3</subscript></entry>
524 <entry>b<subscript>2</subscript></entry>
525 <entry>b<subscript>1</subscript></entry>
526 <entry>b<subscript>0</subscript></entry>
527 </row>
528 <row id="V4L2-PIX-FMT-XRGB32">
529 <entry><constant>V4L2_PIX_FMT_XRGB32</constant></entry>
530 <entry>'BX24'</entry>
531 <entry></entry>
532 <entry>-</entry>
533 <entry>-</entry>
534 <entry>-</entry>
535 <entry>-</entry>
536 <entry>-</entry>
537 <entry>-</entry>
538 <entry>-</entry>
539 <entry>-</entry>
540 <entry></entry>
541 <entry>r<subscript>7</subscript></entry>
542 <entry>r<subscript>6</subscript></entry>
543 <entry>r<subscript>5</subscript></entry>
544 <entry>r<subscript>4</subscript></entry>
545 <entry>r<subscript>3</subscript></entry>
546 <entry>r<subscript>2</subscript></entry>
547 <entry>r<subscript>1</subscript></entry>
548 <entry>r<subscript>0</subscript></entry>
549 <entry></entry>
550 <entry>g<subscript>7</subscript></entry>
551 <entry>g<subscript>6</subscript></entry>
552 <entry>g<subscript>5</subscript></entry>
553 <entry>g<subscript>4</subscript></entry>
554 <entry>g<subscript>3</subscript></entry>
555 <entry>g<subscript>2</subscript></entry>
556 <entry>g<subscript>1</subscript></entry>
557 <entry>g<subscript>0</subscript></entry>
558 <entry></entry>
559 <entry>b<subscript>7</subscript></entry>
560 <entry>b<subscript>6</subscript></entry>
561 <entry>b<subscript>5</subscript></entry>
562 <entry>b<subscript>4</subscript></entry>
563 <entry>b<subscript>3</subscript></entry>
564 <entry>b<subscript>2</subscript></entry>
565 <entry>b<subscript>1</subscript></entry>
566 <entry>b<subscript>0</subscript></entry>
567 </row>
568 </tbody>
569 </tgroup>
570 </table>
571
572 <para>Bit 7 is the most significant bit.</para>
573
574 <para>The usage and value of the alpha bits (a) in the ARGB and ABGR formats
575 (collectively referred to as alpha formats) depend on the device type and
576 hardware operation. <link linkend="capture">Capture</link> devices
577 (including capture queues of mem-to-mem devices) fill the alpha component in
578 memory. When the device outputs an alpha channel the alpha component will
579 have a meaningful value. Otherwise, when the device doesn't output an alpha
580 channel but can set the alpha bit to a user-configurable value, the <link
581 linkend="v4l2-alpha-component"><constant>V4L2_CID_ALPHA_COMPONENT</constant>
582 </link> control is used to specify that alpha value, and the alpha component
583 of all pixels will be set to the value specified by that control. Otherwise
584 a corresponding format without an alpha component (XRGB or XBGR) must be
585 used instead of an alpha format.</para>
586
587 <para><link linkend="output">Output</link> devices (including output queues
588 of mem-to-mem devices and <link linkend="osd">video output overlay</link>
589 devices) read the alpha component from memory. When the device processes the
590 alpha channel the alpha component must be filled with meaningful values by
591 applications. Otherwise a corresponding format without an alpha component
592 (XRGB or XBGR) must be used instead of an alpha format.</para>
593
594 <para>The XRGB and XBGR formats contain undefined bits (-). Applications,
595 devices and drivers must ignore those bits, for both <link
596 linkend="capture">capture</link> and <link linkend="output">output</link>
597 devices.</para>
598
599 <example>
600 <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 &times; 4 pixel
601image</title>
602
603 <formalpara>
604 <title>Byte Order.</title>
605 <para>Each cell is one byte.
606 <informaltable frame="none">
607 <tgroup cols="13" align="center">
608 <colspec align="left" colwidth="2*" />
609 <tbody valign="top">
610 <row>
611 <entry>start&nbsp;+&nbsp;0:</entry>
612 <entry>B<subscript>00</subscript></entry>
613 <entry>G<subscript>00</subscript></entry>
614 <entry>R<subscript>00</subscript></entry>
615 <entry>B<subscript>01</subscript></entry>
616 <entry>G<subscript>01</subscript></entry>
617 <entry>R<subscript>01</subscript></entry>
618 <entry>B<subscript>02</subscript></entry>
619 <entry>G<subscript>02</subscript></entry>
620 <entry>R<subscript>02</subscript></entry>
621 <entry>B<subscript>03</subscript></entry>
622 <entry>G<subscript>03</subscript></entry>
623 <entry>R<subscript>03</subscript></entry>
624 </row>
625 <row>
626 <entry>start&nbsp;+&nbsp;12:</entry>
627 <entry>B<subscript>10</subscript></entry>
628 <entry>G<subscript>10</subscript></entry>
629 <entry>R<subscript>10</subscript></entry>
630 <entry>B<subscript>11</subscript></entry>
631 <entry>G<subscript>11</subscript></entry>
632 <entry>R<subscript>11</subscript></entry>
633 <entry>B<subscript>12</subscript></entry>
634 <entry>G<subscript>12</subscript></entry>
635 <entry>R<subscript>12</subscript></entry>
636 <entry>B<subscript>13</subscript></entry>
637 <entry>G<subscript>13</subscript></entry>
638 <entry>R<subscript>13</subscript></entry>
639 </row>
640 <row>
641 <entry>start&nbsp;+&nbsp;24:</entry>
642 <entry>B<subscript>20</subscript></entry>
643 <entry>G<subscript>20</subscript></entry>
644 <entry>R<subscript>20</subscript></entry>
645 <entry>B<subscript>21</subscript></entry>
646 <entry>G<subscript>21</subscript></entry>
647 <entry>R<subscript>21</subscript></entry>
648 <entry>B<subscript>22</subscript></entry>
649 <entry>G<subscript>22</subscript></entry>
650 <entry>R<subscript>22</subscript></entry>
651 <entry>B<subscript>23</subscript></entry>
652 <entry>G<subscript>23</subscript></entry>
653 <entry>R<subscript>23</subscript></entry>
654 </row>
655 <row>
656 <entry>start&nbsp;+&nbsp;36:</entry>
657 <entry>B<subscript>30</subscript></entry>
658 <entry>G<subscript>30</subscript></entry>
659 <entry>R<subscript>30</subscript></entry>
660 <entry>B<subscript>31</subscript></entry>
661 <entry>G<subscript>31</subscript></entry>
662 <entry>R<subscript>31</subscript></entry>
663 <entry>B<subscript>32</subscript></entry>
664 <entry>G<subscript>32</subscript></entry>
665 <entry>R<subscript>32</subscript></entry>
666 <entry>B<subscript>33</subscript></entry>
667 <entry>G<subscript>33</subscript></entry>
668 <entry>R<subscript>33</subscript></entry>
669 </row>
670 </tbody>
671 </tgroup>
672 </informaltable>
673 </para>
674 </formalpara>
675 </example>
676
677 <para>Formats defined in <xref linkend="rgb-formats-deprecated"/> are
678 deprecated and must not be used by new drivers. They are documented here for
679 reference. The meaning of their alpha bits (a) is ill-defined and
680 interpreted as in either the corresponding ARGB or XRGB format, depending on
681 the driver.</para>
682
683 <table pgwide="1" frame="none" id="rgb-formats-deprecated">
684 <title>Deprecated Packed RGB Image Formats</title>
685 <tgroup cols="37" align="center">
686 <colspec colname="id" align="left" />
687 <colspec colname="fourcc" />
688 <colspec colname="bit" />
689
690 <colspec colnum="4" colname="b07" align="center" />
691 <colspec colnum="5" colname="b06" align="center" />
692 <colspec colnum="6" colname="b05" align="center" />
693 <colspec colnum="7" colname="b04" align="center" />
694 <colspec colnum="8" colname="b03" align="center" />
695 <colspec colnum="9" colname="b02" align="center" />
696 <colspec colnum="10" colname="b01" align="center" />
697 <colspec colnum="11" colname="b00" align="center" />
698
699 <colspec colnum="13" colname="b17" align="center" />
700 <colspec colnum="14" colname="b16" align="center" />
701 <colspec colnum="15" colname="b15" align="center" />
702 <colspec colnum="16" colname="b14" align="center" />
703 <colspec colnum="17" colname="b13" align="center" />
704 <colspec colnum="18" colname="b12" align="center" />
705 <colspec colnum="19" colname="b11" align="center" />
706 <colspec colnum="20" colname="b10" align="center" />
707
708 <colspec colnum="22" colname="b27" align="center" />
709 <colspec colnum="23" colname="b26" align="center" />
710 <colspec colnum="24" colname="b25" align="center" />
711 <colspec colnum="25" colname="b24" align="center" />
712 <colspec colnum="26" colname="b23" align="center" />
713 <colspec colnum="27" colname="b22" align="center" />
714 <colspec colnum="28" colname="b21" align="center" />
715 <colspec colnum="29" colname="b20" align="center" />
716
717 <colspec colnum="31" colname="b37" align="center" />
718 <colspec colnum="32" colname="b36" align="center" />
719 <colspec colnum="33" colname="b35" align="center" />
720 <colspec colnum="34" colname="b34" align="center" />
721 <colspec colnum="35" colname="b33" align="center" />
722 <colspec colnum="36" colname="b32" align="center" />
723 <colspec colnum="37" colname="b31" align="center" />
724 <colspec colnum="38" colname="b30" align="center" />
725
726 <spanspec namest="b07" nameend="b00" spanname="b0" />
727 <spanspec namest="b17" nameend="b10" spanname="b1" />
728 <spanspec namest="b27" nameend="b20" spanname="b2" />
729 <spanspec namest="b37" nameend="b30" spanname="b3" />
730 <thead>
731 <row>
732 <entry>Identifier</entry>
733 <entry>Code</entry>
734 <entry>&nbsp;</entry>
735 <entry spanname="b0">Byte&nbsp;0 in memory</entry>
736 <entry spanname="b1">Byte&nbsp;1</entry>
737 <entry spanname="b2">Byte&nbsp;2</entry>
738 <entry spanname="b3">Byte&nbsp;3</entry>
739 </row>
740 <row>
741 <entry>&nbsp;</entry>
742 <entry>&nbsp;</entry>
743 <entry>Bit</entry>
744 <entry>7</entry>
745 <entry>6</entry>
746 <entry>5</entry>
747 <entry>4</entry>
748 <entry>3</entry>
749 <entry>2</entry>
750 <entry>1</entry>
751 <entry>0</entry>
752 <entry>&nbsp;</entry>
753 <entry>7</entry>
754 <entry>6</entry>
755 <entry>5</entry>
756 <entry>4</entry>
757 <entry>3</entry>
758 <entry>2</entry>
759 <entry>1</entry>
760 <entry>0</entry>
761 <entry>&nbsp;</entry>
762 <entry>7</entry>
763 <entry>6</entry>
764 <entry>5</entry>
765 <entry>4</entry>
766 <entry>3</entry>
767 <entry>2</entry>
768 <entry>1</entry>
769 <entry>0</entry>
770 <entry>&nbsp;</entry>
771 <entry>7</entry>
772 <entry>6</entry>
773 <entry>5</entry>
774 <entry>4</entry>
775 <entry>3</entry>
776 <entry>2</entry>
777 <entry>1</entry>
778 <entry>0</entry>
779 </row>
780 </thead>
781 <tbody>
782 <row id="V4L2-PIX-FMT-RGB444">
783 <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry>
784 <entry>'R444'</entry>
785 <entry></entry>
786 <entry>g<subscript>3</subscript></entry>
787 <entry>g<subscript>2</subscript></entry>
788 <entry>g<subscript>1</subscript></entry>
789 <entry>g<subscript>0</subscript></entry>
790 <entry>b<subscript>3</subscript></entry>
791 <entry>b<subscript>2</subscript></entry>
792 <entry>b<subscript>1</subscript></entry>
793 <entry>b<subscript>0</subscript></entry>
794 <entry></entry>
795 <entry>a<subscript>3</subscript></entry>
796 <entry>a<subscript>2</subscript></entry>
797 <entry>a<subscript>1</subscript></entry>
798 <entry>a<subscript>0</subscript></entry>
799 <entry>r<subscript>3</subscript></entry>
800 <entry>r<subscript>2</subscript></entry>
801 <entry>r<subscript>1</subscript></entry>
802 <entry>r<subscript>0</subscript></entry>
803 </row>
804 <row id="V4L2-PIX-FMT-RGB555">
805 <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry>
806 <entry>'RGBO'</entry>
807 <entry></entry>
808 <entry>g<subscript>2</subscript></entry>
809 <entry>g<subscript>1</subscript></entry>
810 <entry>g<subscript>0</subscript></entry>
811 <entry>b<subscript>4</subscript></entry>
812 <entry>b<subscript>3</subscript></entry>
813 <entry>b<subscript>2</subscript></entry>
814 <entry>b<subscript>1</subscript></entry>
815 <entry>b<subscript>0</subscript></entry>
816 <entry></entry>
817 <entry>a</entry>
818 <entry>r<subscript>4</subscript></entry>
819 <entry>r<subscript>3</subscript></entry>
820 <entry>r<subscript>2</subscript></entry>
821 <entry>r<subscript>1</subscript></entry>
822 <entry>r<subscript>0</subscript></entry>
823 <entry>g<subscript>4</subscript></entry>
824 <entry>g<subscript>3</subscript></entry>
825 </row>
826 <row id="V4L2-PIX-FMT-RGB555X">
827 <entry><constant>V4L2_PIX_FMT_RGB555X</constant></entry>
828 <entry>'RGBQ'</entry>
829 <entry></entry>
830 <entry>a</entry>
831 <entry>r<subscript>4</subscript></entry>
832 <entry>r<subscript>3</subscript></entry>
833 <entry>r<subscript>2</subscript></entry>
834 <entry>r<subscript>1</subscript></entry>
835 <entry>r<subscript>0</subscript></entry>
836 <entry>g<subscript>4</subscript></entry>
837 <entry>g<subscript>3</subscript></entry>
838 <entry></entry>
839 <entry>g<subscript>2</subscript></entry>
840 <entry>g<subscript>1</subscript></entry>
841 <entry>g<subscript>0</subscript></entry>
842 <entry>b<subscript>4</subscript></entry>
843 <entry>b<subscript>3</subscript></entry>
844 <entry>b<subscript>2</subscript></entry>
845 <entry>b<subscript>1</subscript></entry>
846 <entry>b<subscript>0</subscript></entry>
847 </row>
848 <row id="V4L2-PIX-FMT-BGR32">
849 <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry>
850 <entry>'BGR4'</entry>
851 <entry></entry>
852 <entry>b<subscript>7</subscript></entry>
853 <entry>b<subscript>6</subscript></entry>
854 <entry>b<subscript>5</subscript></entry>
855 <entry>b<subscript>4</subscript></entry>
856 <entry>b<subscript>3</subscript></entry>
857 <entry>b<subscript>2</subscript></entry>
858 <entry>b<subscript>1</subscript></entry>
859 <entry>b<subscript>0</subscript></entry>
860 <entry></entry>
861 <entry>g<subscript>7</subscript></entry>
862 <entry>g<subscript>6</subscript></entry>
863 <entry>g<subscript>5</subscript></entry>
864 <entry>g<subscript>4</subscript></entry>
865 <entry>g<subscript>3</subscript></entry>
866 <entry>g<subscript>2</subscript></entry>
867 <entry>g<subscript>1</subscript></entry>
868 <entry>g<subscript>0</subscript></entry>
869 <entry></entry>
870 <entry>r<subscript>7</subscript></entry>
871 <entry>r<subscript>6</subscript></entry>
872 <entry>r<subscript>5</subscript></entry>
873 <entry>r<subscript>4</subscript></entry>
874 <entry>r<subscript>3</subscript></entry>
875 <entry>r<subscript>2</subscript></entry>
876 <entry>r<subscript>1</subscript></entry>
877 <entry>r<subscript>0</subscript></entry>
878 <entry></entry>
879 <entry>a<subscript>7</subscript></entry>
880 <entry>a<subscript>6</subscript></entry>
881 <entry>a<subscript>5</subscript></entry>
882 <entry>a<subscript>4</subscript></entry>
883 <entry>a<subscript>3</subscript></entry>
884 <entry>a<subscript>2</subscript></entry>
885 <entry>a<subscript>1</subscript></entry>
886 <entry>a<subscript>0</subscript></entry>
887 </row>
888 <row id="V4L2-PIX-FMT-RGB32">
889 <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry>
890 <entry>'RGB4'</entry>
891 <entry></entry>
892 <entry>a<subscript>7</subscript></entry>
893 <entry>a<subscript>6</subscript></entry>
894 <entry>a<subscript>5</subscript></entry>
895 <entry>a<subscript>4</subscript></entry>
896 <entry>a<subscript>3</subscript></entry>
897 <entry>a<subscript>2</subscript></entry>
898 <entry>a<subscript>1</subscript></entry>
899 <entry>a<subscript>0</subscript></entry>
900 <entry></entry>
901 <entry>r<subscript>7</subscript></entry>
902 <entry>r<subscript>6</subscript></entry>
903 <entry>r<subscript>5</subscript></entry>
904 <entry>r<subscript>4</subscript></entry>
905 <entry>r<subscript>3</subscript></entry>
906 <entry>r<subscript>2</subscript></entry>
907 <entry>r<subscript>1</subscript></entry>
908 <entry>r<subscript>0</subscript></entry>
909 <entry></entry>
910 <entry>g<subscript>7</subscript></entry>
911 <entry>g<subscript>6</subscript></entry>
912 <entry>g<subscript>5</subscript></entry>
913 <entry>g<subscript>4</subscript></entry>
914 <entry>g<subscript>3</subscript></entry>
915 <entry>g<subscript>2</subscript></entry>
916 <entry>g<subscript>1</subscript></entry>
917 <entry>g<subscript>0</subscript></entry>
918 <entry></entry>
919 <entry>b<subscript>7</subscript></entry>
920 <entry>b<subscript>6</subscript></entry>
921 <entry>b<subscript>5</subscript></entry>
922 <entry>b<subscript>4</subscript></entry>
923 <entry>b<subscript>3</subscript></entry>
924 <entry>b<subscript>2</subscript></entry>
925 <entry>b<subscript>1</subscript></entry>
926 <entry>b<subscript>0</subscript></entry>
927 </row>
928 </tbody>
929 </tgroup>
930 </table>
931
932 <para>A test utility to determine which RGB formats a driver
933actually supports is available from the LinuxTV v4l-dvb repository.
934See &v4l-dvb; for access instructions.</para>
935
936 </refsect1>
937 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml
deleted file mode 100644
index 33fa5a47a865..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-packed-yuv.xml
+++ /dev/null
@@ -1,236 +0,0 @@
1<refentry id="packed-yuv">
2 <refmeta>
3 <refentrytitle>Packed YUV formats</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>Packed YUV formats</refname>
8 <refpurpose>Packed YUV formats</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>Similar to the packed RGB formats these formats store
14the Y, Cb and Cr component of each pixel in one 16 or 32 bit
15word.</para>
16
17 <table pgwide="1" frame="none">
18 <title>Packed YUV Image Formats</title>
19 <tgroup cols="37" align="center">
20 <colspec colname="id" align="left" />
21 <colspec colname="fourcc" />
22 <colspec colname="bit" />
23
24 <colspec colnum="4" colname="b07" align="center" />
25 <colspec colnum="5" colname="b06" align="center" />
26 <colspec colnum="6" colname="b05" align="center" />
27 <colspec colnum="7" colname="b04" align="center" />
28 <colspec colnum="8" colname="b03" align="center" />
29 <colspec colnum="9" colname="b02" align="center" />
30 <colspec colnum="10" colname="b01" align="center" />
31 <colspec colnum="11" colname="b00" align="center" />
32
33 <colspec colnum="13" colname="b17" align="center" />
34 <colspec colnum="14" colname="b16" align="center" />
35 <colspec colnum="15" colname="b15" align="center" />
36 <colspec colnum="16" colname="b14" align="center" />
37 <colspec colnum="17" colname="b13" align="center" />
38 <colspec colnum="18" colname="b12" align="center" />
39 <colspec colnum="19" colname="b11" align="center" />
40 <colspec colnum="20" colname="b10" align="center" />
41
42 <colspec colnum="22" colname="b27" align="center" />
43 <colspec colnum="23" colname="b26" align="center" />
44 <colspec colnum="24" colname="b25" align="center" />
45 <colspec colnum="25" colname="b24" align="center" />
46 <colspec colnum="26" colname="b23" align="center" />
47 <colspec colnum="27" colname="b22" align="center" />
48 <colspec colnum="28" colname="b21" align="center" />
49 <colspec colnum="29" colname="b20" align="center" />
50
51 <colspec colnum="31" colname="b37" align="center" />
52 <colspec colnum="32" colname="b36" align="center" />
53 <colspec colnum="33" colname="b35" align="center" />
54 <colspec colnum="34" colname="b34" align="center" />
55 <colspec colnum="35" colname="b33" align="center" />
56 <colspec colnum="36" colname="b32" align="center" />
57 <colspec colnum="37" colname="b31" align="center" />
58 <colspec colnum="38" colname="b30" align="center" />
59
60 <spanspec namest="b07" nameend="b00" spanname="b0" />
61 <spanspec namest="b17" nameend="b10" spanname="b1" />
62 <spanspec namest="b27" nameend="b20" spanname="b2" />
63 <spanspec namest="b37" nameend="b30" spanname="b3" />
64 <thead>
65 <row>
66 <entry>Identifier</entry>
67 <entry>Code</entry>
68 <entry>&nbsp;</entry>
69 <entry spanname="b0">Byte&nbsp;0 in memory</entry>
70 <entry spanname="b1">Byte&nbsp;1</entry>
71 <entry spanname="b2">Byte&nbsp;2</entry>
72 <entry spanname="b3">Byte&nbsp;3</entry>
73 </row>
74 <row>
75 <entry>&nbsp;</entry>
76 <entry>&nbsp;</entry>
77 <entry>Bit</entry>
78 <entry>7</entry>
79 <entry>6</entry>
80 <entry>5</entry>
81 <entry>4</entry>
82 <entry>3</entry>
83 <entry>2</entry>
84 <entry>1</entry>
85 <entry>0</entry>
86 <entry>&nbsp;</entry>
87 <entry>7</entry>
88 <entry>6</entry>
89 <entry>5</entry>
90 <entry>4</entry>
91 <entry>3</entry>
92 <entry>2</entry>
93 <entry>1</entry>
94 <entry>0</entry>
95 <entry>&nbsp;</entry>
96 <entry>7</entry>
97 <entry>6</entry>
98 <entry>5</entry>
99 <entry>4</entry>
100 <entry>3</entry>
101 <entry>2</entry>
102 <entry>1</entry>
103 <entry>0</entry>
104 <entry>&nbsp;</entry>
105 <entry>7</entry>
106 <entry>6</entry>
107 <entry>5</entry>
108 <entry>4</entry>
109 <entry>3</entry>
110 <entry>2</entry>
111 <entry>1</entry>
112 <entry>0</entry>
113 </row>
114 </thead>
115 <tbody valign="top">
116 <row id="V4L2-PIX-FMT-YUV444">
117 <entry><constant>V4L2_PIX_FMT_YUV444</constant></entry>
118 <entry>'Y444'</entry>
119 <entry></entry>
120 <entry>Cb<subscript>3</subscript></entry>
121 <entry>Cb<subscript>2</subscript></entry>
122 <entry>Cb<subscript>1</subscript></entry>
123 <entry>Cb<subscript>0</subscript></entry>
124 <entry>Cr<subscript>3</subscript></entry>
125 <entry>Cr<subscript>2</subscript></entry>
126 <entry>Cr<subscript>1</subscript></entry>
127 <entry>Cr<subscript>0</subscript></entry>
128 <entry></entry>
129 <entry>a<subscript>3</subscript></entry>
130 <entry>a<subscript>2</subscript></entry>
131 <entry>a<subscript>1</subscript></entry>
132 <entry>a<subscript>0</subscript></entry>
133 <entry>Y'<subscript>3</subscript></entry>
134 <entry>Y'<subscript>2</subscript></entry>
135 <entry>Y'<subscript>1</subscript></entry>
136 <entry>Y'<subscript>0</subscript></entry>
137 </row>
138
139 <row id="V4L2-PIX-FMT-YUV555">
140 <entry><constant>V4L2_PIX_FMT_YUV555</constant></entry>
141 <entry>'YUVO'</entry>
142 <entry></entry>
143 <entry>Cb<subscript>2</subscript></entry>
144 <entry>Cb<subscript>1</subscript></entry>
145 <entry>Cb<subscript>0</subscript></entry>
146 <entry>Cr<subscript>4</subscript></entry>
147 <entry>Cr<subscript>3</subscript></entry>
148 <entry>Cr<subscript>2</subscript></entry>
149 <entry>Cr<subscript>1</subscript></entry>
150 <entry>Cr<subscript>0</subscript></entry>
151 <entry></entry>
152 <entry>a</entry>
153 <entry>Y'<subscript>4</subscript></entry>
154 <entry>Y'<subscript>3</subscript></entry>
155 <entry>Y'<subscript>2</subscript></entry>
156 <entry>Y'<subscript>1</subscript></entry>
157 <entry>Y'<subscript>0</subscript></entry>
158 <entry>Cb<subscript>4</subscript></entry>
159 <entry>Cb<subscript>3</subscript></entry>
160 </row>
161
162 <row id="V4L2-PIX-FMT-YUV565">
163 <entry><constant>V4L2_PIX_FMT_YUV565</constant></entry>
164 <entry>'YUVP'</entry>
165 <entry></entry>
166 <entry>Cb<subscript>2</subscript></entry>
167 <entry>Cb<subscript>1</subscript></entry>
168 <entry>Cb<subscript>0</subscript></entry>
169 <entry>Cr<subscript>4</subscript></entry>
170 <entry>Cr<subscript>3</subscript></entry>
171 <entry>Cr<subscript>2</subscript></entry>
172 <entry>Cr<subscript>1</subscript></entry>
173 <entry>Cr<subscript>0</subscript></entry>
174 <entry></entry>
175 <entry>Y'<subscript>4</subscript></entry>
176 <entry>Y'<subscript>3</subscript></entry>
177 <entry>Y'<subscript>2</subscript></entry>
178 <entry>Y'<subscript>1</subscript></entry>
179 <entry>Y'<subscript>0</subscript></entry>
180 <entry>Cb<subscript>5</subscript></entry>
181 <entry>Cb<subscript>4</subscript></entry>
182 <entry>Cb<subscript>3</subscript></entry>
183 </row>
184
185 <row id="V4L2-PIX-FMT-YUV32">
186 <entry><constant>V4L2_PIX_FMT_YUV32</constant></entry>
187 <entry>'YUV4'</entry>
188 <entry></entry>
189 <entry>a<subscript>7</subscript></entry>
190 <entry>a<subscript>6</subscript></entry>
191 <entry>a<subscript>5</subscript></entry>
192 <entry>a<subscript>4</subscript></entry>
193 <entry>a<subscript>3</subscript></entry>
194 <entry>a<subscript>2</subscript></entry>
195 <entry>a<subscript>1</subscript></entry>
196 <entry>a<subscript>0</subscript></entry>
197 <entry></entry>
198 <entry>Y'<subscript>7</subscript></entry>
199 <entry>Y'<subscript>6</subscript></entry>
200 <entry>Y'<subscript>5</subscript></entry>
201 <entry>Y'<subscript>4</subscript></entry>
202 <entry>Y'<subscript>3</subscript></entry>
203 <entry>Y'<subscript>2</subscript></entry>
204 <entry>Y'<subscript>1</subscript></entry>
205 <entry>Y'<subscript>0</subscript></entry>
206 <entry></entry>
207 <entry>Cb<subscript>7</subscript></entry>
208 <entry>Cb<subscript>6</subscript></entry>
209 <entry>Cb<subscript>5</subscript></entry>
210 <entry>Cb<subscript>4</subscript></entry>
211 <entry>Cb<subscript>3</subscript></entry>
212 <entry>Cb<subscript>2</subscript></entry>
213 <entry>Cb<subscript>1</subscript></entry>
214 <entry>Cb<subscript>0</subscript></entry>
215 <entry></entry>
216 <entry>Cr<subscript>7</subscript></entry>
217 <entry>Cr<subscript>6</subscript></entry>
218 <entry>Cr<subscript>5</subscript></entry>
219 <entry>Cr<subscript>4</subscript></entry>
220 <entry>Cr<subscript>3</subscript></entry>
221 <entry>Cr<subscript>2</subscript></entry>
222 <entry>Cr<subscript>1</subscript></entry>
223 <entry>Cr<subscript>0</subscript></entry>
224 </row>
225 </tbody>
226 </tgroup>
227 </table>
228
229 <para>Bit 7 is the most significant bit. The value of a = alpha
230bits is undefined when reading from the driver, ignored when writing
231to the driver, except when alpha blending has been negotiated for a
232<link linkend="overlay">Video Overlay</link> or <link
233linkend="osd">Video Output Overlay</link>.</para>
234
235 </refsect1>
236 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml b/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml
deleted file mode 100644
index 6494b05d84a1..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sbggr16.xml
+++ /dev/null
@@ -1,83 +0,0 @@
1<refentry id="V4L2-PIX-FMT-SBGGR16">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SBGGR16 ('BYR2')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_SBGGR16</constant></refname>
8 <refpurpose>Bayer RGB format</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This format is similar to <link
14linkend="V4L2-PIX-FMT-SBGGR8">
15<constant>V4L2_PIX_FMT_SBGGR8</constant></link>, except each pixel has
16a depth of 16 bits. The least significant byte is stored at lower
17memory addresses (little-endian). Note the actual sampling precision
18may be lower than 16 bits, for example 10 bits per pixel with values
19in range 0 to 1023.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_SBGGR16</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="5" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>B<subscript>00low</subscript></entry>
35 <entry>B<subscript>00high</subscript></entry>
36 <entry>G<subscript>01low</subscript></entry>
37 <entry>G<subscript>01high</subscript></entry>
38 <entry>B<subscript>02low</subscript></entry>
39 <entry>B<subscript>02high</subscript></entry>
40 <entry>G<subscript>03low</subscript></entry>
41 <entry>G<subscript>03high</subscript></entry>
42 </row>
43 <row>
44 <entry>start&nbsp;+&nbsp;8:</entry>
45 <entry>G<subscript>10low</subscript></entry>
46 <entry>G<subscript>10high</subscript></entry>
47 <entry>R<subscript>11low</subscript></entry>
48 <entry>R<subscript>11high</subscript></entry>
49 <entry>G<subscript>12low</subscript></entry>
50 <entry>G<subscript>12high</subscript></entry>
51 <entry>R<subscript>13low</subscript></entry>
52 <entry>R<subscript>13high</subscript></entry>
53 </row>
54 <row>
55 <entry>start&nbsp;+&nbsp;16:</entry>
56 <entry>B<subscript>20low</subscript></entry>
57 <entry>B<subscript>20high</subscript></entry>
58 <entry>G<subscript>21low</subscript></entry>
59 <entry>G<subscript>21high</subscript></entry>
60 <entry>B<subscript>22low</subscript></entry>
61 <entry>B<subscript>22high</subscript></entry>
62 <entry>G<subscript>23low</subscript></entry>
63 <entry>G<subscript>23high</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;24:</entry>
67 <entry>G<subscript>30low</subscript></entry>
68 <entry>G<subscript>30high</subscript></entry>
69 <entry>R<subscript>31low</subscript></entry>
70 <entry>R<subscript>31high</subscript></entry>
71 <entry>G<subscript>32low</subscript></entry>
72 <entry>G<subscript>32high</subscript></entry>
73 <entry>R<subscript>33low</subscript></entry>
74 <entry>R<subscript>33high</subscript></entry>
75 </row>
76 </tbody>
77 </tgroup>
78 </informaltable>
79 </para>
80 </formalpara>
81 </example>
82 </refsect1>
83</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml b/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml
deleted file mode 100644
index 5eaf2b42d3f7..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sbggr8.xml
+++ /dev/null
@@ -1,67 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-SBGGR8">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SBGGR8 ('BA81')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_SBGGR8</constant></refname>
8 <refpurpose>Bayer RGB format</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is commonly the native format of digital cameras,
14reflecting the arrangement of sensors on the CCD device. Only one red,
15green or blue value is given for each pixel. Missing components must
16be interpolated from neighbouring pixels. From left to right the first
17row consists of a blue and green value, the second row of a green and
18red value. This scheme repeats to the right and down for every two
19columns and rows.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_SBGGR8</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="5" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>B<subscript>00</subscript></entry>
35 <entry>G<subscript>01</subscript></entry>
36 <entry>B<subscript>02</subscript></entry>
37 <entry>G<subscript>03</subscript></entry>
38 </row>
39 <row>
40 <entry>start&nbsp;+&nbsp;4:</entry>
41 <entry>G<subscript>10</subscript></entry>
42 <entry>R<subscript>11</subscript></entry>
43 <entry>G<subscript>12</subscript></entry>
44 <entry>R<subscript>13</subscript></entry>
45 </row>
46 <row>
47 <entry>start&nbsp;+&nbsp;8:</entry>
48 <entry>B<subscript>20</subscript></entry>
49 <entry>G<subscript>21</subscript></entry>
50 <entry>B<subscript>22</subscript></entry>
51 <entry>G<subscript>23</subscript></entry>
52 </row>
53 <row>
54 <entry>start&nbsp;+&nbsp;12:</entry>
55 <entry>G<subscript>30</subscript></entry>
56 <entry>R<subscript>31</subscript></entry>
57 <entry>G<subscript>32</subscript></entry>
58 <entry>R<subscript>33</subscript></entry>
59 </row>
60 </tbody>
61 </tgroup>
62 </informaltable>
63 </para>
64 </formalpara>
65 </example>
66 </refsect1>
67 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml
deleted file mode 100644
index 6118d8f7a20c..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sdr-cs08.xml
+++ /dev/null
@@ -1,44 +0,0 @@
1<refentry id="V4L2-SDR-FMT-CS08">
2 <refmeta>
3 <refentrytitle>V4L2_SDR_FMT_CS8 ('CS08')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>
8 <constant>V4L2_SDR_FMT_CS8</constant>
9 </refname>
10 <refpurpose>Complex signed 8-bit IQ sample</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14 <para>
15This format contains sequence of complex number samples. Each complex number
16consist two parts, called In-phase and Quadrature (IQ). Both I and Q are
17represented as a 8 bit signed number. I value comes first and Q value after
18that.
19 </para>
20 <example>
21 <title><constant>V4L2_SDR_FMT_CS8</constant> 1 sample</title>
22 <formalpara>
23 <title>Byte Order.</title>
24 <para>Each cell is one byte.
25 <informaltable frame="none">
26 <tgroup cols="2" align="center">
27 <colspec align="left" colwidth="2*" />
28 <tbody valign="top">
29 <row>
30 <entry>start&nbsp;+&nbsp;0:</entry>
31 <entry>I'<subscript>0</subscript></entry>
32 </row>
33 <row>
34 <entry>start&nbsp;+&nbsp;1:</entry>
35 <entry>Q'<subscript>0</subscript></entry>
36 </row>
37 </tbody>
38 </tgroup>
39 </informaltable>
40 </para>
41 </formalpara>
42 </example>
43 </refsect1>
44</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml
deleted file mode 100644
index e4b494ce1369..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sdr-cs14le.xml
+++ /dev/null
@@ -1,47 +0,0 @@
1<refentry id="V4L2-SDR-FMT-CS14LE">
2 <refmeta>
3 <refentrytitle>V4L2_SDR_FMT_CS14LE ('CS14')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>
8 <constant>V4L2_SDR_FMT_CS14LE</constant>
9 </refname>
10 <refpurpose>Complex signed 14-bit little endian IQ sample</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14 <para>
15This format contains sequence of complex number samples. Each complex number
16consist two parts, called In-phase and Quadrature (IQ). Both I and Q are
17represented as a 14 bit signed little endian number. I value comes first
18and Q value after that. 14 bit value is stored in 16 bit space with unused
19high bits padded with 0.
20 </para>
21 <example>
22 <title><constant>V4L2_SDR_FMT_CS14LE</constant> 1 sample</title>
23 <formalpara>
24 <title>Byte Order.</title>
25 <para>Each cell is one byte.
26 <informaltable frame="none">
27 <tgroup cols="3" align="center">
28 <colspec align="left" colwidth="2*" />
29 <tbody valign="top">
30 <row>
31 <entry>start&nbsp;+&nbsp;0:</entry>
32 <entry>I'<subscript>0[7:0]</subscript></entry>
33 <entry>I'<subscript>0[13:8]</subscript></entry>
34 </row>
35 <row>
36 <entry>start&nbsp;+&nbsp;2:</entry>
37 <entry>Q'<subscript>0[7:0]</subscript></entry>
38 <entry>Q'<subscript>0[13:8]</subscript></entry>
39 </row>
40 </tbody>
41 </tgroup>
42 </informaltable>
43 </para>
44 </formalpara>
45 </example>
46 </refsect1>
47</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-cu08.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-cu08.xml
deleted file mode 100644
index 2d80104c178b..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sdr-cu08.xml
+++ /dev/null
@@ -1,44 +0,0 @@
1<refentry id="V4L2-SDR-FMT-CU08">
2 <refmeta>
3 <refentrytitle>V4L2_SDR_FMT_CU8 ('CU08')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>
8 <constant>V4L2_SDR_FMT_CU8</constant>
9 </refname>
10 <refpurpose>Complex unsigned 8-bit IQ sample</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14 <para>
15This format contains sequence of complex number samples. Each complex number
16consist two parts, called In-phase and Quadrature (IQ). Both I and Q are
17represented as a 8 bit unsigned number. I value comes first and Q value after
18that.
19 </para>
20 <example>
21 <title><constant>V4L2_SDR_FMT_CU8</constant> 1 sample</title>
22 <formalpara>
23 <title>Byte Order.</title>
24 <para>Each cell is one byte.
25 <informaltable frame="none">
26 <tgroup cols="2" align="center">
27 <colspec align="left" colwidth="2*" />
28 <tbody valign="top">
29 <row>
30 <entry>start&nbsp;+&nbsp;0:</entry>
31 <entry>I'<subscript>0</subscript></entry>
32 </row>
33 <row>
34 <entry>start&nbsp;+&nbsp;1:</entry>
35 <entry>Q'<subscript>0</subscript></entry>
36 </row>
37 </tbody>
38 </tgroup>
39 </informaltable>
40 </para>
41 </formalpara>
42 </example>
43 </refsect1>
44</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-cu16le.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-cu16le.xml
deleted file mode 100644
index 26288ffa9071..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sdr-cu16le.xml
+++ /dev/null
@@ -1,46 +0,0 @@
1<refentry id="V4L2-SDR-FMT-CU16LE">
2 <refmeta>
3 <refentrytitle>V4L2_SDR_FMT_CU16LE ('CU16')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>
8 <constant>V4L2_SDR_FMT_CU16LE</constant>
9 </refname>
10 <refpurpose>Complex unsigned 16-bit little endian IQ sample</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14 <para>
15This format contains sequence of complex number samples. Each complex number
16consist two parts, called In-phase and Quadrature (IQ). Both I and Q are
17represented as a 16 bit unsigned little endian number. I value comes first
18and Q value after that.
19 </para>
20 <example>
21 <title><constant>V4L2_SDR_FMT_CU16LE</constant> 1 sample</title>
22 <formalpara>
23 <title>Byte Order.</title>
24 <para>Each cell is one byte.
25 <informaltable frame="none">
26 <tgroup cols="3" align="center">
27 <colspec align="left" colwidth="2*" />
28 <tbody valign="top">
29 <row>
30 <entry>start&nbsp;+&nbsp;0:</entry>
31 <entry>I'<subscript>0[7:0]</subscript></entry>
32 <entry>I'<subscript>0[15:8]</subscript></entry>
33 </row>
34 <row>
35 <entry>start&nbsp;+&nbsp;2:</entry>
36 <entry>Q'<subscript>0[7:0]</subscript></entry>
37 <entry>Q'<subscript>0[15:8]</subscript></entry>
38 </row>
39 </tbody>
40 </tgroup>
41 </informaltable>
42 </para>
43 </formalpara>
44 </example>
45 </refsect1>
46</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml b/Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml
deleted file mode 100644
index 3df076b99f94..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sdr-ru12le.xml
+++ /dev/null
@@ -1,40 +0,0 @@
1<refentry id="V4L2-SDR-FMT-RU12LE">
2 <refmeta>
3 <refentrytitle>V4L2_SDR_FMT_RU12LE ('RU12')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname>
8 <constant>V4L2_SDR_FMT_RU12LE</constant>
9 </refname>
10 <refpurpose>Real unsigned 12-bit little endian sample</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14 <para>
15This format contains sequence of real number samples. Each sample is
16represented as a 12 bit unsigned little endian number. Sample is stored
17in 16 bit space with unused high bits padded with 0.
18 </para>
19 <example>
20 <title><constant>V4L2_SDR_FMT_RU12LE</constant> 1 sample</title>
21 <formalpara>
22 <title>Byte Order.</title>
23 <para>Each cell is one byte.
24 <informaltable frame="none">
25 <tgroup cols="3" align="center">
26 <colspec align="left" colwidth="2*" />
27 <tbody valign="top">
28 <row>
29 <entry>start&nbsp;+&nbsp;0:</entry>
30 <entry>I'<subscript>0[7:0]</subscript></entry>
31 <entry>I'<subscript>0[11:8]</subscript></entry>
32 </row>
33 </tbody>
34 </tgroup>
35 </informaltable>
36 </para>
37 </formalpara>
38 </example>
39 </refsect1>
40</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml
deleted file mode 100644
index fee65dca79c5..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sgbrg8.xml
+++ /dev/null
@@ -1,67 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-SGBRG8">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SGBRG8 ('GBRG')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_SGBRG8</constant></refname>
8 <refpurpose>Bayer RGB format</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is commonly the native format of digital cameras,
14reflecting the arrangement of sensors on the CCD device. Only one red,
15green or blue value is given for each pixel. Missing components must
16be interpolated from neighbouring pixels. From left to right the first
17row consists of a green and blue value, the second row of a red and
18green value. This scheme repeats to the right and down for every two
19columns and rows.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_SGBRG8</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="5" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>G<subscript>00</subscript></entry>
35 <entry>B<subscript>01</subscript></entry>
36 <entry>G<subscript>02</subscript></entry>
37 <entry>B<subscript>03</subscript></entry>
38 </row>
39 <row>
40 <entry>start&nbsp;+&nbsp;4:</entry>
41 <entry>R<subscript>10</subscript></entry>
42 <entry>G<subscript>11</subscript></entry>
43 <entry>R<subscript>12</subscript></entry>
44 <entry>G<subscript>13</subscript></entry>
45 </row>
46 <row>
47 <entry>start&nbsp;+&nbsp;8:</entry>
48 <entry>G<subscript>20</subscript></entry>
49 <entry>B<subscript>21</subscript></entry>
50 <entry>G<subscript>22</subscript></entry>
51 <entry>B<subscript>23</subscript></entry>
52 </row>
53 <row>
54 <entry>start&nbsp;+&nbsp;12:</entry>
55 <entry>R<subscript>30</subscript></entry>
56 <entry>G<subscript>31</subscript></entry>
57 <entry>R<subscript>32</subscript></entry>
58 <entry>G<subscript>33</subscript></entry>
59 </row>
60 </tbody>
61 </tgroup>
62 </informaltable>
63 </para>
64 </formalpara>
65 </example>
66 </refsect1>
67 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml b/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
deleted file mode 100644
index 7803b8c41b45..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-sgrbg8.xml
+++ /dev/null
@@ -1,67 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-SGRBG8">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SGRBG8 ('GRBG')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_SGRBG8</constant></refname>
8 <refpurpose>Bayer RGB format</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is commonly the native format of digital cameras,
14reflecting the arrangement of sensors on the CCD device. Only one red,
15green or blue value is given for each pixel. Missing components must
16be interpolated from neighbouring pixels. From left to right the first
17row consists of a green and blue value, the second row of a red and
18green value. This scheme repeats to the right and down for every two
19columns and rows.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_SGRBG8</constant> 4 &times;
234 pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="5" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>G<subscript>00</subscript></entry>
35 <entry>R<subscript>01</subscript></entry>
36 <entry>G<subscript>02</subscript></entry>
37 <entry>R<subscript>03</subscript></entry>
38 </row>
39 <row>
40 <entry>start&nbsp;+&nbsp;4:</entry>
41 <entry>B<subscript>10</subscript></entry>
42 <entry>G<subscript>11</subscript></entry>
43 <entry>B<subscript>12</subscript></entry>
44 <entry>G<subscript>13</subscript></entry>
45 </row>
46 <row>
47 <entry>start&nbsp;+&nbsp;8:</entry>
48 <entry>G<subscript>20</subscript></entry>
49 <entry>R<subscript>21</subscript></entry>
50 <entry>G<subscript>22</subscript></entry>
51 <entry>R<subscript>23</subscript></entry>
52 </row>
53 <row>
54 <entry>start&nbsp;+&nbsp;12:</entry>
55 <entry>B<subscript>30</subscript></entry>
56 <entry>G<subscript>31</subscript></entry>
57 <entry>B<subscript>32</subscript></entry>
58 <entry>G<subscript>33</subscript></entry>
59 </row>
60 </tbody>
61 </tgroup>
62 </informaltable>
63 </para>
64 </formalpara>
65 </example>
66 </refsect1>
67 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
deleted file mode 100644
index f34d03ebda3a..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
+++ /dev/null
@@ -1,90 +0,0 @@
1 <refentry id="pixfmt-srggb10">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'),
4 V4L2_PIX_FMT_SGRBG10 ('BA10'),
5 V4L2_PIX_FMT_SGBRG10 ('GB10'),
6 V4L2_PIX_FMT_SBGGR10 ('BG10'),
7 </refentrytitle>
8 &manvol;
9 </refmeta>
10 <refnamediv>
11 <refname id="V4L2-PIX-FMT-SRGGB10"><constant>V4L2_PIX_FMT_SRGGB10</constant></refname>
12 <refname id="V4L2-PIX-FMT-SGRBG10"><constant>V4L2_PIX_FMT_SGRBG10</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG10"><constant>V4L2_PIX_FMT_SGBRG10</constant></refname>
14 <refname id="V4L2-PIX-FMT-SBGGR10"><constant>V4L2_PIX_FMT_SBGGR10</constant></refname>
15 <refpurpose>10-bit Bayer formats expanded to 16 bits</refpurpose>
16 </refnamediv>
17 <refsect1>
18 <title>Description</title>
19
20 <para>These four pixel formats are raw sRGB / Bayer formats with
2110 bits per colour. Each colour component is stored in a 16-bit word, with 6
22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples
23and n/2 blue or red samples, with alternating red and blue rows. Bytes are
24stored in memory in little endian order. They are conventionally described
25as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of one of these
26formats</para>
27
28 <example>
29 <title><constant>V4L2_PIX_FMT_SBGGR10</constant> 4 &times; 4
30pixel image</title>
31
32 <formalpara>
33 <title>Byte Order.</title>
34 <para>Each cell is one byte, high 6 bits in high bytes are 0.
35 <informaltable frame="none">
36 <tgroup cols="5" align="center">
37 <colspec align="left" colwidth="2*" />
38 <tbody valign="top">
39 <row>
40 <entry>start&nbsp;+&nbsp;0:</entry>
41 <entry>B<subscript>00low</subscript></entry>
42 <entry>B<subscript>00high</subscript></entry>
43 <entry>G<subscript>01low</subscript></entry>
44 <entry>G<subscript>01high</subscript></entry>
45 <entry>B<subscript>02low</subscript></entry>
46 <entry>B<subscript>02high</subscript></entry>
47 <entry>G<subscript>03low</subscript></entry>
48 <entry>G<subscript>03high</subscript></entry>
49 </row>
50 <row>
51 <entry>start&nbsp;+&nbsp;8:</entry>
52 <entry>G<subscript>10low</subscript></entry>
53 <entry>G<subscript>10high</subscript></entry>
54 <entry>R<subscript>11low</subscript></entry>
55 <entry>R<subscript>11high</subscript></entry>
56 <entry>G<subscript>12low</subscript></entry>
57 <entry>G<subscript>12high</subscript></entry>
58 <entry>R<subscript>13low</subscript></entry>
59 <entry>R<subscript>13high</subscript></entry>
60 </row>
61 <row>
62 <entry>start&nbsp;+&nbsp;16:</entry>
63 <entry>B<subscript>20low</subscript></entry>
64 <entry>B<subscript>20high</subscript></entry>
65 <entry>G<subscript>21low</subscript></entry>
66 <entry>G<subscript>21high</subscript></entry>
67 <entry>B<subscript>22low</subscript></entry>
68 <entry>B<subscript>22high</subscript></entry>
69 <entry>G<subscript>23low</subscript></entry>
70 <entry>G<subscript>23high</subscript></entry>
71 </row>
72 <row>
73 <entry>start&nbsp;+&nbsp;24:</entry>
74 <entry>G<subscript>30low</subscript></entry>
75 <entry>G<subscript>30high</subscript></entry>
76 <entry>R<subscript>31low</subscript></entry>
77 <entry>R<subscript>31high</subscript></entry>
78 <entry>G<subscript>32low</subscript></entry>
79 <entry>G<subscript>32high</subscript></entry>
80 <entry>R<subscript>33low</subscript></entry>
81 <entry>R<subscript>33high</subscript></entry>
82 </row>
83 </tbody>
84 </tgroup>
85 </informaltable>
86 </para>
87 </formalpara>
88 </example>
89 </refsect1>
90</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
deleted file mode 100644
index d2e5845e57fb..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
+++ /dev/null
@@ -1,34 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>
4 V4L2_PIX_FMT_SBGGR10ALAW8 ('aBA8'),
5 V4L2_PIX_FMT_SGBRG10ALAW8 ('aGA8'),
6 V4L2_PIX_FMT_SGRBG10ALAW8 ('agA8'),
7 V4L2_PIX_FMT_SRGGB10ALAW8 ('aRA8'),
8 </refentrytitle>
9 &manvol;
10 </refmeta>
11 <refnamediv>
12 <refname id="V4L2-PIX-FMT-SBGGR10ALAW8">
13 <constant>V4L2_PIX_FMT_SBGGR10ALAW8</constant>
14 </refname>
15 <refname id="V4L2-PIX-FMT-SGBRG10ALAW8">
16 <constant>V4L2_PIX_FMT_SGBRG10ALAW8</constant>
17 </refname>
18 <refname id="V4L2-PIX-FMT-SGRBG10ALAW8">
19 <constant>V4L2_PIX_FMT_SGRBG10ALAW8</constant>
20 </refname>
21 <refname id="V4L2-PIX-FMT-SRGGB10ALAW8">
22 <constant>V4L2_PIX_FMT_SRGGB10ALAW8</constant>
23 </refname>
24 <refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose>
25 </refnamediv>
26 <refsect1>
27 <title>Description</title>
28 <para>These four pixel formats are raw sRGB / Bayer
29 formats with 10 bits per color compressed to 8 bits each,
30 using the A-LAW algorithm. Each color component consumes 8
31 bits of memory. In other respects this format is similar to
32 <xref linkend="V4L2-PIX-FMT-SRGGB8"></xref>.</para>
33 </refsect1>
34 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
deleted file mode 100644
index bde89878c5c5..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
+++ /dev/null
@@ -1,28 +0,0 @@
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>These 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/media/v4l/pixfmt-srggb10p.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
deleted file mode 100644
index a8cc102cde4f..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10p.xml
+++ /dev/null
@@ -1,99 +0,0 @@
1 <refentry id="pixfmt-srggb10p">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB10P ('pRAA'),
4 V4L2_PIX_FMT_SGRBG10P ('pgAA'),
5 V4L2_PIX_FMT_SGBRG10P ('pGAA'),
6 V4L2_PIX_FMT_SBGGR10P ('pBAA'),
7 </refentrytitle>
8 &manvol;
9 </refmeta>
10 <refnamediv>
11 <refname id="V4L2-PIX-FMT-SRGGB10P"><constant>V4L2_PIX_FMT_SRGGB10P</constant></refname>
12 <refname id="V4L2-PIX-FMT-SGRBG10P"><constant>V4L2_PIX_FMT_SGRBG10P</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG10P"><constant>V4L2_PIX_FMT_SGBRG10P</constant></refname>
14 <refname id="V4L2-PIX-FMT-SBGGR10P"><constant>V4L2_PIX_FMT_SBGGR10P</constant></refname>
15 <refpurpose>10-bit packed Bayer formats</refpurpose>
16 </refnamediv>
17 <refsect1>
18 <title>Description</title>
19
20 <para>These four pixel formats are packed raw sRGB /
21 Bayer formats with 10 bits per colour. Every four consecutive
22 colour components are packed into 5 bytes. Each of the first 4
23 bytes contain the 8 high order bits of the pixels, and the
24 fifth byte contains the two least significants bits of each
25 pixel, in the same order.</para>
26
27 <para>Each n-pixel row contains n/2 green samples and n/2 blue
28 or red samples, with alternating green-red and green-blue
29 rows. They are conventionally described as GRGR... BGBG...,
30 RGRG... GBGB..., etc. Below is an example of one of these
31 formats:</para>
32
33 <example>
34 <title><constant>V4L2_PIX_FMT_SBGGR10P</constant> 4 &times; 4
35 pixel image</title>
36
37 <formalpara>
38 <title>Byte Order.</title>
39 <para>Each cell is one byte.
40 <informaltable frame="topbot" colsep="1" rowsep="1">
41 <tgroup cols="5" align="center">
42 <colspec align="left" colwidth="2*" />
43 <tbody valign="top">
44 <row>
45 <entry>start&nbsp;+&nbsp;0:</entry>
46 <entry>B<subscript>00high</subscript></entry>
47 <entry>G<subscript>01high</subscript></entry>
48 <entry>B<subscript>02high</subscript></entry>
49 <entry>G<subscript>03high</subscript></entry>
50 <entry>B<subscript>00low</subscript>(bits 7--6)
51 G<subscript>01low</subscript>(bits 5--4)
52 B<subscript>02low</subscript>(bits 3--2)
53 G<subscript>03low</subscript>(bits 1--0)
54 </entry>
55 </row>
56 <row>
57 <entry>start&nbsp;+&nbsp;5:</entry>
58 <entry>G<subscript>10high</subscript></entry>
59 <entry>R<subscript>11high</subscript></entry>
60 <entry>G<subscript>12high</subscript></entry>
61 <entry>R<subscript>13high</subscript></entry>
62 <entry>G<subscript>10low</subscript>(bits 7--6)
63 R<subscript>11low</subscript>(bits 5--4)
64 G<subscript>12low</subscript>(bits 3--2)
65 R<subscript>13low</subscript>(bits 1--0)
66 </entry>
67 </row>
68 <row>
69 <entry>start&nbsp;+&nbsp;10:</entry>
70 <entry>B<subscript>20high</subscript></entry>
71 <entry>G<subscript>21high</subscript></entry>
72 <entry>B<subscript>22high</subscript></entry>
73 <entry>G<subscript>23high</subscript></entry>
74 <entry>B<subscript>20low</subscript>(bits 7--6)
75 G<subscript>21low</subscript>(bits 5--4)
76 B<subscript>22low</subscript>(bits 3--2)
77 G<subscript>23low</subscript>(bits 1--0)
78 </entry>
79 </row>
80 <row>
81 <entry>start&nbsp;+&nbsp;15:</entry>
82 <entry>G<subscript>30high</subscript></entry>
83 <entry>R<subscript>31high</subscript></entry>
84 <entry>G<subscript>32high</subscript></entry>
85 <entry>R<subscript>33high</subscript></entry>
86 <entry>G<subscript>30low</subscript>(bits 7--6)
87 R<subscript>31low</subscript>(bits 5--4)
88 G<subscript>32low</subscript>(bits 3--2)
89 R<subscript>33low</subscript>(bits 1--0)
90 </entry>
91 </row>
92 </tbody>
93 </tgroup>
94 </informaltable>
95 </para>
96 </formalpara>
97 </example>
98 </refsect1>
99</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
deleted file mode 100644
index 0c8e4adf417f..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb12.xml
+++ /dev/null
@@ -1,90 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB12 ('RG12'),
4 V4L2_PIX_FMT_SGRBG12 ('BA12'),
5 V4L2_PIX_FMT_SGBRG12 ('GB12'),
6 V4L2_PIX_FMT_SBGGR12 ('BG12'),
7 </refentrytitle>
8 &manvol;
9 </refmeta>
10 <refnamediv>
11 <refname id="V4L2-PIX-FMT-SRGGB12"><constant>V4L2_PIX_FMT_SRGGB12</constant></refname>
12 <refname id="V4L2-PIX-FMT-SGRBG12"><constant>V4L2_PIX_FMT_SGRBG12</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG12"><constant>V4L2_PIX_FMT_SGBRG12</constant></refname>
14 <refname id="V4L2-PIX-FMT-SBGGR12"><constant>V4L2_PIX_FMT_SBGGR12</constant></refname>
15 <refpurpose>12-bit Bayer formats expanded to 16 bits</refpurpose>
16 </refnamediv>
17 <refsect1>
18 <title>Description</title>
19
20 <para>These four pixel formats are raw sRGB / Bayer formats with
2112 bits per colour. Each colour component is stored in a 16-bit word, with 4
22unused high bits filled with zeros. Each n-pixel row contains n/2 green samples
23and n/2 blue or red samples, with alternating red and blue rows. Bytes are
24stored in memory in little endian order. They are conventionally described
25as GRGR... BGBG..., RGRG... GBGB..., etc. Below is an example of one of these
26formats</para>
27
28 <example>
29 <title><constant>V4L2_PIX_FMT_SBGGR12</constant> 4 &times; 4
30pixel image</title>
31
32 <formalpara>
33 <title>Byte Order.</title>
34 <para>Each cell is one byte, high 6 bits in high bytes are 0.
35 <informaltable frame="none">
36 <tgroup cols="5" align="center">
37 <colspec align="left" colwidth="2*" />
38 <tbody valign="top">
39 <row>
40 <entry>start&nbsp;+&nbsp;0:</entry>
41 <entry>B<subscript>00low</subscript></entry>
42 <entry>B<subscript>00high</subscript></entry>
43 <entry>G<subscript>01low</subscript></entry>
44 <entry>G<subscript>01high</subscript></entry>
45 <entry>B<subscript>02low</subscript></entry>
46 <entry>B<subscript>02high</subscript></entry>
47 <entry>G<subscript>03low</subscript></entry>
48 <entry>G<subscript>03high</subscript></entry>
49 </row>
50 <row>
51 <entry>start&nbsp;+&nbsp;8:</entry>
52 <entry>G<subscript>10low</subscript></entry>
53 <entry>G<subscript>10high</subscript></entry>
54 <entry>R<subscript>11low</subscript></entry>
55 <entry>R<subscript>11high</subscript></entry>
56 <entry>G<subscript>12low</subscript></entry>
57 <entry>G<subscript>12high</subscript></entry>
58 <entry>R<subscript>13low</subscript></entry>
59 <entry>R<subscript>13high</subscript></entry>
60 </row>
61 <row>
62 <entry>start&nbsp;+&nbsp;16:</entry>
63 <entry>B<subscript>20low</subscript></entry>
64 <entry>B<subscript>20high</subscript></entry>
65 <entry>G<subscript>21low</subscript></entry>
66 <entry>G<subscript>21high</subscript></entry>
67 <entry>B<subscript>22low</subscript></entry>
68 <entry>B<subscript>22high</subscript></entry>
69 <entry>G<subscript>23low</subscript></entry>
70 <entry>G<subscript>23high</subscript></entry>
71 </row>
72 <row>
73 <entry>start&nbsp;+&nbsp;24:</entry>
74 <entry>G<subscript>30low</subscript></entry>
75 <entry>G<subscript>30high</subscript></entry>
76 <entry>R<subscript>31low</subscript></entry>
77 <entry>R<subscript>31high</subscript></entry>
78 <entry>G<subscript>32low</subscript></entry>
79 <entry>G<subscript>32high</subscript></entry>
80 <entry>R<subscript>33low</subscript></entry>
81 <entry>R<subscript>33high</subscript></entry>
82 </row>
83 </tbody>
84 </tgroup>
85 </informaltable>
86 </para>
87 </formalpara>
88 </example>
89 </refsect1>
90</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml
deleted file mode 100644
index 2570e3be3cf1..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb8.xml
+++ /dev/null
@@ -1,67 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-SRGGB8">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB8 ('RGGB')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_SRGGB8</constant></refname>
8 <refpurpose>Bayer RGB format</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is commonly the native format of digital cameras,
14reflecting the arrangement of sensors on the CCD device. Only one red,
15green or blue value is given for each pixel. Missing components must
16be interpolated from neighbouring pixels. From left to right the first
17row consists of a red and green value, the second row of a green and
18blue value. This scheme repeats to the right and down for every two
19columns and rows.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_SRGGB8</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="5" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>R<subscript>00</subscript></entry>
35 <entry>G<subscript>01</subscript></entry>
36 <entry>R<subscript>02</subscript></entry>
37 <entry>G<subscript>03</subscript></entry>
38 </row>
39 <row>
40 <entry>start&nbsp;+&nbsp;4:</entry>
41 <entry>G<subscript>10</subscript></entry>
42 <entry>B<subscript>11</subscript></entry>
43 <entry>G<subscript>12</subscript></entry>
44 <entry>B<subscript>13</subscript></entry>
45 </row>
46 <row>
47 <entry>start&nbsp;+&nbsp;8:</entry>
48 <entry>R<subscript>20</subscript></entry>
49 <entry>G<subscript>21</subscript></entry>
50 <entry>R<subscript>22</subscript></entry>
51 <entry>G<subscript>23</subscript></entry>
52 </row>
53 <row>
54 <entry>start&nbsp;+&nbsp;12:</entry>
55 <entry>G<subscript>30</subscript></entry>
56 <entry>B<subscript>31</subscript></entry>
57 <entry>G<subscript>32</subscript></entry>
58 <entry>B<subscript>33</subscript></entry>
59 </row>
60 </tbody>
61 </tgroup>
62 </informaltable>
63 </para>
64 </formalpara>
65 </example>
66 </refsect1>
67 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-uv8.xml b/Documentation/DocBook/media/v4l/pixfmt-uv8.xml
deleted file mode 100644
index c507c1f73cd0..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-uv8.xml
+++ /dev/null
@@ -1,62 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-UV8">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_UV8 ('UV8')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_UV8</constant></refname>
8 <refpurpose>UV plane interleaved</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12 <para>In this format there is no Y plane, Only CbCr plane. ie
13 (UV interleaved)</para>
14 <example>
15 <title>
16 <constant>V4L2_PIX_FMT_UV8</constant>
17 pixel image
18 </title>
19
20 <formalpara>
21 <title>Byte Order.</title>
22 <para>Each cell is one byte.
23 <informaltable frame="none">
24 <tgroup cols="5" align="center">
25 <colspec align="left" colwidth="2*" />
26 <tbody valign="top">
27 <row>
28 <entry>start&nbsp;+&nbsp;0:</entry>
29 <entry>Cb<subscript>00</subscript></entry>
30 <entry>Cr<subscript>00</subscript></entry>
31 <entry>Cb<subscript>01</subscript></entry>
32 <entry>Cr<subscript>01</subscript></entry>
33 </row>
34 <row>
35 <entry>start&nbsp;+&nbsp;4:</entry>
36 <entry>Cb<subscript>10</subscript></entry>
37 <entry>Cr<subscript>10</subscript></entry>
38 <entry>Cb<subscript>11</subscript></entry>
39 <entry>Cr<subscript>11</subscript></entry>
40 </row>
41 <row>
42 <entry>start&nbsp;+&nbsp;8:</entry>
43 <entry>Cb<subscript>20</subscript></entry>
44 <entry>Cr<subscript>20</subscript></entry>
45 <entry>Cb<subscript>21</subscript></entry>
46 <entry>Cr<subscript>21</subscript></entry>
47 </row>
48 <row>
49 <entry>start&nbsp;+&nbsp;12:</entry>
50 <entry>Cb<subscript>30</subscript></entry>
51 <entry>Cr<subscript>30</subscript></entry>
52 <entry>Cb<subscript>31</subscript></entry>
53 <entry>Cr<subscript>31</subscript></entry>
54 </row>
55 </tbody>
56 </tgroup>
57 </informaltable>
58 </para>
59 </formalpara>
60 </example>
61 </refsect1>
62 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml b/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml
deleted file mode 100644
index b1f6801a17ff..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-uyvy.xml
+++ /dev/null
@@ -1,120 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-UYVY">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_UYVY ('UYVY')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_UYVY</constant></refname>
8 <refpurpose>Variation of
9<constant>V4L2_PIX_FMT_YUYV</constant> with different order of samples
10in memory</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>In this format each four bytes is two pixels. Each four
16bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and
17the Cb and Cr belong to both pixels. As you can see, the Cr and Cb
18components have half the horizontal resolution of the Y
19component.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_UYVY</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="9" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>Cb<subscript>00</subscript></entry>
35 <entry>Y'<subscript>00</subscript></entry>
36 <entry>Cr<subscript>00</subscript></entry>
37 <entry>Y'<subscript>01</subscript></entry>
38 <entry>Cb<subscript>01</subscript></entry>
39 <entry>Y'<subscript>02</subscript></entry>
40 <entry>Cr<subscript>01</subscript></entry>
41 <entry>Y'<subscript>03</subscript></entry>
42 </row>
43 <row>
44 <entry>start&nbsp;+&nbsp;8:</entry>
45 <entry>Cb<subscript>10</subscript></entry>
46 <entry>Y'<subscript>10</subscript></entry>
47 <entry>Cr<subscript>10</subscript></entry>
48 <entry>Y'<subscript>11</subscript></entry>
49 <entry>Cb<subscript>11</subscript></entry>
50 <entry>Y'<subscript>12</subscript></entry>
51 <entry>Cr<subscript>11</subscript></entry>
52 <entry>Y'<subscript>13</subscript></entry>
53 </row>
54 <row>
55 <entry>start&nbsp;+&nbsp;16:</entry>
56 <entry>Cb<subscript>20</subscript></entry>
57 <entry>Y'<subscript>20</subscript></entry>
58 <entry>Cr<subscript>20</subscript></entry>
59 <entry>Y'<subscript>21</subscript></entry>
60 <entry>Cb<subscript>21</subscript></entry>
61 <entry>Y'<subscript>22</subscript></entry>
62 <entry>Cr<subscript>21</subscript></entry>
63 <entry>Y'<subscript>23</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;24:</entry>
67 <entry>Cb<subscript>30</subscript></entry>
68 <entry>Y'<subscript>30</subscript></entry>
69 <entry>Cr<subscript>30</subscript></entry>
70 <entry>Y'<subscript>31</subscript></entry>
71 <entry>Cb<subscript>31</subscript></entry>
72 <entry>Y'<subscript>32</subscript></entry>
73 <entry>Cr<subscript>31</subscript></entry>
74 <entry>Y'<subscript>33</subscript></entry>
75 </row>
76 </tbody>
77 </tgroup>
78 </informaltable>
79 </para>
80 </formalpara>
81
82 <formalpara>
83 <title>Color Sample Location.</title>
84 <para>
85 <informaltable frame="none">
86 <tgroup cols="7" align="center">
87 <tbody valign="top">
88 <row>
89 <entry></entry>
90 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
91 <entry>2</entry><entry></entry><entry>3</entry>
92 </row>
93 <row>
94 <entry>0</entry>
95 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
96 <entry>Y</entry><entry>C</entry><entry>Y</entry>
97 </row>
98 <row>
99 <entry>1</entry>
100 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
101 <entry>Y</entry><entry>C</entry><entry>Y</entry>
102 </row>
103 <row>
104 <entry>2</entry>
105 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
106 <entry>Y</entry><entry>C</entry><entry>Y</entry>
107 </row>
108 <row>
109 <entry>3</entry>
110 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
111 <entry>Y</entry><entry>C</entry><entry>Y</entry>
112 </row>
113 </tbody>
114 </tgroup>
115 </informaltable>
116 </para>
117 </formalpara>
118 </example>
119 </refsect1>
120 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml b/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml
deleted file mode 100644
index 82803408b389..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-vyuy.xml
+++ /dev/null
@@ -1,120 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-VYUY">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_VYUY ('VYUY')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_VYUY</constant></refname>
8 <refpurpose>Variation of
9<constant>V4L2_PIX_FMT_YUYV</constant> with different order of samples
10in memory</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>In this format each four bytes is two pixels. Each four
16bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and
17the Cb and Cr belong to both pixels. As you can see, the Cr and Cb
18components have half the horizontal resolution of the Y
19component.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_VYUY</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="9" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>Cr<subscript>00</subscript></entry>
35 <entry>Y'<subscript>00</subscript></entry>
36 <entry>Cb<subscript>00</subscript></entry>
37 <entry>Y'<subscript>01</subscript></entry>
38 <entry>Cr<subscript>01</subscript></entry>
39 <entry>Y'<subscript>02</subscript></entry>
40 <entry>Cb<subscript>01</subscript></entry>
41 <entry>Y'<subscript>03</subscript></entry>
42 </row>
43 <row>
44 <entry>start&nbsp;+&nbsp;8:</entry>
45 <entry>Cr<subscript>10</subscript></entry>
46 <entry>Y'<subscript>10</subscript></entry>
47 <entry>Cb<subscript>10</subscript></entry>
48 <entry>Y'<subscript>11</subscript></entry>
49 <entry>Cr<subscript>11</subscript></entry>
50 <entry>Y'<subscript>12</subscript></entry>
51 <entry>Cb<subscript>11</subscript></entry>
52 <entry>Y'<subscript>13</subscript></entry>
53 </row>
54 <row>
55 <entry>start&nbsp;+&nbsp;16:</entry>
56 <entry>Cr<subscript>20</subscript></entry>
57 <entry>Y'<subscript>20</subscript></entry>
58 <entry>Cb<subscript>20</subscript></entry>
59 <entry>Y'<subscript>21</subscript></entry>
60 <entry>Cr<subscript>21</subscript></entry>
61 <entry>Y'<subscript>22</subscript></entry>
62 <entry>Cb<subscript>21</subscript></entry>
63 <entry>Y'<subscript>23</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;24:</entry>
67 <entry>Cr<subscript>30</subscript></entry>
68 <entry>Y'<subscript>30</subscript></entry>
69 <entry>Cb<subscript>30</subscript></entry>
70 <entry>Y'<subscript>31</subscript></entry>
71 <entry>Cr<subscript>31</subscript></entry>
72 <entry>Y'<subscript>32</subscript></entry>
73 <entry>Cb<subscript>31</subscript></entry>
74 <entry>Y'<subscript>33</subscript></entry>
75 </row>
76 </tbody>
77 </tgroup>
78 </informaltable>
79 </para>
80 </formalpara>
81
82 <formalpara>
83 <title>Color Sample Location.</title>
84 <para>
85 <informaltable frame="none">
86 <tgroup cols="7" align="center">
87 <tbody valign="top">
88 <row>
89 <entry></entry>
90 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
91 <entry>2</entry><entry></entry><entry>3</entry>
92 </row>
93 <row>
94 <entry>0</entry>
95 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
96 <entry>Y</entry><entry>C</entry><entry>Y</entry>
97 </row>
98 <row>
99 <entry>1</entry>
100 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
101 <entry>Y</entry><entry>C</entry><entry>Y</entry>
102 </row>
103 <row>
104 <entry>2</entry>
105 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
106 <entry>Y</entry><entry>C</entry><entry>Y</entry>
107 </row>
108 <row>
109 <entry>3</entry>
110 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
111 <entry>Y</entry><entry>C</entry><entry>Y</entry>
112 </row>
113 </tbody>
114 </tgroup>
115 </informaltable>
116 </para>
117 </formalpara>
118 </example>
119 </refsect1>
120 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y10.xml b/Documentation/DocBook/media/v4l/pixfmt-y10.xml
deleted file mode 100644
index d065043db8d8..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y10.xml
+++ /dev/null
@@ -1,79 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y10">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y10 ('Y10 ')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y10</constant></refname>
8 <refpurpose>Grey-scale image</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image with a depth of 10 bits per pixel. Pixels
14are stored in 16-bit words with unused high bits padded with 0. The least
15significant byte is stored at lower memory addresses (little-endian).</para>
16
17 <example>
18 <title><constant>V4L2_PIX_FMT_Y10</constant> 4 &times; 4
19pixel image</title>
20
21 <formalpara>
22 <title>Byte Order.</title>
23 <para>Each cell is one byte.
24 <informaltable frame="none">
25 <tgroup cols="9" align="center">
26 <colspec align="left" colwidth="2*" />
27 <tbody valign="top">
28 <row>
29 <entry>start&nbsp;+&nbsp;0:</entry>
30 <entry>Y'<subscript>00low</subscript></entry>
31 <entry>Y'<subscript>00high</subscript></entry>
32 <entry>Y'<subscript>01low</subscript></entry>
33 <entry>Y'<subscript>01high</subscript></entry>
34 <entry>Y'<subscript>02low</subscript></entry>
35 <entry>Y'<subscript>02high</subscript></entry>
36 <entry>Y'<subscript>03low</subscript></entry>
37 <entry>Y'<subscript>03high</subscript></entry>
38 </row>
39 <row>
40 <entry>start&nbsp;+&nbsp;8:</entry>
41 <entry>Y'<subscript>10low</subscript></entry>
42 <entry>Y'<subscript>10high</subscript></entry>
43 <entry>Y'<subscript>11low</subscript></entry>
44 <entry>Y'<subscript>11high</subscript></entry>
45 <entry>Y'<subscript>12low</subscript></entry>
46 <entry>Y'<subscript>12high</subscript></entry>
47 <entry>Y'<subscript>13low</subscript></entry>
48 <entry>Y'<subscript>13high</subscript></entry>
49 </row>
50 <row>
51 <entry>start&nbsp;+&nbsp;16:</entry>
52 <entry>Y'<subscript>20low</subscript></entry>
53 <entry>Y'<subscript>20high</subscript></entry>
54 <entry>Y'<subscript>21low</subscript></entry>
55 <entry>Y'<subscript>21high</subscript></entry>
56 <entry>Y'<subscript>22low</subscript></entry>
57 <entry>Y'<subscript>22high</subscript></entry>
58 <entry>Y'<subscript>23low</subscript></entry>
59 <entry>Y'<subscript>23high</subscript></entry>
60 </row>
61 <row>
62 <entry>start&nbsp;+&nbsp;24:</entry>
63 <entry>Y'<subscript>30low</subscript></entry>
64 <entry>Y'<subscript>30high</subscript></entry>
65 <entry>Y'<subscript>31low</subscript></entry>
66 <entry>Y'<subscript>31high</subscript></entry>
67 <entry>Y'<subscript>32low</subscript></entry>
68 <entry>Y'<subscript>32high</subscript></entry>
69 <entry>Y'<subscript>33low</subscript></entry>
70 <entry>Y'<subscript>33high</subscript></entry>
71 </row>
72 </tbody>
73 </tgroup>
74 </informaltable>
75 </para>
76 </formalpara>
77 </example>
78 </refsect1>
79</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y10b.xml b/Documentation/DocBook/media/v4l/pixfmt-y10b.xml
deleted file mode 100644
index adb0ad808c93..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y10b.xml
+++ /dev/null
@@ -1,43 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y10BPACK">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y10BPACK ('Y10B')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y10BPACK</constant></refname>
8 <refpurpose>Grey-scale image as a bit-packed array</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a packed grey-scale image format with a depth of 10 bits per
14 pixel. Pixels are stored in a bit-packed array of 10bit bits per pixel,
15 with no padding between them and with the most significant bits coming
16 first from the left.</para>
17
18 <example>
19 <title><constant>V4L2_PIX_FMT_Y10BPACK</constant> 4 pixel data stream taking 5 bytes</title>
20
21 <formalpara>
22 <title>Bit-packed representation</title>
23 <para>pixels cross the byte boundary and have a ratio of 5 bytes for each 4
24 pixels.
25 <informaltable frame="all">
26 <tgroup cols="5" align="center">
27 <colspec align="left" colwidth="2*" />
28 <tbody valign="top">
29 <row>
30 <entry>Y'<subscript>00[9:2]</subscript></entry>
31 <entry>Y'<subscript>00[1:0]</subscript>Y'<subscript>01[9:4]</subscript></entry>
32 <entry>Y'<subscript>01[3:0]</subscript>Y'<subscript>02[9:6]</subscript></entry>
33 <entry>Y'<subscript>02[5:0]</subscript>Y'<subscript>03[9:8]</subscript></entry>
34 <entry>Y'<subscript>03[7:0]</subscript></entry>
35 </row>
36 </tbody>
37 </tgroup>
38 </informaltable>
39 </para>
40 </formalpara>
41 </example>
42 </refsect1>
43</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y12.xml b/Documentation/DocBook/media/v4l/pixfmt-y12.xml
deleted file mode 100644
index ff417b858cc9..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y12.xml
+++ /dev/null
@@ -1,79 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y12">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y12 ('Y12 ')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y12</constant></refname>
8 <refpurpose>Grey-scale image</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image with a depth of 12 bits per pixel. Pixels
14are stored in 16-bit words with unused high bits padded with 0. The least
15significant byte is stored at lower memory addresses (little-endian).</para>
16
17 <example>
18 <title><constant>V4L2_PIX_FMT_Y12</constant> 4 &times; 4
19pixel image</title>
20
21 <formalpara>
22 <title>Byte Order.</title>
23 <para>Each cell is one byte.
24 <informaltable frame="none">
25 <tgroup cols="9" align="center">
26 <colspec align="left" colwidth="2*" />
27 <tbody valign="top">
28 <row>
29 <entry>start&nbsp;+&nbsp;0:</entry>
30 <entry>Y'<subscript>00low</subscript></entry>
31 <entry>Y'<subscript>00high</subscript></entry>
32 <entry>Y'<subscript>01low</subscript></entry>
33 <entry>Y'<subscript>01high</subscript></entry>
34 <entry>Y'<subscript>02low</subscript></entry>
35 <entry>Y'<subscript>02high</subscript></entry>
36 <entry>Y'<subscript>03low</subscript></entry>
37 <entry>Y'<subscript>03high</subscript></entry>
38 </row>
39 <row>
40 <entry>start&nbsp;+&nbsp;8:</entry>
41 <entry>Y'<subscript>10low</subscript></entry>
42 <entry>Y'<subscript>10high</subscript></entry>
43 <entry>Y'<subscript>11low</subscript></entry>
44 <entry>Y'<subscript>11high</subscript></entry>
45 <entry>Y'<subscript>12low</subscript></entry>
46 <entry>Y'<subscript>12high</subscript></entry>
47 <entry>Y'<subscript>13low</subscript></entry>
48 <entry>Y'<subscript>13high</subscript></entry>
49 </row>
50 <row>
51 <entry>start&nbsp;+&nbsp;16:</entry>
52 <entry>Y'<subscript>20low</subscript></entry>
53 <entry>Y'<subscript>20high</subscript></entry>
54 <entry>Y'<subscript>21low</subscript></entry>
55 <entry>Y'<subscript>21high</subscript></entry>
56 <entry>Y'<subscript>22low</subscript></entry>
57 <entry>Y'<subscript>22high</subscript></entry>
58 <entry>Y'<subscript>23low</subscript></entry>
59 <entry>Y'<subscript>23high</subscript></entry>
60 </row>
61 <row>
62 <entry>start&nbsp;+&nbsp;24:</entry>
63 <entry>Y'<subscript>30low</subscript></entry>
64 <entry>Y'<subscript>30high</subscript></entry>
65 <entry>Y'<subscript>31low</subscript></entry>
66 <entry>Y'<subscript>31high</subscript></entry>
67 <entry>Y'<subscript>32low</subscript></entry>
68 <entry>Y'<subscript>32high</subscript></entry>
69 <entry>Y'<subscript>33low</subscript></entry>
70 <entry>Y'<subscript>33high</subscript></entry>
71 </row>
72 </tbody>
73 </tgroup>
74 </informaltable>
75 </para>
76 </formalpara>
77 </example>
78 </refsect1>
79</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y12i.xml b/Documentation/DocBook/media/v4l/pixfmt-y12i.xml
deleted file mode 100644
index 4a2d1e5f67e4..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y12i.xml
+++ /dev/null
@@ -1,49 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y12I">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y12I ('Y12I')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y12I</constant></refname>
8 <refpurpose>Interleaved grey-scale image, e.g. from a stereo-pair</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image with a depth of 12 bits per pixel, but with
14pixels from 2 sources interleaved and bit-packed. Each pixel is stored in a
1524-bit word in the little-endian order. On a little-endian machine these pixels
16can be deinterlaced using</para>
17
18<para>
19<programlisting>
20__u8 *buf;
21left0 = 0xfff &amp; *(__u16 *)buf;
22right0 = *(__u16 *)(buf + 1) >> 4;
23</programlisting>
24</para>
25
26 <example>
27 <title><constant>V4L2_PIX_FMT_Y12I</constant> 2 pixel data stream taking 3 bytes</title>
28
29 <formalpara>
30 <title>Bit-packed representation</title>
31 <para>pixels cross the byte boundary and have a ratio of 3 bytes for each
32 interleaved pixel.
33 <informaltable frame="all">
34 <tgroup cols="3" align="center">
35 <colspec align="left" colwidth="2*" />
36 <tbody valign="top">
37 <row>
38 <entry>Y'<subscript>0left[7:0]</subscript></entry>
39 <entry>Y'<subscript>0right[3:0]</subscript>Y'<subscript>0left[11:8]</subscript></entry>
40 <entry>Y'<subscript>0right[11:4]</subscript></entry>
41 </row>
42 </tbody>
43 </tgroup>
44 </informaltable>
45 </para>
46 </formalpara>
47 </example>
48 </refsect1>
49</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y16-be.xml b/Documentation/DocBook/media/v4l/pixfmt-y16-be.xml
deleted file mode 100644
index cea53e1eaa43..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y16-be.xml
+++ /dev/null
@@ -1,81 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y16-BE">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y16_BE ('Y16 ' | (1 &lt;&lt; 31))</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y16_BE</constant></refname>
8 <refpurpose>Grey-scale image</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image with a depth of 16 bits per
14pixel. The most significant byte is stored at lower memory addresses
15(big-endian). Note the actual sampling precision may be lower than
1616 bits, for example 10 bits per pixel with values in range 0 to
171023.</para>
18
19 <example>
20 <title><constant>V4L2_PIX_FMT_Y16_BE</constant> 4 &times; 4
21pixel image</title>
22
23 <formalpara>
24 <title>Byte Order.</title>
25 <para>Each cell is one byte.
26 <informaltable frame="none">
27 <tgroup cols="9" align="center">
28 <colspec align="left" colwidth="2*" />
29 <tbody valign="top">
30 <row>
31 <entry>start&nbsp;+&nbsp;0:</entry>
32 <entry>Y'<subscript>00high</subscript></entry>
33 <entry>Y'<subscript>00low</subscript></entry>
34 <entry>Y'<subscript>01high</subscript></entry>
35 <entry>Y'<subscript>01low</subscript></entry>
36 <entry>Y'<subscript>02high</subscript></entry>
37 <entry>Y'<subscript>02low</subscript></entry>
38 <entry>Y'<subscript>03high</subscript></entry>
39 <entry>Y'<subscript>03low</subscript></entry>
40 </row>
41 <row>
42 <entry>start&nbsp;+&nbsp;8:</entry>
43 <entry>Y'<subscript>10high</subscript></entry>
44 <entry>Y'<subscript>10low</subscript></entry>
45 <entry>Y'<subscript>11high</subscript></entry>
46 <entry>Y'<subscript>11low</subscript></entry>
47 <entry>Y'<subscript>12high</subscript></entry>
48 <entry>Y'<subscript>12low</subscript></entry>
49 <entry>Y'<subscript>13high</subscript></entry>
50 <entry>Y'<subscript>13low</subscript></entry>
51 </row>
52 <row>
53 <entry>start&nbsp;+&nbsp;16:</entry>
54 <entry>Y'<subscript>20high</subscript></entry>
55 <entry>Y'<subscript>20low</subscript></entry>
56 <entry>Y'<subscript>21high</subscript></entry>
57 <entry>Y'<subscript>21low</subscript></entry>
58 <entry>Y'<subscript>22high</subscript></entry>
59 <entry>Y'<subscript>22low</subscript></entry>
60 <entry>Y'<subscript>23high</subscript></entry>
61 <entry>Y'<subscript>23low</subscript></entry>
62 </row>
63 <row>
64 <entry>start&nbsp;+&nbsp;24:</entry>
65 <entry>Y'<subscript>30high</subscript></entry>
66 <entry>Y'<subscript>30low</subscript></entry>
67 <entry>Y'<subscript>31high</subscript></entry>
68 <entry>Y'<subscript>31low</subscript></entry>
69 <entry>Y'<subscript>32high</subscript></entry>
70 <entry>Y'<subscript>32low</subscript></entry>
71 <entry>Y'<subscript>33high</subscript></entry>
72 <entry>Y'<subscript>33low</subscript></entry>
73 </row>
74 </tbody>
75 </tgroup>
76 </informaltable>
77 </para>
78 </formalpara>
79 </example>
80 </refsect1>
81</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y16.xml b/Documentation/DocBook/media/v4l/pixfmt-y16.xml
deleted file mode 100644
index ff4f727d5624..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y16.xml
+++ /dev/null
@@ -1,81 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y16">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y16 ('Y16 ')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y16</constant></refname>
8 <refpurpose>Grey-scale image</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image with a depth of 16 bits per
14pixel. The least significant byte is stored at lower memory addresses
15(little-endian). Note the actual sampling precision may be lower than
1616 bits, for example 10 bits per pixel with values in range 0 to
171023.</para>
18
19 <example>
20 <title><constant>V4L2_PIX_FMT_Y16</constant> 4 &times; 4
21pixel image</title>
22
23 <formalpara>
24 <title>Byte Order.</title>
25 <para>Each cell is one byte.
26 <informaltable frame="none">
27 <tgroup cols="9" align="center">
28 <colspec align="left" colwidth="2*" />
29 <tbody valign="top">
30 <row>
31 <entry>start&nbsp;+&nbsp;0:</entry>
32 <entry>Y'<subscript>00low</subscript></entry>
33 <entry>Y'<subscript>00high</subscript></entry>
34 <entry>Y'<subscript>01low</subscript></entry>
35 <entry>Y'<subscript>01high</subscript></entry>
36 <entry>Y'<subscript>02low</subscript></entry>
37 <entry>Y'<subscript>02high</subscript></entry>
38 <entry>Y'<subscript>03low</subscript></entry>
39 <entry>Y'<subscript>03high</subscript></entry>
40 </row>
41 <row>
42 <entry>start&nbsp;+&nbsp;8:</entry>
43 <entry>Y'<subscript>10low</subscript></entry>
44 <entry>Y'<subscript>10high</subscript></entry>
45 <entry>Y'<subscript>11low</subscript></entry>
46 <entry>Y'<subscript>11high</subscript></entry>
47 <entry>Y'<subscript>12low</subscript></entry>
48 <entry>Y'<subscript>12high</subscript></entry>
49 <entry>Y'<subscript>13low</subscript></entry>
50 <entry>Y'<subscript>13high</subscript></entry>
51 </row>
52 <row>
53 <entry>start&nbsp;+&nbsp;16:</entry>
54 <entry>Y'<subscript>20low</subscript></entry>
55 <entry>Y'<subscript>20high</subscript></entry>
56 <entry>Y'<subscript>21low</subscript></entry>
57 <entry>Y'<subscript>21high</subscript></entry>
58 <entry>Y'<subscript>22low</subscript></entry>
59 <entry>Y'<subscript>22high</subscript></entry>
60 <entry>Y'<subscript>23low</subscript></entry>
61 <entry>Y'<subscript>23high</subscript></entry>
62 </row>
63 <row>
64 <entry>start&nbsp;+&nbsp;24:</entry>
65 <entry>Y'<subscript>30low</subscript></entry>
66 <entry>Y'<subscript>30high</subscript></entry>
67 <entry>Y'<subscript>31low</subscript></entry>
68 <entry>Y'<subscript>31high</subscript></entry>
69 <entry>Y'<subscript>32low</subscript></entry>
70 <entry>Y'<subscript>32high</subscript></entry>
71 <entry>Y'<subscript>33low</subscript></entry>
72 <entry>Y'<subscript>33high</subscript></entry>
73 </row>
74 </tbody>
75 </tgroup>
76 </informaltable>
77 </para>
78 </formalpara>
79 </example>
80 </refsect1>
81</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y41p.xml b/Documentation/DocBook/media/v4l/pixfmt-y41p.xml
deleted file mode 100644
index 98dcb91d2917..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y41p.xml
+++ /dev/null
@@ -1,149 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-Y41P">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y41P ('Y41P')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y41P</constant></refname>
8 <refpurpose>Format with &frac14; horizontal chroma
9resolution, also known as YUV 4:1:1</refpurpose>
10 </refnamediv>
11 <refsect1>
12 <title>Description</title>
13
14 <para>In this format each 12 bytes is eight pixels. In the
15twelve bytes are two CbCr pairs and eight Y's. The first CbCr pair
16goes with the first four Y's, and the second CbCr pair goes with the
17other four Y's. The Cb and Cr components have one fourth the
18horizontal resolution of the Y component.</para>
19
20 <para>Do not confuse this format with <link
21linkend="V4L2-PIX-FMT-YUV411P"><constant>V4L2_PIX_FMT_YUV411P</constant></link>.
22Y41P is derived from "YUV 4:1:1 <emphasis>packed</emphasis>", while
23YUV411P stands for "YUV 4:1:1 <emphasis>planar</emphasis>".</para>
24
25 <example>
26 <title><constant>V4L2_PIX_FMT_Y41P</constant> 8 &times; 4
27pixel image</title>
28
29 <formalpara>
30 <title>Byte Order</title>
31 <para>Each cell is one byte.
32 <informaltable frame="none">
33 <tgroup cols="13" align="center">
34 <colspec align="left" colwidth="2*" />
35 <tbody valign="top">
36 <row>
37 <entry>start&nbsp;+&nbsp;0:</entry>
38 <entry>Cb<subscript>00</subscript></entry>
39 <entry>Y'<subscript>00</subscript></entry>
40 <entry>Cr<subscript>00</subscript></entry>
41 <entry>Y'<subscript>01</subscript></entry>
42 <entry>Cb<subscript>01</subscript></entry>
43 <entry>Y'<subscript>02</subscript></entry>
44 <entry>Cr<subscript>01</subscript></entry>
45 <entry>Y'<subscript>03</subscript></entry>
46 <entry>Y'<subscript>04</subscript></entry>
47 <entry>Y'<subscript>05</subscript></entry>
48 <entry>Y'<subscript>06</subscript></entry>
49 <entry>Y'<subscript>07</subscript></entry>
50 </row>
51 <row>
52 <entry>start&nbsp;+&nbsp;12:</entry>
53 <entry>Cb<subscript>10</subscript></entry>
54 <entry>Y'<subscript>10</subscript></entry>
55 <entry>Cr<subscript>10</subscript></entry>
56 <entry>Y'<subscript>11</subscript></entry>
57 <entry>Cb<subscript>11</subscript></entry>
58 <entry>Y'<subscript>12</subscript></entry>
59 <entry>Cr<subscript>11</subscript></entry>
60 <entry>Y'<subscript>13</subscript></entry>
61 <entry>Y'<subscript>14</subscript></entry>
62 <entry>Y'<subscript>15</subscript></entry>
63 <entry>Y'<subscript>16</subscript></entry>
64 <entry>Y'<subscript>17</subscript></entry>
65 </row>
66 <row>
67 <entry>start&nbsp;+&nbsp;24:</entry>
68 <entry>Cb<subscript>20</subscript></entry>
69 <entry>Y'<subscript>20</subscript></entry>
70 <entry>Cr<subscript>20</subscript></entry>
71 <entry>Y'<subscript>21</subscript></entry>
72 <entry>Cb<subscript>21</subscript></entry>
73 <entry>Y'<subscript>22</subscript></entry>
74 <entry>Cr<subscript>21</subscript></entry>
75 <entry>Y'<subscript>23</subscript></entry>
76 <entry>Y'<subscript>24</subscript></entry>
77 <entry>Y'<subscript>25</subscript></entry>
78 <entry>Y'<subscript>26</subscript></entry>
79 <entry>Y'<subscript>27</subscript></entry>
80 </row>
81 <row>
82 <entry>start&nbsp;+&nbsp;36:</entry>
83 <entry>Cb<subscript>30</subscript></entry>
84 <entry>Y'<subscript>30</subscript></entry>
85 <entry>Cr<subscript>30</subscript></entry>
86 <entry>Y'<subscript>31</subscript></entry>
87 <entry>Cb<subscript>31</subscript></entry>
88 <entry>Y'<subscript>32</subscript></entry>
89 <entry>Cr<subscript>31</subscript></entry>
90 <entry>Y'<subscript>33</subscript></entry>
91 <entry>Y'<subscript>34</subscript></entry>
92 <entry>Y'<subscript>35</subscript></entry>
93 <entry>Y'<subscript>36</subscript></entry>
94 <entry>Y'<subscript>37</subscript></entry>
95 </row>
96 </tbody>
97 </tgroup>
98 </informaltable></para>
99 </formalpara>
100
101 <formalpara>
102 <title>Color Sample Location.</title>
103 <para>
104 <informaltable frame="none">
105 <tgroup cols="15" align="center">
106 <tbody valign="top">
107 <row>
108 <entry></entry>
109 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
110 <entry>2</entry><entry></entry><entry>3</entry><entry></entry>
111 <entry>4</entry><entry></entry><entry>5</entry><entry></entry>
112 <entry>6</entry><entry></entry><entry>7</entry>
113 </row>
114 <row>
115 <entry>0</entry>
116 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
117 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
118 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
119 <entry>Y</entry><entry></entry><entry>Y</entry>
120 </row>
121 <row>
122 <entry>1</entry>
123 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
124 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
125 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
126 <entry>Y</entry><entry></entry><entry>Y</entry>
127 </row>
128 <row>
129 <entry>2</entry>
130 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
131 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
132 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
133 <entry>Y</entry><entry></entry><entry>Y</entry>
134 </row>
135 <row>
136 <entry>3</entry>
137 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
138 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
139 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
140 <entry>Y</entry><entry></entry><entry>Y</entry>
141 </row>
142 </tbody>
143 </tgroup>
144 </informaltable>
145 </para>
146 </formalpara>
147 </example>
148 </refsect1>
149 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-y8i.xml b/Documentation/DocBook/media/v4l/pixfmt-y8i.xml
deleted file mode 100644
index 99f389d4c6c8..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-y8i.xml
+++ /dev/null
@@ -1,80 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Y8I">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Y8I ('Y8I ')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Y8I</constant></refname>
8 <refpurpose>Interleaved grey-scale image, e.g. from a stereo-pair</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a grey-scale image with a depth of 8 bits per pixel, but with
14pixels from 2 sources interleaved. Each pixel is stored in a 16-bit word. E.g.
15the R200 RealSense camera stores pixel from the left sensor in lower and from
16the right sensor in the higher 8 bits.</para>
17
18 <example>
19 <title><constant>V4L2_PIX_FMT_Y8I</constant> 4 &times; 4
20pixel image</title>
21
22 <formalpara>
23 <title>Byte Order.</title>
24 <para>Each cell is one byte.
25 <informaltable frame="none">
26 <tgroup cols="9" align="center">
27 <colspec align="left" colwidth="2*" />
28 <tbody valign="top">
29 <row>
30 <entry>start&nbsp;+&nbsp;0:</entry>
31 <entry>Y'<subscript>00left</subscript></entry>
32 <entry>Y'<subscript>00right</subscript></entry>
33 <entry>Y'<subscript>01left</subscript></entry>
34 <entry>Y'<subscript>01right</subscript></entry>
35 <entry>Y'<subscript>02left</subscript></entry>
36 <entry>Y'<subscript>02right</subscript></entry>
37 <entry>Y'<subscript>03left</subscript></entry>
38 <entry>Y'<subscript>03right</subscript></entry>
39 </row>
40 <row>
41 <entry>start&nbsp;+&nbsp;8:</entry>
42 <entry>Y'<subscript>10left</subscript></entry>
43 <entry>Y'<subscript>10right</subscript></entry>
44 <entry>Y'<subscript>11left</subscript></entry>
45 <entry>Y'<subscript>11right</subscript></entry>
46 <entry>Y'<subscript>12left</subscript></entry>
47 <entry>Y'<subscript>12right</subscript></entry>
48 <entry>Y'<subscript>13left</subscript></entry>
49 <entry>Y'<subscript>13right</subscript></entry>
50 </row>
51 <row>
52 <entry>start&nbsp;+&nbsp;16:</entry>
53 <entry>Y'<subscript>20left</subscript></entry>
54 <entry>Y'<subscript>20right</subscript></entry>
55 <entry>Y'<subscript>21left</subscript></entry>
56 <entry>Y'<subscript>21right</subscript></entry>
57 <entry>Y'<subscript>22left</subscript></entry>
58 <entry>Y'<subscript>22right</subscript></entry>
59 <entry>Y'<subscript>23left</subscript></entry>
60 <entry>Y'<subscript>23right</subscript></entry>
61 </row>
62 <row>
63 <entry>start&nbsp;+&nbsp;24:</entry>
64 <entry>Y'<subscript>30left</subscript></entry>
65 <entry>Y'<subscript>30right</subscript></entry>
66 <entry>Y'<subscript>31left</subscript></entry>
67 <entry>Y'<subscript>31right</subscript></entry>
68 <entry>Y'<subscript>32left</subscript></entry>
69 <entry>Y'<subscript>32right</subscript></entry>
70 <entry>Y'<subscript>33left</subscript></entry>
71 <entry>Y'<subscript>33right</subscript></entry>
72 </row>
73 </tbody>
74 </tgroup>
75 </informaltable>
76 </para>
77 </formalpara>
78 </example>
79 </refsect1>
80</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml
deleted file mode 100644
index 0869dce5f92c..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv410.xml
+++ /dev/null
@@ -1,133 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YVU410 ('YVU9'), V4L2_PIX_FMT_YUV410 ('YUV9')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-YVU410"><constant>V4L2_PIX_FMT_YVU410</constant></refname>
8 <refname id="V4L2-PIX-FMT-YUV410"><constant>V4L2_PIX_FMT_YUV410</constant></refname>
9 <refpurpose>Planar formats with &frac14; horizontal and
10vertical chroma resolution, also known as YUV 4:1:0</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>These are planar formats, as opposed to a packed format.
16The three components are separated into three sub-images or planes.
17The Y plane is first. The Y plane has one byte per pixel. For
18<constant>V4L2_PIX_FMT_YVU410</constant>, the Cr plane immediately
19follows the Y plane in memory. The Cr plane is &frac14; the width and
20&frac14; the height of the Y plane (and of the image). Each Cr belongs
21to 16 pixels, a four-by-four square of the image. Following the Cr
22plane is the Cb plane, just like the Cr plane.
23<constant>V4L2_PIX_FMT_YUV410</constant> is the same, except the Cb
24plane comes first, then the Cr plane.</para>
25
26 <para>If the Y plane has pad bytes after each row, then the Cr
27and Cb planes have &frac14; as many pad bytes after their rows. In
28other words, four Cx rows (including padding) are exactly as long as
29one Y row (including padding).</para>
30
31 <example>
32 <title><constant>V4L2_PIX_FMT_YVU410</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="5" 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>Cr<subscript>00</subscript></entry>
73 </row>
74 <row>
75 <entry>start&nbsp;+&nbsp;17:</entry>
76 <entry>Cb<subscript>00</subscript></entry>
77 </row>
78 </tbody>
79 </tgroup>
80 </informaltable>
81 </para>
82 </formalpara>
83
84 <formalpara>
85 <title>Color Sample Location.</title>
86 <para>
87 <informaltable frame="none">
88 <tgroup cols="7" align="center">
89 <tbody valign="top">
90 <row>
91 <entry></entry>
92 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
93 <entry>2</entry><entry></entry><entry>3</entry>
94 </row>
95 <row>
96 <entry>0</entry>
97 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
98 <entry>Y</entry><entry></entry><entry>Y</entry>
99 </row>
100 <row>
101 <entry></entry>
102 </row>
103 <row>
104 <entry>1</entry>
105 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
106 <entry>Y</entry><entry></entry><entry>Y</entry>
107 </row>
108 <row>
109 <entry></entry>
110 <entry></entry><entry></entry><entry></entry><entry>C</entry>
111 <entry></entry><entry></entry><entry></entry>
112 </row>
113 <row>
114 <entry>2</entry>
115 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
116 <entry>Y</entry><entry></entry><entry>Y</entry>
117 </row>
118 <row>
119 <entry></entry>
120 </row>
121 <row>
122 <entry>3</entry>
123 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
124 <entry>Y</entry><entry></entry><entry>Y</entry>
125 </row>
126 </tbody>
127 </tgroup>
128 </informaltable>
129 </para>
130 </formalpara>
131 </example>
132 </refsect1>
133 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml
deleted file mode 100644
index 086dc731bf02..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv411p.xml
+++ /dev/null
@@ -1,147 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-YUV411P">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUV411P ('411P')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_YUV411P</constant></refname>
8 <refpurpose>Format with &frac14; horizontal chroma resolution,
9also known as YUV 4:1:1. Planar layout as opposed to
10<constant>V4L2_PIX_FMT_Y41P</constant></refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>This format is not commonly used. This is a planar
16format similar to the 4:2:2 planar format except with half as many
17chroma. The three components are separated into three sub-images or
18planes. The Y plane is first. The Y plane has one byte per pixel. The
19Cb plane immediately follows the Y plane in memory. The Cb plane is
20&frac14; the width of the Y plane (and of the image). Each Cb belongs
21to 4 pixels all on the same row. For example,
22Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
23Y'<subscript>01</subscript>, Y'<subscript>02</subscript> and
24Y'<subscript>03</subscript>. Following the Cb plane is the Cr plane,
25just like the Cb plane.</para>
26
27 <para>If the Y plane has pad bytes after each row, then the Cr
28and Cb planes have &frac14; as many pad bytes after their rows. In
29other words, four C x rows (including padding) is exactly as long as
30one Y row (including padding).</para>
31
32 <example>
33 <title><constant>V4L2_PIX_FMT_YUV411P</constant> 4 &times; 4
34pixel image</title>
35
36 <formalpara>
37 <title>Byte Order.</title>
38 <para>Each cell is one byte.
39 <informaltable frame="none">
40 <tgroup cols="5" align="center">
41 <colspec align="left" colwidth="2*" />
42 <tbody valign="top">
43 <row>
44 <entry>start&nbsp;+&nbsp;0:</entry>
45 <entry>Y'<subscript>00</subscript></entry>
46 <entry>Y'<subscript>01</subscript></entry>
47 <entry>Y'<subscript>02</subscript></entry>
48 <entry>Y'<subscript>03</subscript></entry>
49 </row>
50 <row>
51 <entry>start&nbsp;+&nbsp;4:</entry>
52 <entry>Y'<subscript>10</subscript></entry>
53 <entry>Y'<subscript>11</subscript></entry>
54 <entry>Y'<subscript>12</subscript></entry>
55 <entry>Y'<subscript>13</subscript></entry>
56 </row>
57 <row>
58 <entry>start&nbsp;+&nbsp;8:</entry>
59 <entry>Y'<subscript>20</subscript></entry>
60 <entry>Y'<subscript>21</subscript></entry>
61 <entry>Y'<subscript>22</subscript></entry>
62 <entry>Y'<subscript>23</subscript></entry>
63 </row>
64 <row>
65 <entry>start&nbsp;+&nbsp;12:</entry>
66 <entry>Y'<subscript>30</subscript></entry>
67 <entry>Y'<subscript>31</subscript></entry>
68 <entry>Y'<subscript>32</subscript></entry>
69 <entry>Y'<subscript>33</subscript></entry>
70 </row>
71 <row>
72 <entry>start&nbsp;+&nbsp;16:</entry>
73 <entry>Cb<subscript>00</subscript></entry>
74 </row>
75 <row>
76 <entry>start&nbsp;+&nbsp;17:</entry>
77 <entry>Cb<subscript>10</subscript></entry>
78 </row>
79 <row>
80 <entry>start&nbsp;+&nbsp;18:</entry>
81 <entry>Cb<subscript>20</subscript></entry>
82 </row>
83 <row>
84 <entry>start&nbsp;+&nbsp;19:</entry>
85 <entry>Cb<subscript>30</subscript></entry>
86 </row>
87 <row>
88 <entry>start&nbsp;+&nbsp;20:</entry>
89 <entry>Cr<subscript>00</subscript></entry>
90 </row>
91 <row>
92 <entry>start&nbsp;+&nbsp;21:</entry>
93 <entry>Cr<subscript>10</subscript></entry>
94 </row>
95 <row>
96 <entry>start&nbsp;+&nbsp;22:</entry>
97 <entry>Cr<subscript>20</subscript></entry>
98 </row>
99 <row>
100 <entry>start&nbsp;+&nbsp;23:</entry>
101 <entry>Cr<subscript>30</subscript></entry>
102 </row>
103 </tbody>
104 </tgroup>
105 </informaltable>
106 </para>
107 </formalpara>
108
109 <formalpara>
110 <title>Color Sample Location.</title>
111 <para>
112 <informaltable frame="none">
113 <tgroup cols="7" align="center">
114 <tbody valign="top">
115 <row>
116 <entry></entry>
117 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
118 <entry>2</entry><entry></entry><entry>3</entry>
119 </row>
120 <row>
121 <entry>0</entry>
122 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
123 <entry>Y</entry><entry></entry><entry>Y</entry>
124 </row>
125 <row>
126 <entry>1</entry>
127 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
128 <entry>Y</entry><entry></entry><entry>Y</entry>
129 </row>
130 <row>
131 <entry>2</entry>
132 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
133 <entry>Y</entry><entry></entry><entry>Y</entry>
134 </row>
135 <row>
136 <entry>3</entry>
137 <entry>Y</entry><entry></entry><entry>Y</entry><entry>C</entry>
138 <entry>Y</entry><entry></entry><entry>Y</entry>
139 </row>
140 </tbody>
141 </tgroup>
142 </informaltable>
143 </para>
144 </formalpara>
145 </example>
146 </refsect1>
147 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml
deleted file mode 100644
index 48649fac1596..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv420.xml
+++ /dev/null
@@ -1,149 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YVU420 ('YV12'), V4L2_PIX_FMT_YUV420 ('YU12')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-YVU420"><constant>V4L2_PIX_FMT_YVU420</constant></refname>
8 <refname id="V4L2-PIX-FMT-YUV420"><constant>V4L2_PIX_FMT_YUV420</constant></refname>
9 <refpurpose>Planar formats with &frac12; horizontal and
10vertical chroma resolution, also known as YUV 4:2:0</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>These are planar formats, as opposed to a packed format.
16The three components are separated into three sub- images or planes.
17The Y plane is first. The Y plane has one byte per pixel. For
18<constant>V4L2_PIX_FMT_YVU420</constant>, the Cr plane immediately
19follows the Y plane in memory. The Cr plane 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>. Following the Cr plane is the Cb plane,
25just like the Cr plane. <constant>V4L2_PIX_FMT_YUV420</constant> is
26the same except the Cb plane comes first, then the Cr plane.</para>
27
28 <para>If the Y plane has pad bytes after each row, then the Cr
29and Cb planes have half as many pad bytes after their rows. In other
30words, two Cx rows (including padding) is exactly as long as one Y row
31(including padding).</para>
32
33 <example>
34 <title><constant>V4L2_PIX_FMT_YVU420</constant> 4 &times; 4
35pixel image</title>
36
37 <formalpara>
38 <title>Byte Order.</title>
39 <para>Each cell is one byte.
40 <informaltable frame="none">
41 <tgroup cols="5" align="center">
42 <colspec align="left" colwidth="2*" />
43 <tbody valign="top">
44 <row>
45 <entry>start&nbsp;+&nbsp;0:</entry>
46 <entry>Y'<subscript>00</subscript></entry>
47 <entry>Y'<subscript>01</subscript></entry>
48 <entry>Y'<subscript>02</subscript></entry>
49 <entry>Y'<subscript>03</subscript></entry>
50 </row>
51 <row>
52 <entry>start&nbsp;+&nbsp;4:</entry>
53 <entry>Y'<subscript>10</subscript></entry>
54 <entry>Y'<subscript>11</subscript></entry>
55 <entry>Y'<subscript>12</subscript></entry>
56 <entry>Y'<subscript>13</subscript></entry>
57 </row>
58 <row>
59 <entry>start&nbsp;+&nbsp;8:</entry>
60 <entry>Y'<subscript>20</subscript></entry>
61 <entry>Y'<subscript>21</subscript></entry>
62 <entry>Y'<subscript>22</subscript></entry>
63 <entry>Y'<subscript>23</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;12:</entry>
67 <entry>Y'<subscript>30</subscript></entry>
68 <entry>Y'<subscript>31</subscript></entry>
69 <entry>Y'<subscript>32</subscript></entry>
70 <entry>Y'<subscript>33</subscript></entry>
71 </row>
72 <row>
73 <entry>start&nbsp;+&nbsp;16:</entry>
74 <entry>Cr<subscript>00</subscript></entry>
75 <entry>Cr<subscript>01</subscript></entry>
76 </row>
77 <row>
78 <entry>start&nbsp;+&nbsp;18:</entry>
79 <entry>Cr<subscript>10</subscript></entry>
80 <entry>Cr<subscript>11</subscript></entry>
81 </row>
82 <row>
83 <entry>start&nbsp;+&nbsp;20:</entry>
84 <entry>Cb<subscript>00</subscript></entry>
85 <entry>Cb<subscript>01</subscript></entry>
86 </row>
87 <row>
88 <entry>start&nbsp;+&nbsp;22:</entry>
89 <entry>Cb<subscript>10</subscript></entry>
90 <entry>Cb<subscript>11</subscript></entry>
91 </row>
92 </tbody>
93 </tgroup>
94 </informaltable>
95 </para>
96 </formalpara>
97
98 <formalpara>
99 <title>Color Sample Location.</title>
100 <para>
101 <informaltable frame="none">
102 <tgroup cols="7" align="center">
103 <tbody valign="top">
104 <row>
105 <entry></entry>
106 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
107 <entry>2</entry><entry></entry><entry>3</entry>
108 </row>
109 <row>
110 <entry>0</entry>
111 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
112 <entry>Y</entry><entry></entry><entry>Y</entry>
113 </row>
114 <row>
115 <entry></entry>
116 <entry></entry><entry>C</entry><entry></entry><entry></entry>
117 <entry></entry><entry>C</entry><entry></entry>
118 </row>
119 <row>
120 <entry>1</entry>
121 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
122 <entry>Y</entry><entry></entry><entry>Y</entry>
123 </row>
124 <row>
125 <entry></entry>
126 </row>
127 <row>
128 <entry>2</entry>
129 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
130 <entry>Y</entry><entry></entry><entry>Y</entry>
131 </row>
132 <row>
133 <entry></entry>
134 <entry></entry><entry>C</entry><entry></entry><entry></entry>
135 <entry></entry><entry>C</entry><entry></entry>
136 </row>
137 <row>
138 <entry>3</entry>
139 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
140 <entry>Y</entry><entry></entry><entry>Y</entry>
141 </row>
142 </tbody>
143 </tgroup>
144 </informaltable>
145 </para>
146 </formalpara>
147 </example>
148 </refsect1>
149 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
deleted file mode 100644
index 7d13fe96657d..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
+++ /dev/null
@@ -1,162 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12'), V4L2_PIX_FMT_YVU420M ('YM21')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-YUV420M"><constant>V4L2_PIX_FMT_YUV420M</constant></refname>
8 <refname id="V4L2-PIX-FMT-YVU420M"><constant>V4L2_PIX_FMT_YVU420M</constant></refname>
9 <refpurpose>Variation of <constant>V4L2_PIX_FMT_YUV420</constant> and
10 <constant>V4L2_PIX_FMT_YVU420</constant> with planes non contiguous
11 in memory.</refpurpose>
12 </refnamediv>
13
14 <refsect1>
15 <title>Description</title>
16
17 <para>This is a multi-planar format, as opposed to a packed format.
18The three components are separated into three sub-images or planes.</para>
19
20 <para>The Y plane is first. The Y plane has one byte per pixel.
21For <constant>V4L2_PIX_FMT_YUV420M</constant> the Cb data
22constitutes the second plane which is half the width and half
23the height of the Y plane (and of the image). Each Cb belongs to four
24pixels, a two-by-two square of the image. For example,
25Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
26Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and
27Y'<subscript>11</subscript>. The Cr data, just like the Cb plane, is
28in the third plane.</para>
29
30 <para><constant>V4L2_PIX_FMT_YVU420M</constant> is the same except
31the Cr data is stored in the second plane and the Cb data in the third plane.
32</para>
33
34 <para>If the Y plane has pad bytes after each row, then the Cb
35and Cr planes have half as many pad bytes after their rows. In other
36words, two Cx rows (including padding) is exactly as long as one Y row
37(including padding).</para>
38
39 <para><constant>V4L2_PIX_FMT_YUV420M</constant> and
40<constant>V4L2_PIX_FMT_YVU420M</constant> are intended to be
41used only in drivers and applications that support the multi-planar API,
42described in <xref linkend="planar-apis"/>. </para>
43
44 <example>
45 <title><constant>V4L2_PIX_FMT_YUV420M</constant> 4 &times; 4
46pixel image</title>
47
48 <formalpara>
49 <title>Byte Order.</title>
50 <para>Each cell is one byte.
51 <informaltable frame="none">
52 <tgroup cols="5" align="center">
53 <colspec align="left" colwidth="2*" />
54 <tbody valign="top">
55 <row>
56 <entry>start0&nbsp;+&nbsp;0:</entry>
57 <entry>Y'<subscript>00</subscript></entry>
58 <entry>Y'<subscript>01</subscript></entry>
59 <entry>Y'<subscript>02</subscript></entry>
60 <entry>Y'<subscript>03</subscript></entry>
61 </row>
62 <row>
63 <entry>start0&nbsp;+&nbsp;4:</entry>
64 <entry>Y'<subscript>10</subscript></entry>
65 <entry>Y'<subscript>11</subscript></entry>
66 <entry>Y'<subscript>12</subscript></entry>
67 <entry>Y'<subscript>13</subscript></entry>
68 </row>
69 <row>
70 <entry>start0&nbsp;+&nbsp;8:</entry>
71 <entry>Y'<subscript>20</subscript></entry>
72 <entry>Y'<subscript>21</subscript></entry>
73 <entry>Y'<subscript>22</subscript></entry>
74 <entry>Y'<subscript>23</subscript></entry>
75 </row>
76 <row>
77 <entry>start0&nbsp;+&nbsp;12:</entry>
78 <entry>Y'<subscript>30</subscript></entry>
79 <entry>Y'<subscript>31</subscript></entry>
80 <entry>Y'<subscript>32</subscript></entry>
81 <entry>Y'<subscript>33</subscript></entry>
82 </row>
83 <row><entry></entry></row>
84 <row>
85 <entry>start1&nbsp;+&nbsp;0:</entry>
86 <entry>Cb<subscript>00</subscript></entry>
87 <entry>Cb<subscript>01</subscript></entry>
88 </row>
89 <row>
90 <entry>start1&nbsp;+&nbsp;2:</entry>
91 <entry>Cb<subscript>10</subscript></entry>
92 <entry>Cb<subscript>11</subscript></entry>
93 </row>
94 <row><entry></entry></row>
95 <row>
96 <entry>start2&nbsp;+&nbsp;0:</entry>
97 <entry>Cr<subscript>00</subscript></entry>
98 <entry>Cr<subscript>01</subscript></entry>
99 </row>
100 <row>
101 <entry>start2&nbsp;+&nbsp;2:</entry>
102 <entry>Cr<subscript>10</subscript></entry>
103 <entry>Cr<subscript>11</subscript></entry>
104 </row>
105 </tbody>
106 </tgroup>
107 </informaltable>
108 </para>
109 </formalpara>
110
111 <formalpara>
112 <title>Color Sample Location.</title>
113 <para>
114 <informaltable frame="none">
115 <tgroup cols="7" align="center">
116 <tbody valign="top">
117 <row>
118 <entry></entry>
119 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
120 <entry>2</entry><entry></entry><entry>3</entry>
121 </row>
122 <row>
123 <entry>0</entry>
124 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
125 <entry>Y</entry><entry></entry><entry>Y</entry>
126 </row>
127 <row>
128 <entry></entry>
129 <entry></entry><entry>C</entry><entry></entry><entry></entry>
130 <entry></entry><entry>C</entry><entry></entry>
131 </row>
132 <row>
133 <entry>1</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 </row>
140 <row>
141 <entry>2</entry>
142 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
143 <entry>Y</entry><entry></entry><entry>Y</entry>
144 </row>
145 <row>
146 <entry></entry>
147 <entry></entry><entry>C</entry><entry></entry><entry></entry>
148 <entry></entry><entry>C</entry><entry></entry>
149 </row>
150 <row>
151 <entry>3</entry>
152 <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
153 <entry>Y</entry><entry></entry><entry>Y</entry>
154 </row>
155 </tbody>
156 </tgroup>
157 </informaltable>
158 </para>
159 </formalpara>
160 </example>
161 </refsect1>
162 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
deleted file mode 100644
index dd502802cb75..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
+++ /dev/null
@@ -1,166 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUV422M ('YM16'), V4L2_PIX_FMT_YVU422M ('YM61')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-YUV422M"><constant>V4L2_PIX_FMT_YUV422M</constant></refname>
8 <refname id="V4L2-PIX-FMT-YVU422M"><constant>V4L2_PIX_FMT_YVU422M</constant></refname>
9 <refpurpose>Planar formats with &frac12; horizontal resolution, also
10 known as YUV and YVU 4:2:2</refpurpose>
11 </refnamediv>
12
13 <refsect1>
14 <title>Description</title>
15
16 <para>This is a multi-planar format, as opposed to a packed format.
17The three components are separated into three sub-images or planes.</para>
18
19 <para>The Y plane is first. The Y plane has one byte per pixel.
20For <constant>V4L2_PIX_FMT_YUV422M</constant> the Cb data
21constitutes the second plane which is half the width of the Y plane (and of the
22image). Each Cb belongs to two pixels. For example,
23Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
24Y'<subscript>01</subscript>. The Cr data, just like the Cb plane, is
25in the third plane. </para>
26
27 <para><constant>V4L2_PIX_FMT_YVU422M</constant> is the same except
28the Cr data is stored in the second plane and the Cb data in the third plane.
29</para>
30
31 <para>If the Y plane has pad bytes after each row, then the Cb
32and Cr planes have half as many pad bytes after their rows. In other
33words, two Cx rows (including padding) is exactly as long as one Y row
34(including padding).</para>
35
36 <para><constant>V4L2_PIX_FMT_YUV422M</constant> and
37<constant>V4L2_PIX_FMT_YVU422M</constant> are intended to be
38used only in drivers and applications that support the multi-planar API,
39described in <xref linkend="planar-apis"/>. </para>
40
41 <example>
42 <title><constant>V4L2_PIX_FMT_YUV422M</constant> 4 &times; 4
43pixel image</title>
44
45 <formalpara>
46 <title>Byte Order.</title>
47 <para>Each cell is one byte.
48 <informaltable frame="none">
49 <tgroup cols="5" align="center">
50 <colspec align="left" colwidth="2*" />
51 <tbody valign="top">
52 <row>
53 <entry>start0&nbsp;+&nbsp;0:</entry>
54 <entry>Y'<subscript>00</subscript></entry>
55 <entry>Y'<subscript>01</subscript></entry>
56 <entry>Y'<subscript>02</subscript></entry>
57 <entry>Y'<subscript>03</subscript></entry>
58 </row>
59 <row>
60 <entry>start0&nbsp;+&nbsp;4:</entry>
61 <entry>Y'<subscript>10</subscript></entry>
62 <entry>Y'<subscript>11</subscript></entry>
63 <entry>Y'<subscript>12</subscript></entry>
64 <entry>Y'<subscript>13</subscript></entry>
65 </row>
66 <row>
67 <entry>start0&nbsp;+&nbsp;8:</entry>
68 <entry>Y'<subscript>20</subscript></entry>
69 <entry>Y'<subscript>21</subscript></entry>
70 <entry>Y'<subscript>22</subscript></entry>
71 <entry>Y'<subscript>23</subscript></entry>
72 </row>
73 <row>
74 <entry>start0&nbsp;+&nbsp;12:</entry>
75 <entry>Y'<subscript>30</subscript></entry>
76 <entry>Y'<subscript>31</subscript></entry>
77 <entry>Y'<subscript>32</subscript></entry>
78 <entry>Y'<subscript>33</subscript></entry>
79 </row>
80 <row><entry></entry></row>
81 <row>
82 <entry>start1&nbsp;+&nbsp;0:</entry>
83 <entry>Cb<subscript>00</subscript></entry>
84 <entry>Cb<subscript>01</subscript></entry>
85 </row>
86 <row>
87 <entry>start1&nbsp;+&nbsp;2:</entry>
88 <entry>Cb<subscript>10</subscript></entry>
89 <entry>Cb<subscript>11</subscript></entry>
90 </row>
91 <row>
92 <entry>start1&nbsp;+&nbsp;4:</entry>
93 <entry>Cb<subscript>20</subscript></entry>
94 <entry>Cb<subscript>21</subscript></entry>
95 </row>
96 <row>
97 <entry>start1&nbsp;+&nbsp;6:</entry>
98 <entry>Cb<subscript>30</subscript></entry>
99 <entry>Cb<subscript>31</subscript></entry>
100 </row>
101 <row><entry></entry></row>
102 <row>
103 <entry>start2&nbsp;+&nbsp;0:</entry>
104 <entry>Cr<subscript>00</subscript></entry>
105 <entry>Cr<subscript>01</subscript></entry>
106 </row>
107 <row>
108 <entry>start2&nbsp;+&nbsp;2:</entry>
109 <entry>Cr<subscript>10</subscript></entry>
110 <entry>Cr<subscript>11</subscript></entry>
111 </row>
112 <row>
113 <entry>start2&nbsp;+&nbsp;4:</entry>
114 <entry>Cr<subscript>20</subscript></entry>
115 <entry>Cr<subscript>21</subscript></entry>
116 </row>
117 <row>
118 <entry>start2&nbsp;+&nbsp;6:</entry>
119 <entry>Cr<subscript>30</subscript></entry>
120 <entry>Cr<subscript>31</subscript></entry>
121 </row>
122 </tbody>
123 </tgroup>
124 </informaltable>
125 </para>
126 </formalpara>
127
128 <formalpara>
129 <title>Color Sample Location.</title>
130 <para>
131 <informaltable frame="none">
132 <tgroup cols="7" align="center">
133 <tbody valign="top">
134 <row>
135 <entry></entry>
136 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
137 <entry>2</entry><entry></entry><entry>3</entry>
138 </row>
139 <row>
140 <entry>0</entry>
141 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
142 <entry>Y</entry><entry>C</entry><entry>Y</entry>
143 </row>
144 <row>
145 <entry>1</entry>
146 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
147 <entry>Y</entry><entry>C</entry><entry>Y</entry>
148 </row>
149 <row>
150 <entry>2</entry>
151 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
152 <entry>Y</entry><entry>C</entry><entry>Y</entry>
153 </row>
154 <row>
155 <entry>3</entry>
156 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
157 <entry>Y</entry><entry>C</entry><entry>Y</entry>
158 </row>
159 </tbody>
160 </tgroup>
161 </informaltable>
162 </para>
163 </formalpara>
164 </example>
165 </refsect1>
166 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml
deleted file mode 100644
index 4ce6463fe0a5..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv422p.xml
+++ /dev/null
@@ -1,153 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-YUV422P">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUV422P ('422P')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_YUV422P</constant></refname>
8 <refpurpose>Format with &frac12; horizontal chroma resolution,
9also known as YUV 4:2:2. Planar layout as opposed to
10<constant>V4L2_PIX_FMT_YUYV</constant></refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>This format is not commonly used. This is a planar
16version of the YUYV format. The three components are separated into
17three sub-images or planes. The Y plane is first. The Y plane has one
18byte per pixel. The Cb plane immediately follows the Y plane in
19memory. The Cb plane is half the width of the Y plane (and of the
20image). Each Cb belongs to two pixels. For example,
21Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
22Y'<subscript>01</subscript>. Following the Cb plane is the Cr plane,
23just like the Cb plane.</para>
24
25 <para>If the Y plane has pad bytes after each row, then the Cr
26and Cb planes have half as many pad bytes after their rows. In other
27words, two Cx rows (including padding) is exactly as long as one Y row
28(including padding).</para>
29
30 <example>
31 <title><constant>V4L2_PIX_FMT_YUV422P</constant> 4 &times; 4
32pixel image</title>
33
34 <formalpara>
35 <title>Byte Order.</title>
36 <para>Each cell is one byte.
37 <informaltable frame="none">
38 <tgroup cols="5" align="center">
39 <colspec align="left" colwidth="2*" />
40 <tbody valign="top">
41 <row>
42 <entry>start&nbsp;+&nbsp;0:</entry>
43 <entry>Y'<subscript>00</subscript></entry>
44 <entry>Y'<subscript>01</subscript></entry>
45 <entry>Y'<subscript>02</subscript></entry>
46 <entry>Y'<subscript>03</subscript></entry>
47 </row>
48 <row>
49 <entry>start&nbsp;+&nbsp;4:</entry>
50 <entry>Y'<subscript>10</subscript></entry>
51 <entry>Y'<subscript>11</subscript></entry>
52 <entry>Y'<subscript>12</subscript></entry>
53 <entry>Y'<subscript>13</subscript></entry>
54 </row>
55 <row>
56 <entry>start&nbsp;+&nbsp;8:</entry>
57 <entry>Y'<subscript>20</subscript></entry>
58 <entry>Y'<subscript>21</subscript></entry>
59 <entry>Y'<subscript>22</subscript></entry>
60 <entry>Y'<subscript>23</subscript></entry>
61 </row>
62 <row>
63 <entry>start&nbsp;+&nbsp;12:</entry>
64 <entry>Y'<subscript>30</subscript></entry>
65 <entry>Y'<subscript>31</subscript></entry>
66 <entry>Y'<subscript>32</subscript></entry>
67 <entry>Y'<subscript>33</subscript></entry>
68 </row>
69 <row>
70 <entry>start&nbsp;+&nbsp;16:</entry>
71 <entry>Cb<subscript>00</subscript></entry>
72 <entry>Cb<subscript>01</subscript></entry>
73 </row>
74 <row>
75 <entry>start&nbsp;+&nbsp;18:</entry>
76 <entry>Cb<subscript>10</subscript></entry>
77 <entry>Cb<subscript>11</subscript></entry>
78 </row>
79 <row>
80 <entry>start&nbsp;+&nbsp;20:</entry>
81 <entry>Cb<subscript>20</subscript></entry>
82 <entry>Cb<subscript>21</subscript></entry>
83 </row>
84 <row>
85 <entry>start&nbsp;+&nbsp;22:</entry>
86 <entry>Cb<subscript>30</subscript></entry>
87 <entry>Cb<subscript>31</subscript></entry>
88 </row>
89 <row>
90 <entry>start&nbsp;+&nbsp;24:</entry>
91 <entry>Cr<subscript>00</subscript></entry>
92 <entry>Cr<subscript>01</subscript></entry>
93 </row>
94 <row>
95 <entry>start&nbsp;+&nbsp;26:</entry>
96 <entry>Cr<subscript>10</subscript></entry>
97 <entry>Cr<subscript>11</subscript></entry>
98 </row>
99 <row>
100 <entry>start&nbsp;+&nbsp;28:</entry>
101 <entry>Cr<subscript>20</subscript></entry>
102 <entry>Cr<subscript>21</subscript></entry>
103 </row>
104 <row>
105 <entry>start&nbsp;+&nbsp;30:</entry>
106 <entry>Cr<subscript>30</subscript></entry>
107 <entry>Cr<subscript>31</subscript></entry>
108 </row>
109 </tbody>
110 </tgroup>
111 </informaltable>
112 </para>
113 </formalpara>
114
115 <formalpara>
116 <title>Color Sample Location.</title>
117 <para>
118 <informaltable frame="none">
119 <tgroup cols="7" align="center">
120 <tbody valign="top">
121 <row>
122 <entry></entry>
123 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
124 <entry>2</entry><entry></entry><entry>3</entry>
125 </row>
126 <row>
127 <entry>0</entry>
128 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
129 <entry>Y</entry><entry>C</entry><entry>Y</entry>
130 </row>
131 <row>
132 <entry>1</entry>
133 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
134 <entry>Y</entry><entry>C</entry><entry>Y</entry>
135 </row>
136 <row>
137 <entry>2</entry>
138 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
139 <entry>Y</entry><entry>C</entry><entry>Y</entry>
140 </row>
141 <row>
142 <entry>3</entry>
143 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
144 <entry>Y</entry><entry>C</entry><entry>Y</entry>
145 </row>
146 </tbody>
147 </tgroup>
148 </informaltable>
149 </para>
150 </formalpara>
151 </example>
152 </refsect1>
153 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
deleted file mode 100644
index 1b7335940bc7..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
+++ /dev/null
@@ -1,177 +0,0 @@
1 <refentry>
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUV444M ('YM24'), V4L2_PIX_FMT_YVU444M ('YM42')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname id="V4L2-PIX-FMT-YUV444M"><constant>V4L2_PIX_FMT_YUV444M</constant></refname>
8 <refname id="V4L2-PIX-FMT-YVU444M"><constant>V4L2_PIX_FMT_YVU444M</constant></refname>
9 <refpurpose>Planar formats with full horizontal resolution, also
10 known as YUV and YVU 4:4:4</refpurpose>
11 </refnamediv>
12
13 <refsect1>
14 <title>Description</title>
15
16 <para>This is a multi-planar format, as opposed to a packed format.
17The three components are separated into three sub-images or planes.</para>
18
19 <para>The Y plane is first. The Y plane has one byte per pixel.
20For <constant>V4L2_PIX_FMT_YUV444M</constant> the Cb data
21constitutes the second plane which is the same width and height as the Y plane
22(and as the image). The Cr data, just like the Cb plane, is in the third plane.
23</para>
24
25 <para><constant>V4L2_PIX_FMT_YVU444M</constant> is the same except
26the Cr data is stored in the second plane and the Cb data in the third plane.
27</para>
28 <para>If the Y plane has pad bytes after each row, then the Cb
29and Cr planes have the same number of pad bytes after their rows.</para>
30
31 <para><constant>V4L2_PIX_FMT_YUV444M</constant> and
32<constant>V4L2_PIX_FMT_YUV444M</constant> are 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_YUV444M</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>Cb<subscript>00</subscript></entry>
79 <entry>Cb<subscript>01</subscript></entry>
80 <entry>Cb<subscript>02</subscript></entry>
81 <entry>Cb<subscript>03</subscript></entry>
82 </row>
83 <row>
84 <entry>start1&nbsp;+&nbsp;4:</entry>
85 <entry>Cb<subscript>10</subscript></entry>
86 <entry>Cb<subscript>11</subscript></entry>
87 <entry>Cb<subscript>12</subscript></entry>
88 <entry>Cb<subscript>13</subscript></entry>
89 </row>
90 <row>
91 <entry>start1&nbsp;+&nbsp;8:</entry>
92 <entry>Cb<subscript>20</subscript></entry>
93 <entry>Cb<subscript>21</subscript></entry>
94 <entry>Cb<subscript>22</subscript></entry>
95 <entry>Cb<subscript>23</subscript></entry>
96 </row>
97 <row>
98 <entry>start1&nbsp;+&nbsp;12:</entry>
99 <entry>Cb<subscript>20</subscript></entry>
100 <entry>Cb<subscript>21</subscript></entry>
101 <entry>Cb<subscript>32</subscript></entry>
102 <entry>Cb<subscript>33</subscript></entry>
103 </row>
104 <row><entry></entry></row>
105 <row>
106 <entry>start2&nbsp;+&nbsp;0:</entry>
107 <entry>Cr<subscript>00</subscript></entry>
108 <entry>Cr<subscript>01</subscript></entry>
109 <entry>Cr<subscript>02</subscript></entry>
110 <entry>Cr<subscript>03</subscript></entry>
111 </row>
112 <row>
113 <entry>start2&nbsp;+&nbsp;4:</entry>
114 <entry>Cr<subscript>10</subscript></entry>
115 <entry>Cr<subscript>11</subscript></entry>
116 <entry>Cr<subscript>12</subscript></entry>
117 <entry>Cr<subscript>13</subscript></entry>
118 </row>
119 <row>
120 <entry>start2&nbsp;+&nbsp;8:</entry>
121 <entry>Cr<subscript>20</subscript></entry>
122 <entry>Cr<subscript>21</subscript></entry>
123 <entry>Cr<subscript>22</subscript></entry>
124 <entry>Cr<subscript>23</subscript></entry>
125 </row>
126 <row>
127 <entry>start2&nbsp;+&nbsp;12:</entry>
128 <entry>Cr<subscript>30</subscript></entry>
129 <entry>Cr<subscript>31</subscript></entry>
130 <entry>Cr<subscript>32</subscript></entry>
131 <entry>Cr<subscript>33</subscript></entry>
132 </row>
133 </tbody>
134 </tgroup>
135 </informaltable>
136 </para>
137 </formalpara>
138
139 <formalpara>
140 <title>Color Sample Location.</title>
141 <para>
142 <informaltable frame="none">
143 <tgroup cols="7" align="center">
144 <tbody valign="top">
145 <row>
146 <entry></entry>
147 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
148 <entry>2</entry><entry></entry><entry>3</entry>
149 </row>
150 <row>
151 <entry>0</entry>
152 <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
153 <entry>YC</entry><entry></entry><entry>YC</entry>
154 </row>
155 <row>
156 <entry>1</entry>
157 <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
158 <entry>YC</entry><entry></entry><entry>YC</entry>
159 </row>
160 <row>
161 <entry>2</entry>
162 <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
163 <entry>YC</entry><entry></entry><entry>YC</entry>
164 </row>
165 <row>
166 <entry>3</entry>
167 <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
168 <entry>YC</entry><entry></entry><entry>YC</entry>
169 </row>
170 </tbody>
171 </tgroup>
172 </informaltable>
173 </para>
174 </formalpara>
175 </example>
176 </refsect1>
177 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml b/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml
deleted file mode 100644
index 58384092251a..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yuyv.xml
+++ /dev/null
@@ -1,120 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-YUYV">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YUYV ('YUYV')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_YUYV</constant></refname>
8 <refpurpose>Packed format with &frac12; horizontal chroma
9resolution, also known as YUV 4:2:2</refpurpose>
10 </refnamediv>
11 <refsect1>
12 <title>Description</title>
13
14 <para>In this format each four bytes is two pixels. Each four
15bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and
16the Cb and Cr belong to both pixels. As you can see, the Cr and Cb
17components have half the horizontal resolution of the Y component.
18<constant>V4L2_PIX_FMT_YUYV </constant> is known in the Windows
19environment as YUY2.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_YUYV</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="9" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>Y'<subscript>00</subscript></entry>
35 <entry>Cb<subscript>00</subscript></entry>
36 <entry>Y'<subscript>01</subscript></entry>
37 <entry>Cr<subscript>00</subscript></entry>
38 <entry>Y'<subscript>02</subscript></entry>
39 <entry>Cb<subscript>01</subscript></entry>
40 <entry>Y'<subscript>03</subscript></entry>
41 <entry>Cr<subscript>01</subscript></entry>
42 </row>
43 <row>
44 <entry>start&nbsp;+&nbsp;8:</entry>
45 <entry>Y'<subscript>10</subscript></entry>
46 <entry>Cb<subscript>10</subscript></entry>
47 <entry>Y'<subscript>11</subscript></entry>
48 <entry>Cr<subscript>10</subscript></entry>
49 <entry>Y'<subscript>12</subscript></entry>
50 <entry>Cb<subscript>11</subscript></entry>
51 <entry>Y'<subscript>13</subscript></entry>
52 <entry>Cr<subscript>11</subscript></entry>
53 </row>
54 <row>
55 <entry>start&nbsp;+&nbsp;16:</entry>
56 <entry>Y'<subscript>20</subscript></entry>
57 <entry>Cb<subscript>20</subscript></entry>
58 <entry>Y'<subscript>21</subscript></entry>
59 <entry>Cr<subscript>20</subscript></entry>
60 <entry>Y'<subscript>22</subscript></entry>
61 <entry>Cb<subscript>21</subscript></entry>
62 <entry>Y'<subscript>23</subscript></entry>
63 <entry>Cr<subscript>21</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;24:</entry>
67 <entry>Y'<subscript>30</subscript></entry>
68 <entry>Cb<subscript>30</subscript></entry>
69 <entry>Y'<subscript>31</subscript></entry>
70 <entry>Cr<subscript>30</subscript></entry>
71 <entry>Y'<subscript>32</subscript></entry>
72 <entry>Cb<subscript>31</subscript></entry>
73 <entry>Y'<subscript>33</subscript></entry>
74 <entry>Cr<subscript>31</subscript></entry>
75 </row>
76 </tbody>
77 </tgroup>
78 </informaltable>
79 </para>
80 </formalpara>
81
82 <formalpara>
83 <title>Color Sample Location.</title>
84 <para>
85 <informaltable frame="none">
86 <tgroup cols="7" align="center">
87 <tbody valign="top">
88 <row>
89 <entry></entry>
90 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
91 <entry>2</entry><entry></entry><entry>3</entry>
92 </row>
93 <row>
94 <entry>0</entry>
95 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
96 <entry>Y</entry><entry>C</entry><entry>Y</entry>
97 </row>
98 <row>
99 <entry>1</entry>
100 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
101 <entry>Y</entry><entry>C</entry><entry>Y</entry>
102 </row>
103 <row>
104 <entry>2</entry>
105 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
106 <entry>Y</entry><entry>C</entry><entry>Y</entry>
107 </row>
108 <row>
109 <entry>3</entry>
110 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
111 <entry>Y</entry><entry>C</entry><entry>Y</entry>
112 </row>
113 </tbody>
114 </tgroup>
115 </informaltable>
116 </para>
117 </formalpara>
118 </example>
119 </refsect1>
120 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml b/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml
deleted file mode 100644
index bfffdc76d3da..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yvyu.xml
+++ /dev/null
@@ -1,120 +0,0 @@
1 <refentry id="V4L2-PIX-FMT-YVYU">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_YVYU ('YVYU')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_YVYU</constant></refname>
8 <refpurpose>Variation of
9<constant>V4L2_PIX_FMT_YUYV</constant> with different order of samples
10in memory</refpurpose>
11 </refnamediv>
12 <refsect1>
13 <title>Description</title>
14
15 <para>In this format each four bytes is two pixels. Each four
16bytes is two Y's, a Cb and a Cr. Each Y goes to one of the pixels, and
17the Cb and Cr belong to both pixels. As you can see, the Cr and Cb
18components have half the horizontal resolution of the Y
19component.</para>
20
21 <example>
22 <title><constant>V4L2_PIX_FMT_YVYU</constant> 4 &times; 4
23pixel image</title>
24
25 <formalpara>
26 <title>Byte Order.</title>
27 <para>Each cell is one byte.
28 <informaltable frame="none">
29 <tgroup cols="9" align="center">
30 <colspec align="left" colwidth="2*" />
31 <tbody valign="top">
32 <row>
33 <entry>start&nbsp;+&nbsp;0:</entry>
34 <entry>Y'<subscript>00</subscript></entry>
35 <entry>Cr<subscript>00</subscript></entry>
36 <entry>Y'<subscript>01</subscript></entry>
37 <entry>Cb<subscript>00</subscript></entry>
38 <entry>Y'<subscript>02</subscript></entry>
39 <entry>Cr<subscript>01</subscript></entry>
40 <entry>Y'<subscript>03</subscript></entry>
41 <entry>Cb<subscript>01</subscript></entry>
42 </row>
43 <row>
44 <entry>start&nbsp;+&nbsp;8:</entry>
45 <entry>Y'<subscript>10</subscript></entry>
46 <entry>Cr<subscript>10</subscript></entry>
47 <entry>Y'<subscript>11</subscript></entry>
48 <entry>Cb<subscript>10</subscript></entry>
49 <entry>Y'<subscript>12</subscript></entry>
50 <entry>Cr<subscript>11</subscript></entry>
51 <entry>Y'<subscript>13</subscript></entry>
52 <entry>Cb<subscript>11</subscript></entry>
53 </row>
54 <row>
55 <entry>start&nbsp;+&nbsp;16:</entry>
56 <entry>Y'<subscript>20</subscript></entry>
57 <entry>Cr<subscript>20</subscript></entry>
58 <entry>Y'<subscript>21</subscript></entry>
59 <entry>Cb<subscript>20</subscript></entry>
60 <entry>Y'<subscript>22</subscript></entry>
61 <entry>Cr<subscript>21</subscript></entry>
62 <entry>Y'<subscript>23</subscript></entry>
63 <entry>Cb<subscript>21</subscript></entry>
64 </row>
65 <row>
66 <entry>start&nbsp;+&nbsp;24:</entry>
67 <entry>Y'<subscript>30</subscript></entry>
68 <entry>Cr<subscript>30</subscript></entry>
69 <entry>Y'<subscript>31</subscript></entry>
70 <entry>Cb<subscript>30</subscript></entry>
71 <entry>Y'<subscript>32</subscript></entry>
72 <entry>Cr<subscript>31</subscript></entry>
73 <entry>Y'<subscript>33</subscript></entry>
74 <entry>Cb<subscript>31</subscript></entry>
75 </row>
76 </tbody>
77 </tgroup>
78 </informaltable>
79 </para>
80 </formalpara>
81
82 <formalpara>
83 <title>Color Sample Location.</title>
84 <para>
85 <informaltable frame="none">
86 <tgroup cols="7" align="center">
87 <tbody valign="top">
88 <row>
89 <entry></entry>
90 <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
91 <entry>2</entry><entry></entry><entry>3</entry>
92 </row>
93 <row>
94 <entry>0</entry>
95 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
96 <entry>Y</entry><entry>C</entry><entry>Y</entry>
97 </row>
98 <row>
99 <entry>1</entry>
100 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
101 <entry>Y</entry><entry>C</entry><entry>Y</entry>
102 </row>
103 <row>
104 <entry>2</entry>
105 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
106 <entry>Y</entry><entry>C</entry><entry>Y</entry>
107 </row>
108 <row>
109 <entry>3</entry>
110 <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
111 <entry>Y</entry><entry>C</entry><entry>Y</entry>
112 </row>
113 </tbody>
114 </tgroup>
115 </informaltable>
116 </para>
117 </formalpara>
118 </example>
119 </refsect1>
120 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-z16.xml b/Documentation/DocBook/media/v4l/pixfmt-z16.xml
deleted file mode 100644
index 1d9cb1684bd3..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-z16.xml
+++ /dev/null
@@ -1,81 +0,0 @@
1<refentry id="V4L2-PIX-FMT-Z16">
2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_Z16 ('Z16 ')</refentrytitle>
4 &manvol;
5 </refmeta>
6 <refnamediv>
7 <refname><constant>V4L2_PIX_FMT_Z16</constant></refname>
8 <refpurpose>16-bit depth data with distance values at each pixel</refpurpose>
9 </refnamediv>
10 <refsect1>
11 <title>Description</title>
12
13 <para>This is a 16-bit format, representing depth data. Each pixel is a
14distance to the respective point in the image coordinates. Distance unit can
15vary and has to be negotiated with the device separately. Each pixel is stored
16in a 16-bit word in the little endian byte order.
17</para>
18
19 <example>
20 <title><constant>V4L2_PIX_FMT_Z16</constant> 4 &times; 4
21pixel image</title>
22
23 <formalpara>
24 <title>Byte Order.</title>
25 <para>Each cell is one byte.
26 <informaltable frame="none">
27 <tgroup cols="9" align="center">
28 <colspec align="left" colwidth="2*" />
29 <tbody valign="top">
30 <row>
31 <entry>start&nbsp;+&nbsp;0:</entry>
32 <entry>Z<subscript>00low</subscript></entry>
33 <entry>Z<subscript>00high</subscript></entry>
34 <entry>Z<subscript>01low</subscript></entry>
35 <entry>Z<subscript>01high</subscript></entry>
36 <entry>Z<subscript>02low</subscript></entry>
37 <entry>Z<subscript>02high</subscript></entry>
38 <entry>Z<subscript>03low</subscript></entry>
39 <entry>Z<subscript>03high</subscript></entry>
40 </row>
41 <row>
42 <entry>start&nbsp;+&nbsp;8:</entry>
43 <entry>Z<subscript>10low</subscript></entry>
44 <entry>Z<subscript>10high</subscript></entry>
45 <entry>Z<subscript>11low</subscript></entry>
46 <entry>Z<subscript>11high</subscript></entry>
47 <entry>Z<subscript>12low</subscript></entry>
48 <entry>Z<subscript>12high</subscript></entry>
49 <entry>Z<subscript>13low</subscript></entry>
50 <entry>Z<subscript>13high</subscript></entry>
51 </row>
52 <row>
53 <entry>start&nbsp;+&nbsp;16:</entry>
54 <entry>Z<subscript>20low</subscript></entry>
55 <entry>Z<subscript>20high</subscript></entry>
56 <entry>Z<subscript>21low</subscript></entry>
57 <entry>Z<subscript>21high</subscript></entry>
58 <entry>Z<subscript>22low</subscript></entry>
59 <entry>Z<subscript>22high</subscript></entry>
60 <entry>Z<subscript>23low</subscript></entry>
61 <entry>Z<subscript>23high</subscript></entry>
62 </row>
63 <row>
64 <entry>start&nbsp;+&nbsp;24:</entry>
65 <entry>Z<subscript>30low</subscript></entry>
66 <entry>Z<subscript>30high</subscript></entry>
67 <entry>Z<subscript>31low</subscript></entry>
68 <entry>Z<subscript>31high</subscript></entry>
69 <entry>Z<subscript>32low</subscript></entry>
70 <entry>Z<subscript>32high</subscript></entry>
71 <entry>Z<subscript>33low</subscript></entry>
72 <entry>Z<subscript>33high</subscript></entry>
73 </row>
74 </tbody>
75 </tgroup>
76 </informaltable>
77 </para>
78 </formalpara>
79 </example>
80 </refsect1>
81</refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
deleted file mode 100644
index 5a08aeea4360..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ /dev/null
@@ -1,2003 +0,0 @@
1 <title>Image Formats</title>
2
3 <para>The V4L2 API was primarily designed for devices exchanging
4image data with applications. The
5<structname>v4l2_pix_format</structname> and <structname>v4l2_pix_format_mplane
6</structname> structures define the format and layout of an image in memory.
7The former is used with the single-planar API, while the latter is used with the
8multi-planar version (see <xref linkend="planar-apis"/>). Image formats are
9negotiated with the &VIDIOC-S-FMT; ioctl. (The explanations here focus on video
10capturing and output, for overlay frame buffer formats see also
11&VIDIOC-G-FBUF;.)</para>
12
13<section>
14 <title>Single-planar format structure</title>
15 <table pgwide="1" frame="none" id="v4l2-pix-format">
16 <title>struct <structname>v4l2_pix_format</structname></title>
17 <tgroup cols="3">
18 &cs-str;
19 <tbody valign="top">
20 <row>
21 <entry>__u32</entry>
22 <entry><structfield>width</structfield></entry>
23 <entry>Image width in pixels.</entry>
24 </row>
25 <row>
26 <entry>__u32</entry>
27 <entry><structfield>height</structfield></entry>
28 <entry>Image height in pixels. If <structfield>field</structfield> is
29 one of <constant>V4L2_FIELD_TOP</constant>, <constant>V4L2_FIELD_BOTTOM</constant>
30 or <constant>V4L2_FIELD_ALTERNATE</constant> then height refers to the
31 number of lines in the field, otherwise it refers to the number of
32 lines in the frame (which is twice the field height for interlaced
33 formats).</entry>
34 </row>
35 <row>
36 <entry spanname="hspan">Applications set these fields to
37request an image size, drivers return the closest possible values. In
38case of planar formats the <structfield>width</structfield> and
39<structfield>height</structfield> applies to the largest plane. To
40avoid ambiguities drivers must return values rounded up to a multiple
41of the scale factor of any smaller planes. For example when the image
42format is YUV 4:2:0, <structfield>width</structfield> and
43<structfield>height</structfield> must be multiples of two.</entry>
44 </row>
45 <row>
46 <entry>__u32</entry>
47 <entry><structfield>pixelformat</structfield></entry>
48 <entry>The pixel format or type of compression, set by the
49application. This is a little endian <link
50linkend="v4l2-fourcc">four character code</link>. V4L2 defines
51standard RGB formats in <xref linkend="rgb-formats" />, YUV formats in <xref
52linkend="yuv-formats" />, and reserved codes in <xref
53linkend="reserved-formats" /></entry>
54 </row>
55 <row>
56 <entry>&v4l2-field;</entry>
57 <entry><structfield>field</structfield></entry>
58 <entry>Video images are typically interlaced. Applications
59can request to capture or output only the top or bottom field, or both
60fields interlaced or sequentially stored in one buffer or alternating
61in separate buffers. Drivers return the actual field order selected.
62For more details on fields see <xref linkend="field-order" />.</entry>
63 </row>
64 <row>
65 <entry>__u32</entry>
66 <entry><structfield>bytesperline</structfield></entry>
67 <entry>Distance in bytes between the leftmost pixels in two
68adjacent lines.</entry>
69 </row>
70 <row>
71 <entry spanname="hspan"><para>Both applications and drivers
72can set this field to request padding bytes at the end of each line.
73Drivers however may ignore the value requested by the application,
74returning <structfield>width</structfield> times bytes per pixel or a
75larger value required by the hardware. That implies applications can
76just set this field to zero to get a reasonable
77default.</para><para>Video hardware may access padding bytes,
78therefore they must reside in accessible memory. Consider cases where
79padding bytes after the last line of an image cross a system page
80boundary. Input devices may write padding bytes, the value is
81undefined. Output devices ignore the contents of padding
82bytes.</para><para>When the image format is planar the
83<structfield>bytesperline</structfield> value applies to the first
84plane and is divided by the same factor as the
85<structfield>width</structfield> field for the other planes. For
86example the Cb and Cr planes of a YUV 4:2:0 image have half as many
87padding bytes following each line as the Y plane. To avoid ambiguities
88drivers must return a <structfield>bytesperline</structfield> value
89rounded up to a multiple of the scale factor.</para>
90<para>For compressed formats the <structfield>bytesperline</structfield>
91value makes no sense. Applications and drivers must set this to 0 in
92that case.</para></entry>
93 </row>
94 <row>
95 <entry>__u32</entry>
96 <entry><structfield>sizeimage</structfield></entry>
97 <entry>Size in bytes of the buffer to hold a complete image,
98set by the driver. Usually this is
99<structfield>bytesperline</structfield> times
100<structfield>height</structfield>. When the image consists of variable
101length compressed data this is the maximum number of bytes required to
102hold an image.</entry>
103 </row>
104 <row>
105 <entry>&v4l2-colorspace;</entry>
106 <entry><structfield>colorspace</structfield></entry>
107 <entry>This information supplements the
108<structfield>pixelformat</structfield> and must be set by the driver for
109capture streams and by the application for output streams,
110see <xref linkend="colorspaces" />.</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>priv</structfield></entry>
115 <entry><para>This field indicates whether the remaining fields of the
116<structname>v4l2_pix_format</structname> structure, also called the extended
117fields, are valid. When set to <constant>V4L2_PIX_FMT_PRIV_MAGIC</constant>, it
118indicates that the extended fields have been correctly initialized. When set to
119any other value it indicates that the extended fields contain undefined values.
120</para>
121<para>Applications that wish to use the pixel format extended fields must first
122ensure that the feature is supported by querying the device for the
123<link linkend="querycap"><constant>V4L2_CAP_EXT_PIX_FORMAT</constant></link>
124capability. If the capability isn't set the pixel format extended fields are not
125supported and using the extended fields will lead to undefined results.</para>
126<para>To use the extended fields, applications must set the
127<structfield>priv</structfield> field to
128<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant>, initialize all the extended fields
129and zero the unused bytes of the <structname>v4l2_format</structname>
130<structfield>raw_data</structfield> field.</para>
131<para>When the <structfield>priv</structfield> field isn't set to
132<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> drivers must act as if all the
133extended fields were set to zero. On return drivers must set the
134<structfield>priv</structfield> field to
135<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> and all the extended fields to
136applicable values.</para></entry>
137 </row>
138 <row>
139 <entry>__u32</entry>
140 <entry><structfield>flags</structfield></entry>
141 <entry>Flags set by the application or driver, see <xref
142linkend="format-flags" />.</entry>
143 </row>
144 <row>
145 <entry>&v4l2-ycbcr-encoding;</entry>
146 <entry><structfield>ycbcr_enc</structfield></entry>
147 <entry>This information supplements the
148<structfield>colorspace</structfield> and must be set by the driver for
149capture streams and by the application for output streams,
150see <xref linkend="colorspaces" />.</entry>
151 </row>
152 <row>
153 <entry>&v4l2-quantization;</entry>
154 <entry><structfield>quantization</structfield></entry>
155 <entry>This information supplements the
156<structfield>colorspace</structfield> and must be set by the driver for
157capture streams and by the application for output streams,
158see <xref linkend="colorspaces" />.</entry>
159 </row>
160 <row>
161 <entry>&v4l2-xfer-func;</entry>
162 <entry><structfield>xfer_func</structfield></entry>
163 <entry>This information supplements the
164<structfield>colorspace</structfield> and must be set by the driver for
165capture streams and by the application for output streams,
166see <xref linkend="colorspaces" />.</entry>
167 </row>
168 </tbody>
169 </tgroup>
170 </table>
171</section>
172
173<section>
174 <title>Multi-planar format structures</title>
175 <para>The <structname>v4l2_plane_pix_format</structname> structures define
176 size and layout for each of the planes in a multi-planar format.
177 The <structname>v4l2_pix_format_mplane</structname> structure contains
178 information common to all planes (such as image width and height) and
179 an array of <structname>v4l2_plane_pix_format</structname> structures,
180 describing all planes of that format.</para>
181 <table pgwide="1" frame="none" id="v4l2-plane-pix-format">
182 <title>struct <structname>v4l2_plane_pix_format</structname></title>
183 <tgroup cols="3">
184 &cs-str;
185 <tbody valign="top">
186 <row>
187 <entry>__u32</entry>
188 <entry><structfield>sizeimage</structfield></entry>
189 <entry>Maximum size in bytes required for image data in this plane.
190 </entry>
191 </row>
192 <row>
193 <entry>__u32</entry>
194 <entry><structfield>bytesperline</structfield></entry>
195 <entry>Distance in bytes between the leftmost pixels in two adjacent
196 lines. See &v4l2-pix-format;.</entry>
197 </row>
198 <row>
199 <entry>__u16</entry>
200 <entry><structfield>reserved[6]</structfield></entry>
201 <entry>Reserved for future extensions. Should be zeroed by drivers and
202 applications.</entry>
203 </row>
204 </tbody>
205 </tgroup>
206 </table>
207 <table pgwide="1" frame="none" id="v4l2-pix-format-mplane">
208 <title>struct <structname>v4l2_pix_format_mplane</structname></title>
209 <tgroup cols="3">
210 &cs-str;
211 <tbody valign="top">
212 <row>
213 <entry>__u32</entry>
214 <entry><structfield>width</structfield></entry>
215 <entry>Image width in pixels. See &v4l2-pix-format;.</entry>
216 </row>
217 <row>
218 <entry>__u32</entry>
219 <entry><structfield>height</structfield></entry>
220 <entry>Image height in pixels. See &v4l2-pix-format;.</entry>
221 </row>
222 <row>
223 <entry>__u32</entry>
224 <entry><structfield>pixelformat</structfield></entry>
225 <entry>The pixel format. Both single- and multi-planar four character
226codes can be used.</entry>
227 </row>
228 <row>
229 <entry>&v4l2-field;</entry>
230 <entry><structfield>field</structfield></entry>
231 <entry>See &v4l2-pix-format;.</entry>
232 </row>
233 <row>
234 <entry>&v4l2-colorspace;</entry>
235 <entry><structfield>colorspace</structfield></entry>
236 <entry>See &v4l2-pix-format;.</entry>
237 </row>
238 <row>
239 <entry>&v4l2-plane-pix-format;</entry>
240 <entry><structfield>plane_fmt[VIDEO_MAX_PLANES]</structfield></entry>
241 <entry>An array of structures describing format of each plane this
242 pixel format consists of. The number of valid entries in this array
243 has to be put in the <structfield>num_planes</structfield>
244 field.</entry>
245 </row>
246 <row>
247 <entry>__u8</entry>
248 <entry><structfield>num_planes</structfield></entry>
249 <entry>Number of planes (i.e. separate memory buffers) for this format
250 and the number of valid entries in the
251 <structfield>plane_fmt</structfield> array.</entry>
252 </row>
253 <row>
254 <entry>__u8</entry>
255 <entry><structfield>flags</structfield></entry>
256 <entry>Flags set by the application or driver, see <xref
257linkend="format-flags" />.</entry>
258 </row>
259 <row>
260 <entry>&v4l2-ycbcr-encoding;</entry>
261 <entry><structfield>ycbcr_enc</structfield></entry>
262 <entry>This information supplements the
263<structfield>colorspace</structfield> and must be set by the driver for
264capture streams and by the application for output streams,
265see <xref linkend="colorspaces" />.</entry>
266 </row>
267 <row>
268 <entry>&v4l2-quantization;</entry>
269 <entry><structfield>quantization</structfield></entry>
270 <entry>This information supplements the
271<structfield>colorspace</structfield> and must be set by the driver for
272capture streams and by the application for output streams,
273see <xref linkend="colorspaces" />.</entry>
274 </row>
275 <row>
276 <entry>&v4l2-xfer-func;</entry>
277 <entry><structfield>xfer_func</structfield></entry>
278 <entry>This information supplements the
279<structfield>colorspace</structfield> and must be set by the driver for
280capture streams and by the application for output streams,
281see <xref linkend="colorspaces" />.</entry>
282 </row>
283 <row>
284 <entry>__u8</entry>
285 <entry><structfield>reserved[7]</structfield></entry>
286 <entry>Reserved for future extensions. Should be zeroed by drivers
287 and applications.</entry>
288 </row>
289 </tbody>
290 </tgroup>
291 </table>
292</section>
293
294 <section>
295 <title>Standard Image Formats</title>
296
297 <para>In order to exchange images between drivers and
298applications, it is necessary to have standard image data formats
299which both sides will interpret the same way. V4L2 includes several
300such formats, and this section is intended to be an unambiguous
301specification of the standard image data formats in V4L2.</para>
302
303 <para>V4L2 drivers are not limited to these formats, however.
304Driver-specific formats are possible. In that case the application may
305depend on a codec to convert images to one of the standard formats
306when needed. But the data can still be stored and retrieved in the
307proprietary format. For example, a device may support a proprietary
308compressed format. Applications can still capture and save the data in
309the compressed format, saving much disk space, and later use a codec
310to convert the images to the X Windows screen format when the video is
311to be displayed.</para>
312
313 <para>Even so, ultimately, some standard formats are needed, so
314the V4L2 specification would not be complete without well-defined
315standard formats.</para>
316
317 <para>The V4L2 standard formats are mainly uncompressed formats. The
318pixels are always arranged in memory from left to right, and from top
319to bottom. The first byte of data in the image buffer is always for
320the leftmost pixel of the topmost row. Following that is the pixel
321immediately to its right, and so on until the end of the top row of
322pixels. Following the rightmost pixel of the row there may be zero or
323more bytes of padding to guarantee that each row of pixel data has a
324certain alignment. Following the pad bytes, if any, is data for the
325leftmost pixel of the second row from the top, and so on. The last row
326has just as many pad bytes after it as the other rows.</para>
327
328 <para>In V4L2 each format has an identifier which looks like
329<constant>PIX_FMT_XXX</constant>, defined in the <link
330linkend="videodev">videodev2.h</link> header file. These identifiers
331represent <link linkend="v4l2-fourcc">four character (FourCC) codes</link>
332which are also listed below, however they are not the same as those
333used in the Windows world.</para>
334
335 <para>For some formats, data is stored in separate, discontiguous
336memory buffers. Those formats are identified by a separate set of FourCC codes
337and are referred to as "multi-planar formats". For example, a YUV422 frame is
338normally stored in one memory buffer, but it can also be placed in two or three
339separate buffers, with Y component in one buffer and CbCr components in another
340in the 2-planar version or with each component in its own buffer in the
3413-planar case. Those sub-buffers are referred to as "planes".</para>
342 </section>
343
344 <section id="colorspaces">
345 <title>Colorspaces</title>
346
347 <para>'Color' is a very complex concept and depends on physics, chemistry and
348biology. Just because you have three numbers that describe the 'red', 'green'
349and 'blue' components of the color of a pixel does not mean that you can accurately
350display that color. A colorspace defines what it actually <emphasis>means</emphasis>
351to have an RGB value of e.g. (255,&nbsp;0,&nbsp;0). That is, which color should be
352reproduced on the screen in a perfectly calibrated environment.</para>
353
354 <para>In order to do that we first need to have a good definition of
355color, i.e. some way to uniquely and unambiguously define a color so that someone
356else can reproduce it. Human color vision is trichromatic since the human eye has
357color receptors that are sensitive to three different wavelengths of light. Hence
358the need to use three numbers to describe color. Be glad you are not a mantis shrimp
359as those are sensitive to 12 different wavelengths, so instead of RGB we would be
360using the ABCDEFGHIJKL colorspace...</para>
361
362 <para>Color exists only in the eye and brain and is the result of how strongly
363color receptors are stimulated. This is based on the Spectral
364Power Distribution (SPD) which is a graph showing the intensity (radiant power)
365of the light at wavelengths covering the visible spectrum as it enters the eye.
366The science of colorimetry is about the relationship between the SPD and color as
367perceived by the human brain.</para>
368
369 <para>Since the human eye has only three color receptors it is perfectly
370possible that different SPDs will result in the same stimulation of those receptors
371and are perceived as the same color, even though the SPD of the light is
372different.</para>
373
374 <para>In the 1920s experiments were devised to determine the relationship
375between SPDs and the perceived color and that resulted in the CIE 1931 standard
376that defines spectral weighting functions that model the perception of color.
377Specifically that standard defines functions that can take an SPD and calculate
378the stimulus for each color receptor. After some further mathematical transforms
379these stimuli are known as the <emphasis>CIE XYZ tristimulus</emphasis> values
380and these X, Y and Z values describe a color as perceived by a human unambiguously.
381These X, Y and Z values are all in the range [0&hellip;1].</para>
382
383 <para>The Y value in the CIE XYZ colorspace corresponds to luminance. Often
384the CIE XYZ colorspace is transformed to the normalized CIE xyY colorspace:</para>
385
386 <para>x = X / (X + Y + Z)</para>
387 <para>y = Y / (X + Y + Z)</para>
388
389 <para>The x and y values are the chromaticity coordinates and can be used to
390define a color without the luminance component Y. It is very confusing to
391have such similar names for these colorspaces. Just be aware that if colors
392are specified with lower case 'x' and 'y', then the CIE xyY colorspace is
393used. Upper case 'X' and 'Y' refer to the CIE XYZ colorspace. Also, y has nothing
394to do with luminance. Together x and y specify a color, and Y the luminance.
395That is really all you need to remember from a practical point of view. At
396the end of this section you will find reading resources that go into much more
397detail if you are interested.
398</para>
399
400 <para>A monitor or TV will reproduce colors by emitting light at three
401different wavelengths, the combination of which will stimulate the color receptors
402in the eye and thus cause the perception of color. Historically these wavelengths
403were defined by the red, green and blue phosphors used in the displays. These
404<emphasis>color primaries</emphasis> are part of what defines a colorspace.</para>
405
406 <para>Different display devices will have different primaries and some
407primaries are more suitable for some display technologies than others. This has
408resulted in a variety of colorspaces that are used for different display
409technologies or uses. To define a colorspace you need to define the three
410color primaries (these are typically defined as x,&nbsp;y chromaticity coordinates
411from the CIE xyY colorspace) but also the white reference: that is the color obtained
412when all three primaries are at maximum power. This determines the relative power
413or energy of the primaries. This is usually chosen to be close to daylight which has
414been defined as the CIE D65 Illuminant.</para>
415
416 <para>To recapitulate: the CIE XYZ colorspace uniquely identifies colors.
417Other colorspaces are defined by three chromaticity coordinates defined in the
418CIE xyY colorspace. Based on those a 3x3 matrix can be constructed that
419transforms CIE XYZ colors to colors in the new colorspace.
420</para>
421
422 <para>Both the CIE XYZ and the RGB colorspace that are derived from the
423specific chromaticity primaries are linear colorspaces. But neither the eye,
424nor display technology is linear. Doubling the values of all components in
425the linear colorspace will not be perceived as twice the intensity of the color.
426So each colorspace also defines a transfer function that takes a linear color
427component value and transforms it to the non-linear component value, which is a
428closer match to the non-linear performance of both the eye and displays. Linear
429component values are denoted RGB, non-linear are denoted as R'G'B'. In general
430colors used in graphics are all R'G'B', except in openGL which uses linear RGB.
431Special care should be taken when dealing with openGL to provide linear RGB colors
432or to use the built-in openGL support to apply the inverse transfer function.</para>
433
434 <para>The final piece that defines a colorspace is a function that
435transforms non-linear R'G'B' to non-linear Y'CbCr. This function is determined
436by the so-called luma coefficients. There may be multiple possible Y'CbCr
437encodings allowed for the same colorspace. Many encodings of color
438prefer to use luma (Y') and chroma (CbCr) instead of R'G'B'. Since the human
439eye is more sensitive to differences in luminance than in color this encoding
440allows one to reduce the amount of color information compared to the luma
441data. Note that the luma (Y') is unrelated to the Y in the CIE XYZ colorspace.
442Also note that Y'CbCr is often called YCbCr or YUV even though these are
443strictly speaking wrong.</para>
444
445 <para>Sometimes people confuse Y'CbCr as being a colorspace. This is not
446correct, it is just an encoding of an R'G'B' color into luma and chroma
447values. The underlying colorspace that is associated with the R'G'B' color
448is also associated with the Y'CbCr color.</para>
449
450 <para>The final step is how the RGB, R'G'B' or Y'CbCr values are
451quantized. The CIE XYZ colorspace where X, Y and Z are in the range
452[0&hellip;1] describes all colors that humans can perceive, but the transform to
453another colorspace will produce colors that are outside the [0&hellip;1] range.
454Once clamped to the [0&hellip;1] range those colors can no longer be reproduced
455in that colorspace. This clamping is what reduces the extent or gamut of the
456colorspace. How the range of [0&hellip;1] is translated to integer values in the
457range of [0&hellip;255] (or higher, depending on the color depth) is called the
458quantization. This is <emphasis>not</emphasis> part of the colorspace
459definition. In practice RGB or R'G'B' values are full range, i.e. they
460use the full [0&hellip;255] range. Y'CbCr values on the other hand are limited
461range with Y' using [16&hellip;235] and Cb and Cr using [16&hellip;240].</para>
462
463 <para>Unfortunately, in some cases limited range RGB is also used
464where the components use the range [16&hellip;235]. And full range Y'CbCr also exists
465using the [0&hellip;255] range.</para>
466
467 <para>In order to correctly interpret a color you need to know the
468quantization range, whether it is R'G'B' or Y'CbCr, the used Y'CbCr encoding
469and the colorspace.
470From that information you can calculate the corresponding CIE XYZ color
471and map that again to whatever colorspace your display device uses.</para>
472
473 <para>The colorspace definition itself consists of the three
474chromaticity primaries, the white reference chromaticity, a transfer
475function and the luma coefficients needed to transform R'G'B' to Y'CbCr. While
476some colorspace standards correctly define all four, quite often the colorspace
477standard only defines some, and you have to rely on other standards for
478the missing pieces. The fact that colorspaces are often a mix of different
479standards also led to very confusing naming conventions where the name of
480a standard was used to name a colorspace when in fact that standard was
481part of various other colorspaces as well.</para>
482
483 <para>If you want to read more about colors and colorspaces, then the
484following resources are useful: <xref linkend="poynton" /> is a good practical
485book for video engineers, <xref linkend="colimg" /> has a much broader scope and
486describes many more aspects of color (physics, chemistry, biology, etc.).
487The <ulink url="http://www.brucelindbloom.com">http://www.brucelindbloom.com</ulink>
488website is an excellent resource, especially with respect to the mathematics behind
489colorspace conversions. The wikipedia <ulink url="http://en.wikipedia.org/wiki/CIE_1931_color_space#CIE_xy_chromaticity_diagram_and_the_CIE_xyY_color_space">CIE 1931 colorspace</ulink> article
490is also very useful.</para>
491 </section>
492
493 <section>
494 <title>Defining Colorspaces in V4L2</title>
495 <para>In V4L2 colorspaces are defined by four values. The first is the colorspace
496identifier (&v4l2-colorspace;) which defines the chromaticities, the default transfer
497function, the default Y'CbCr encoding and the default quantization method. The second
498is the transfer function identifier (&v4l2-xfer-func;) to specify non-standard
499transfer functions. The third is the Y'CbCr encoding identifier (&v4l2-ycbcr-encoding;)
500to specify non-standard Y'CbCr encodings and the fourth is the quantization identifier
501(&v4l2-quantization;) to specify non-standard quantization methods. Most of the time
502only the colorspace field of &v4l2-pix-format; or &v4l2-pix-format-mplane; needs to
503be filled in. Note that the default R'G'B' quantization is full range for all
504colorspaces except for BT.2020 which uses limited range R'G'B' quantization.</para>
505
506 <table pgwide="1" frame="none" id="v4l2-colorspace">
507 <title>V4L2 Colorspaces</title>
508 <tgroup cols="2" align="left">
509 &cs-def;
510 <thead>
511 <row>
512 <entry>Identifier</entry>
513 <entry>Details</entry>
514 </row>
515 </thead>
516 <tbody valign="top">
517 <row>
518 <entry><constant>V4L2_COLORSPACE_DEFAULT</constant></entry>
519 <entry>The default colorspace. This can be used by applications to let the
520 driver fill in the colorspace.</entry>
521 </row>
522 <row>
523 <entry><constant>V4L2_COLORSPACE_SMPTE170M</constant></entry>
524 <entry>See <xref linkend="col-smpte-170m" />.</entry>
525 </row>
526 <row>
527 <entry><constant>V4L2_COLORSPACE_REC709</constant></entry>
528 <entry>See <xref linkend="col-rec709" />.</entry>
529 </row>
530 <row>
531 <entry><constant>V4L2_COLORSPACE_SRGB</constant></entry>
532 <entry>See <xref linkend="col-srgb" />.</entry>
533 </row>
534 <row>
535 <entry><constant>V4L2_COLORSPACE_ADOBERGB</constant></entry>
536 <entry>See <xref linkend="col-adobergb" />.</entry>
537 </row>
538 <row>
539 <entry><constant>V4L2_COLORSPACE_BT2020</constant></entry>
540 <entry>See <xref linkend="col-bt2020" />.</entry>
541 </row>
542 <row>
543 <entry><constant>V4L2_COLORSPACE_DCI_P3</constant></entry>
544 <entry>See <xref linkend="col-dcip3" />.</entry>
545 </row>
546 <row>
547 <entry><constant>V4L2_COLORSPACE_SMPTE240M</constant></entry>
548 <entry>See <xref linkend="col-smpte-240m" />.</entry>
549 </row>
550 <row>
551 <entry><constant>V4L2_COLORSPACE_470_SYSTEM_M</constant></entry>
552 <entry>See <xref linkend="col-sysm" />.</entry>
553 </row>
554 <row>
555 <entry><constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant></entry>
556 <entry>See <xref linkend="col-sysbg" />.</entry>
557 </row>
558 <row>
559 <entry><constant>V4L2_COLORSPACE_JPEG</constant></entry>
560 <entry>See <xref linkend="col-jpeg" />.</entry>
561 </row>
562 <row>
563 <entry><constant>V4L2_COLORSPACE_RAW</constant></entry>
564 <entry>The raw colorspace. This is used for raw image capture where
565 the image is minimally processed and is using the internal colorspace
566 of the device. The software that processes an image using this
567 'colorspace' will have to know the internals of the capture device.</entry>
568 </row>
569 </tbody>
570 </tgroup>
571 </table>
572
573 <table pgwide="1" frame="none" id="v4l2-xfer-func">
574 <title>V4L2 Transfer Function</title>
575 <tgroup cols="2" align="left">
576 &cs-def;
577 <thead>
578 <row>
579 <entry>Identifier</entry>
580 <entry>Details</entry>
581 </row>
582 </thead>
583 <tbody valign="top">
584 <row>
585 <entry><constant>V4L2_XFER_FUNC_DEFAULT</constant></entry>
586 <entry>Use the default transfer function as defined by the colorspace.</entry>
587 </row>
588 <row>
589 <entry><constant>V4L2_XFER_FUNC_709</constant></entry>
590 <entry>Use the Rec. 709 transfer function.</entry>
591 </row>
592 <row>
593 <entry><constant>V4L2_XFER_FUNC_SRGB</constant></entry>
594 <entry>Use the sRGB transfer function.</entry>
595 </row>
596 <row>
597 <entry><constant>V4L2_XFER_FUNC_ADOBERGB</constant></entry>
598 <entry>Use the AdobeRGB transfer function.</entry>
599 </row>
600 <row>
601 <entry><constant>V4L2_XFER_FUNC_SMPTE240M</constant></entry>
602 <entry>Use the SMPTE 240M transfer function.</entry>
603 </row>
604 <row>
605 <entry><constant>V4L2_XFER_FUNC_NONE</constant></entry>
606 <entry>Do not use a transfer function (i.e. use linear RGB values).</entry>
607 </row>
608 <row>
609 <entry><constant>V4L2_XFER_FUNC_DCI_P3</constant></entry>
610 <entry>Use the DCI-P3 transfer function.</entry>
611 </row>
612 <row>
613 <entry><constant>V4L2_XFER_FUNC_SMPTE2084</constant></entry>
614 <entry>Use the SMPTE 2084 transfer function.</entry>
615 </row>
616 </tbody>
617 </tgroup>
618 </table>
619
620 <table pgwide="1" frame="none" id="v4l2-ycbcr-encoding">
621 <title>V4L2 Y'CbCr Encodings</title>
622 <tgroup cols="2" align="left">
623 &cs-def;
624 <thead>
625 <row>
626 <entry>Identifier</entry>
627 <entry>Details</entry>
628 </row>
629 </thead>
630 <tbody valign="top">
631 <row>
632 <entry><constant>V4L2_YCBCR_ENC_DEFAULT</constant></entry>
633 <entry>Use the default Y'CbCr encoding as defined by the colorspace.</entry>
634 </row>
635 <row>
636 <entry><constant>V4L2_YCBCR_ENC_601</constant></entry>
637 <entry>Use the BT.601 Y'CbCr encoding.</entry>
638 </row>
639 <row>
640 <entry><constant>V4L2_YCBCR_ENC_709</constant></entry>
641 <entry>Use the Rec. 709 Y'CbCr encoding.</entry>
642 </row>
643 <row>
644 <entry><constant>V4L2_YCBCR_ENC_XV601</constant></entry>
645 <entry>Use the extended gamut xvYCC BT.601 encoding.</entry>
646 </row>
647 <row>
648 <entry><constant>V4L2_YCBCR_ENC_XV709</constant></entry>
649 <entry>Use the extended gamut xvYCC Rec. 709 encoding.</entry>
650 </row>
651 <row>
652 <entry><constant>V4L2_YCBCR_ENC_SYCC</constant></entry>
653 <entry>Use the extended gamut sYCC encoding.</entry>
654 </row>
655 <row>
656 <entry><constant>V4L2_YCBCR_ENC_BT2020</constant></entry>
657 <entry>Use the default non-constant luminance BT.2020 Y'CbCr encoding.</entry>
658 </row>
659 <row>
660 <entry><constant>V4L2_YCBCR_ENC_BT2020_CONST_LUM</constant></entry>
661 <entry>Use the constant luminance BT.2020 Yc'CbcCrc encoding.</entry>
662 </row>
663 </tbody>
664 </tgroup>
665 </table>
666
667 <table pgwide="1" frame="none" id="v4l2-quantization">
668 <title>V4L2 Quantization Methods</title>
669 <tgroup cols="2" align="left">
670 &cs-def;
671 <thead>
672 <row>
673 <entry>Identifier</entry>
674 <entry>Details</entry>
675 </row>
676 </thead>
677 <tbody valign="top">
678 <row>
679 <entry><constant>V4L2_QUANTIZATION_DEFAULT</constant></entry>
680 <entry>Use the default quantization encoding as defined by the colorspace.
681This is always full range for R'G'B' (except for the BT.2020 colorspace) and usually
682limited range for Y'CbCr.</entry>
683 </row>
684 <row>
685 <entry><constant>V4L2_QUANTIZATION_FULL_RANGE</constant></entry>
686 <entry>Use the full range quantization encoding. I.e. the range [0&hellip;1]
687is mapped to [0&hellip;255] (with possible clipping to [1&hellip;254] to avoid the
6880x00 and 0xff values). Cb and Cr are mapped from [-0.5&hellip;0.5] to [0&hellip;255]
689(with possible clipping to [1&hellip;254] to avoid the 0x00 and 0xff values).</entry>
690 </row>
691 <row>
692 <entry><constant>V4L2_QUANTIZATION_LIM_RANGE</constant></entry>
693 <entry>Use the limited range quantization encoding. I.e. the range [0&hellip;1]
694is mapped to [16&hellip;235]. Cb and Cr are mapped from [-0.5&hellip;0.5] to [16&hellip;240].
695</entry>
696 </row>
697 </tbody>
698 </tgroup>
699 </table>
700 </section>
701
702 <section>
703 <title>Detailed Colorspace Descriptions</title>
704 <section id="col-smpte-170m">
705 <title>Colorspace SMPTE 170M (<constant>V4L2_COLORSPACE_SMPTE170M</constant>)</title>
706 <para>The <xref linkend="smpte170m" /> standard defines the colorspace used by NTSC and PAL and by SDTV
707in general. The default transfer function is <constant>V4L2_XFER_FUNC_709</constant>.
708The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>.
709The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and
710the white reference are:</para>
711 <table frame="none">
712 <title>SMPTE 170M Chromaticities</title>
713 <tgroup cols="3" align="left">
714 &cs-str;
715 <thead>
716 <row>
717 <entry>Color</entry>
718 <entry>x</entry>
719 <entry>y</entry>
720 </row>
721 </thead>
722 <tbody valign="top">
723 <row>
724 <entry>Red</entry>
725 <entry>0.630</entry>
726 <entry>0.340</entry>
727 </row>
728 <row>
729 <entry>Green</entry>
730 <entry>0.310</entry>
731 <entry>0.595</entry>
732 </row>
733 <row>
734 <entry>Blue</entry>
735 <entry>0.155</entry>
736 <entry>0.070</entry>
737 </row>
738 <row>
739 <entry>White Reference (D65)</entry>
740 <entry>0.3127</entry>
741 <entry>0.3290</entry>
742 </row>
743 </tbody>
744 </tgroup>
745 </table>
746 <para>The red, green and blue chromaticities are also often referred to
747as the SMPTE C set, so this colorspace is sometimes called SMPTE C as well.</para>
748 <variablelist>
749 <varlistentry>
750 <term>The transfer function defined for SMPTE 170M is the same as the
751one defined in Rec. 709.</term>
752 <listitem>
753 <para>L' = -1.099(-L)<superscript>0.45</superscript>&nbsp;+&nbsp;0.099&nbsp;for&nbsp;L&nbsp;&le;&nbsp;-0.018</para>
754 <para>L' = 4.5L&nbsp;for&nbsp;-0.018&nbsp;&lt;&nbsp;L&nbsp;&lt;&nbsp;0.018</para>
755 <para>L' = 1.099L<superscript>0.45</superscript>&nbsp;-&nbsp;0.099&nbsp;for&nbsp;L&nbsp;&ge;&nbsp;0.018</para>
756 </listitem>
757 </varlistentry>
758 </variablelist>
759 <variablelist>
760 <varlistentry>
761 <term>Inverse Transfer function:</term>
762 <listitem>
763 <para>L = -((L'&nbsp;-&nbsp;0.099)&nbsp;/&nbsp;-1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&le;&nbsp;-0.081</para>
764 <para>L = L'&nbsp;/&nbsp;4.5&nbsp;for&nbsp;-0.081&nbsp;&lt;&nbsp;L'&nbsp;&lt;&nbsp;0.081</para>
765 <para>L = ((L'&nbsp;+&nbsp;0.099)&nbsp;/&nbsp;1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&ge;&nbsp;0.081</para>
766 </listitem>
767 </varlistentry>
768 </variablelist>
769 <variablelist>
770 <varlistentry>
771 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with
772the following <constant>V4L2_YCBCR_ENC_601</constant> encoding:</term>
773 <listitem>
774 <para>Y'&nbsp;=&nbsp;0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B'</para>
775 <para>Cb&nbsp;=&nbsp;-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B'</para>
776 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B'</para>
777 </listitem>
778 </varlistentry>
779 </variablelist>
780 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are
781clamped to the range [-0.5&hellip;0.5]. This conversion to Y'CbCr is identical to the one
782defined in the <xref linkend="itu601" /> standard and this colorspace is sometimes called BT.601 as well, even
783though BT.601 does not mention any color primaries.</para>
784 <para>The default quantization is limited range, but full range is possible although
785rarely seen.</para>
786 </section>
787
788 <section id="col-rec709">
789 <title>Colorspace Rec. 709 (<constant>V4L2_COLORSPACE_REC709</constant>)</title>
790 <para>The <xref linkend="itu709" /> standard defines the colorspace used by HDTV in general.
791The default transfer function is <constant>V4L2_XFER_FUNC_709</constant>. The default
792Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_709</constant>. The default Y'CbCr quantization is
793limited range. The chromaticities of the primary colors and the white reference are:</para>
794 <table frame="none">
795 <title>Rec. 709 Chromaticities</title>
796 <tgroup cols="3" align="left">
797 &cs-str;
798 <thead>
799 <row>
800 <entry>Color</entry>
801 <entry>x</entry>
802 <entry>y</entry>
803 </row>
804 </thead>
805 <tbody valign="top">
806 <row>
807 <entry>Red</entry>
808 <entry>0.640</entry>
809 <entry>0.330</entry>
810 </row>
811 <row>
812 <entry>Green</entry>
813 <entry>0.300</entry>
814 <entry>0.600</entry>
815 </row>
816 <row>
817 <entry>Blue</entry>
818 <entry>0.150</entry>
819 <entry>0.060</entry>
820 </row>
821 <row>
822 <entry>White Reference (D65)</entry>
823 <entry>0.3127</entry>
824 <entry>0.3290</entry>
825 </row>
826 </tbody>
827 </tgroup>
828 </table>
829 <para>The full name of this standard is Rec. ITU-R BT.709-5.</para>
830 <variablelist>
831 <varlistentry>
832 <term>Transfer function. Normally L is in the range [0&hellip;1], but for the extended
833gamut xvYCC encoding values outside that range are allowed.</term>
834 <listitem>
835 <para>L' = -1.099(-L)<superscript>0.45</superscript>&nbsp;+&nbsp;0.099&nbsp;for&nbsp;L&nbsp;&le;&nbsp;-0.018</para>
836 <para>L' = 4.5L&nbsp;for&nbsp;-0.018&nbsp;&lt;&nbsp;L&nbsp;&lt;&nbsp;0.018</para>
837 <para>L' = 1.099L<superscript>0.45</superscript>&nbsp;-&nbsp;0.099&nbsp;for&nbsp;L&nbsp;&ge;&nbsp;0.018</para>
838 </listitem>
839 </varlistentry>
840 </variablelist>
841 <variablelist>
842 <varlistentry>
843 <term>Inverse Transfer function:</term>
844 <listitem>
845 <para>L = -((L'&nbsp;-&nbsp;0.099)&nbsp;/&nbsp;-1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&le;&nbsp;-0.081</para>
846 <para>L = L'&nbsp;/&nbsp;4.5&nbsp;for&nbsp;-0.081&nbsp;&lt;&nbsp;L'&nbsp;&lt;&nbsp;0.081</para>
847 <para>L = ((L'&nbsp;+&nbsp;0.099)&nbsp;/&nbsp;1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&ge;&nbsp;0.081</para>
848 </listitem>
849 </varlistentry>
850 </variablelist>
851 <variablelist>
852 <varlistentry>
853 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the following
854<constant>V4L2_YCBCR_ENC_709</constant> encoding:</term>
855 <listitem>
856 <para>Y'&nbsp;=&nbsp;0.2126R'&nbsp;+&nbsp;0.7152G'&nbsp;+&nbsp;0.0722B'</para>
857 <para>Cb&nbsp;=&nbsp;-0.1146R'&nbsp;-&nbsp;0.3854G'&nbsp;+&nbsp;0.5B'</para>
858 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.4542G'&nbsp;-&nbsp;0.0458B'</para>
859 </listitem>
860 </varlistentry>
861 </variablelist>
862 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are
863clamped to the range [-0.5&hellip;0.5].</para>
864 <para>The default quantization is limited range, but full range is possible although
865rarely seen.</para>
866 <para>The <constant>V4L2_YCBCR_ENC_709</constant> encoding described above is the default
867for this colorspace, but it can be overridden with <constant>V4L2_YCBCR_ENC_601</constant>, in which
868case the BT.601 Y'CbCr encoding is used.</para>
869 <para>Two additional extended gamut Y'CbCr encodings are also possible with this colorspace:</para>
870 <variablelist>
871 <varlistentry>
872 <term>The xvYCC 709 encoding (<constant>V4L2_YCBCR_ENC_XV709</constant>, <xref linkend="xvycc" />)
873is similar to the Rec. 709 encoding, but it allows for R', G' and B' values that are outside the range
874[0&hellip;1]. The resulting Y', Cb and Cr values are scaled and offset:</term>
875 <listitem>
876 <para>Y'&nbsp;=&nbsp;(219&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.2126R'&nbsp;+&nbsp;0.7152G'&nbsp;+&nbsp;0.0722B')&nbsp;+&nbsp;(16&nbsp;/&nbsp;256)</para>
877 <para>Cb&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(-0.1146R'&nbsp;-&nbsp;0.3854G'&nbsp;+&nbsp;0.5B')</para>
878 <para>Cr&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.5R'&nbsp;-&nbsp;0.4542G'&nbsp;-&nbsp;0.0458B')</para>
879 </listitem>
880 </varlistentry>
881 </variablelist>
882 <variablelist>
883 <varlistentry>
884 <term>The xvYCC 601 encoding (<constant>V4L2_YCBCR_ENC_XV601</constant>, <xref linkend="xvycc" />) is similar
885to the BT.601 encoding, but it allows for R', G' and B' values that are outside the range
886[0&hellip;1]. The resulting Y', Cb and Cr values are scaled and offset:</term>
887 <listitem>
888 <para>Y'&nbsp;=&nbsp;(219&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B')&nbsp;+&nbsp;(16&nbsp;/&nbsp;256)</para>
889 <para>Cb&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B')</para>
890 <para>Cr&nbsp;=&nbsp;(224&nbsp;/&nbsp;256)&nbsp;*&nbsp;(0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B')</para>
891 </listitem>
892 </varlistentry>
893 </variablelist>
894 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are clamped
895to the range [-0.5&hellip;0.5]. The non-standard xvYCC 709 or xvYCC 601 encodings can be used by
896selecting <constant>V4L2_YCBCR_ENC_XV709</constant> or <constant>V4L2_YCBCR_ENC_XV601</constant>.
897The xvYCC encodings always use full range quantization.</para>
898 </section>
899
900 <section id="col-srgb">
901 <title>Colorspace sRGB (<constant>V4L2_COLORSPACE_SRGB</constant>)</title>
902 <para>The <xref linkend="srgb" /> standard defines the colorspace used by most webcams
903and computer graphics. The default transfer function is <constant>V4L2_XFER_FUNC_SRGB</constant>.
904The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_SYCC</constant>. The default Y'CbCr
905quantization is full range. The chromaticities of the primary colors and the white
906reference are:</para>
907 <table frame="none">
908 <title>sRGB Chromaticities</title>
909 <tgroup cols="3" align="left">
910 &cs-str;
911 <thead>
912 <row>
913 <entry>Color</entry>
914 <entry>x</entry>
915 <entry>y</entry>
916 </row>
917 </thead>
918 <tbody valign="top">
919 <row>
920 <entry>Red</entry>
921 <entry>0.640</entry>
922 <entry>0.330</entry>
923 </row>
924 <row>
925 <entry>Green</entry>
926 <entry>0.300</entry>
927 <entry>0.600</entry>
928 </row>
929 <row>
930 <entry>Blue</entry>
931 <entry>0.150</entry>
932 <entry>0.060</entry>
933 </row>
934 <row>
935 <entry>White Reference (D65)</entry>
936 <entry>0.3127</entry>
937 <entry>0.3290</entry>
938 </row>
939 </tbody>
940 </tgroup>
941 </table>
942 <para>These chromaticities are identical to the Rec. 709 colorspace.</para>
943 <variablelist>
944 <varlistentry>
945 <term>Transfer function. Note that negative values for L are only used by the Y'CbCr conversion.</term>
946 <listitem>
947 <para>L' = -1.055(-L)<superscript>1/2.4</superscript>&nbsp;+&nbsp;0.055&nbsp;for&nbsp;L&nbsp;&lt;&nbsp;-0.0031308</para>
948 <para>L' = 12.92L&nbsp;for&nbsp;-0.0031308&nbsp;&le;&nbsp;L&nbsp;&le;&nbsp;0.0031308</para>
949 <para>L' = 1.055L<superscript>1/2.4</superscript>&nbsp;-&nbsp;0.055&nbsp;for&nbsp;0.0031308&nbsp;&lt;&nbsp;L&nbsp;&le;&nbsp;1</para>
950 </listitem>
951 </varlistentry>
952 <varlistentry>
953 <term>Inverse Transfer function:</term>
954 <listitem>
955 <para>L = -((-L'&nbsp;+&nbsp;0.055)&nbsp;/&nbsp;1.055)<superscript>2.4</superscript>&nbsp;for&nbsp;L'&nbsp;&lt;&nbsp;-0.04045</para>
956 <para>L = L'&nbsp;/&nbsp;12.92&nbsp;for&nbsp;-0.04045&nbsp;&le;&nbsp;L'&nbsp;&le;&nbsp;0.04045</para>
957 <para>L = ((L'&nbsp;+&nbsp;0.055)&nbsp;/&nbsp;1.055)<superscript>2.4</superscript>&nbsp;for&nbsp;L'&nbsp;&gt;&nbsp;0.04045</para>
958 </listitem>
959 </varlistentry>
960 </variablelist>
961 <variablelist>
962 <varlistentry>
963 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the following
964<constant>V4L2_YCBCR_ENC_SYCC</constant> encoding as defined by <xref linkend="sycc" />:</term>
965 <listitem>
966 <para>Y'&nbsp;=&nbsp;0.2990R'&nbsp;+&nbsp;0.5870G'&nbsp;+&nbsp;0.1140B'</para>
967 <para>Cb&nbsp;=&nbsp;-0.1687R'&nbsp;-&nbsp;0.3313G'&nbsp;+&nbsp;0.5B'</para>
968 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.4187G'&nbsp;-&nbsp;0.0813B'</para>
969 </listitem>
970 </varlistentry>
971 </variablelist>
972 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are clamped
973to the range [-0.5&hellip;0.5]. The <constant>V4L2_YCBCR_ENC_SYCC</constant> quantization is always
974full range. Although this Y'CbCr encoding looks very similar to the <constant>V4L2_YCBCR_ENC_XV601</constant>
975encoding, it is not. The <constant>V4L2_YCBCR_ENC_XV601</constant> scales and offsets the Y'CbCr
976values before quantization, but this encoding does not do that.</para>
977 </section>
978
979 <section id="col-adobergb">
980 <title>Colorspace Adobe RGB (<constant>V4L2_COLORSPACE_ADOBERGB</constant>)</title>
981 <para>The <xref linkend="adobergb" /> standard defines the colorspace used by computer graphics
982that use the AdobeRGB colorspace. This is also known as the <xref linkend="oprgb" /> standard.
983The default transfer function is <constant>V4L2_XFER_FUNC_ADOBERGB</constant>.
984The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>. The default Y'CbCr
985quantization is limited range. The chromaticities of the primary colors and the white reference
986are:</para>
987 <table frame="none">
988 <title>Adobe RGB Chromaticities</title>
989 <tgroup cols="3" align="left">
990 &cs-str;
991 <thead>
992 <row>
993 <entry>Color</entry>
994 <entry>x</entry>
995 <entry>y</entry>
996 </row>
997 </thead>
998 <tbody valign="top">
999 <row>
1000 <entry>Red</entry>
1001 <entry>0.6400</entry>
1002 <entry>0.3300</entry>
1003 </row>
1004 <row>
1005 <entry>Green</entry>
1006 <entry>0.2100</entry>
1007 <entry>0.7100</entry>
1008 </row>
1009 <row>
1010 <entry>Blue</entry>
1011 <entry>0.1500</entry>
1012 <entry>0.0600</entry>
1013 </row>
1014 <row>
1015 <entry>White Reference (D65)</entry>
1016 <entry>0.3127</entry>
1017 <entry>0.3290</entry>
1018 </row>
1019 </tbody>
1020 </tgroup>
1021 </table>
1022 <variablelist>
1023 <varlistentry>
1024 <term>Transfer function:</term>
1025 <listitem>
1026 <para>L' = L<superscript>1/2.19921875</superscript></para>
1027 </listitem>
1028 </varlistentry>
1029 <varlistentry>
1030 <term>Inverse Transfer function:</term>
1031 <listitem>
1032 <para>L = L'<superscript>2.19921875</superscript></para>
1033 </listitem>
1034 </varlistentry>
1035 </variablelist>
1036 <variablelist>
1037 <varlistentry>
1038 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the
1039following <constant>V4L2_YCBCR_ENC_601</constant> encoding:</term>
1040 <listitem>
1041 <para>Y'&nbsp;=&nbsp;0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B'</para>
1042 <para>Cb&nbsp;=&nbsp;-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B'</para>
1043 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B'</para>
1044 </listitem>
1045 </varlistentry>
1046 </variablelist>
1047 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are
1048clamped to the range [-0.5&hellip;0.5]. This transform is identical to one defined in
1049SMPTE 170M/BT.601. The Y'CbCr quantization is limited range.</para>
1050 </section>
1051
1052 <section id="col-bt2020">
1053 <title>Colorspace BT.2020 (<constant>V4L2_COLORSPACE_BT2020</constant>)</title>
1054 <para>The <xref linkend="itu2020" /> standard defines the colorspace used by Ultra-high definition
1055television (UHDTV). The default transfer function is <constant>V4L2_XFER_FUNC_709</constant>.
1056The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_BT2020</constant>.
1057The default R'G'B' quantization is limited range (!), and so is the default Y'CbCr quantization.
1058The chromaticities of the primary colors and the white reference are:</para>
1059 <table frame="none">
1060 <title>BT.2020 Chromaticities</title>
1061 <tgroup cols="3" align="left">
1062 &cs-str;
1063 <thead>
1064 <row>
1065 <entry>Color</entry>
1066 <entry>x</entry>
1067 <entry>y</entry>
1068 </row>
1069 </thead>
1070 <tbody valign="top">
1071 <row>
1072 <entry>Red</entry>
1073 <entry>0.708</entry>
1074 <entry>0.292</entry>
1075 </row>
1076 <row>
1077 <entry>Green</entry>
1078 <entry>0.170</entry>
1079 <entry>0.797</entry>
1080 </row>
1081 <row>
1082 <entry>Blue</entry>
1083 <entry>0.131</entry>
1084 <entry>0.046</entry>
1085 </row>
1086 <row>
1087 <entry>White Reference (D65)</entry>
1088 <entry>0.3127</entry>
1089 <entry>0.3290</entry>
1090 </row>
1091 </tbody>
1092 </tgroup>
1093 </table>
1094 <variablelist>
1095 <varlistentry>
1096 <term>Transfer function (same as Rec. 709):</term>
1097 <listitem>
1098 <para>L' = 4.5L&nbsp;for&nbsp;0&nbsp;&le;&nbsp;L&nbsp;&lt;&nbsp;0.018</para>
1099 <para>L' = 1.099L<superscript>0.45</superscript>&nbsp;-&nbsp;0.099&nbsp;for&nbsp;0.018&nbsp;&le;&nbsp;L&nbsp;&le;&nbsp;1</para>
1100 </listitem>
1101 </varlistentry>
1102 <varlistentry>
1103 <term>Inverse Transfer function:</term>
1104 <listitem>
1105 <para>L = L'&nbsp;/&nbsp;4.5&nbsp;for&nbsp;L'&nbsp;&lt;&nbsp;0.081</para>
1106 <para>L = ((L'&nbsp;+&nbsp;0.099)&nbsp;/&nbsp;1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&ge;&nbsp;0.081</para>
1107 </listitem>
1108 </varlistentry>
1109 </variablelist>
1110 <variablelist>
1111 <varlistentry>
1112 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the
1113following <constant>V4L2_YCBCR_ENC_BT2020</constant> encoding:</term>
1114 <listitem>
1115 <para>Y'&nbsp;=&nbsp;0.2627R'&nbsp;+&nbsp;0.6780G'&nbsp;+&nbsp;0.0593B'</para>
1116 <para>Cb&nbsp;=&nbsp;-0.1396R'&nbsp;-&nbsp;0.3604G'&nbsp;+&nbsp;0.5B'</para>
1117 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.4598G'&nbsp;-&nbsp;0.0402B'</para>
1118 </listitem>
1119 </varlistentry>
1120 </variablelist>
1121 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are
1122clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range.</para>
1123 <para>There is also an alternate constant luminance R'G'B' to Yc'CbcCrc
1124(<constant>V4L2_YCBCR_ENC_BT2020_CONST_LUM</constant>) encoding:</para>
1125 <variablelist>
1126 <varlistentry>
1127 <term>Luma:</term>
1128 <listitem>
1129 <para>Yc'&nbsp;=&nbsp;(0.2627R&nbsp;+&nbsp;0.6780G&nbsp;+&nbsp;0.0593B)'</para>
1130 </listitem>
1131 </varlistentry>
1132 </variablelist>
1133 <variablelist>
1134 <varlistentry>
1135 <term>B'&nbsp;-&nbsp;Yc'&nbsp;&le;&nbsp;0:</term>
1136 <listitem>
1137 <para>Cbc&nbsp;=&nbsp;(B'&nbsp;-&nbsp;Yc')&nbsp;/&nbsp;1.9404</para>
1138 </listitem>
1139 </varlistentry>
1140 </variablelist>
1141 <variablelist>
1142 <varlistentry>
1143 <term>B'&nbsp;-&nbsp;Yc'&nbsp;&gt;&nbsp;0:</term>
1144 <listitem>
1145 <para>Cbc&nbsp;=&nbsp;(B'&nbsp;-&nbsp;Yc')&nbsp;/&nbsp;1.5816</para>
1146 </listitem>
1147 </varlistentry>
1148 </variablelist>
1149 <variablelist>
1150 <varlistentry>
1151 <term>R'&nbsp;-&nbsp;Yc'&nbsp;&le;&nbsp;0:</term>
1152 <listitem>
1153 <para>Crc&nbsp;=&nbsp;(R'&nbsp;-&nbsp;Y')&nbsp;/&nbsp;1.7184</para>
1154 </listitem>
1155 </varlistentry>
1156 </variablelist>
1157 <variablelist>
1158 <varlistentry>
1159 <term>R'&nbsp;-&nbsp;Yc'&nbsp;&gt;&nbsp;0:</term>
1160 <listitem>
1161 <para>Crc&nbsp;=&nbsp;(R'&nbsp;-&nbsp;Y')&nbsp;/&nbsp;0.9936</para>
1162 </listitem>
1163 </varlistentry>
1164 </variablelist>
1165 <para>Yc' is clamped to the range [0&hellip;1] and Cbc and Crc are
1166clamped to the range [-0.5&hellip;0.5]. The Yc'CbcCrc quantization is limited range.</para>
1167 </section>
1168
1169 <section id="col-dcip3">
1170 <title>Colorspace DCI-P3 (<constant>V4L2_COLORSPACE_DCI_P3</constant>)</title>
1171 <para>The <xref linkend="smpte431" /> standard defines the colorspace used by cinema
1172projectors that use the DCI-P3 colorspace.
1173The default transfer function is <constant>V4L2_XFER_FUNC_DCI_P3</constant>.
1174The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_709</constant>. Note that this
1175colorspace does not specify a Y'CbCr encoding since it is not meant to be encoded
1176to Y'CbCr. So this default Y'CbCr encoding was picked because it is the HDTV
1177encoding. The default Y'CbCr quantization is limited range. The chromaticities of
1178the primary colors and the white reference are:</para>
1179 <table frame="none">
1180 <title>DCI-P3 Chromaticities</title>
1181 <tgroup cols="3" align="left">
1182 &cs-str;
1183 <thead>
1184 <row>
1185 <entry>Color</entry>
1186 <entry>x</entry>
1187 <entry>y</entry>
1188 </row>
1189 </thead>
1190 <tbody valign="top">
1191 <row>
1192 <entry>Red</entry>
1193 <entry>0.6800</entry>
1194 <entry>0.3200</entry>
1195 </row>
1196 <row>
1197 <entry>Green</entry>
1198 <entry>0.2650</entry>
1199 <entry>0.6900</entry>
1200 </row>
1201 <row>
1202 <entry>Blue</entry>
1203 <entry>0.1500</entry>
1204 <entry>0.0600</entry>
1205 </row>
1206 <row>
1207 <entry>White Reference</entry>
1208 <entry>0.3140</entry>
1209 <entry>0.3510</entry>
1210 </row>
1211 </tbody>
1212 </tgroup>
1213 </table>
1214 <variablelist>
1215 <varlistentry>
1216 <term>Transfer function:</term>
1217 <listitem>
1218 <para>L' = L<superscript>1/2.6</superscript></para>
1219 </listitem>
1220 </varlistentry>
1221 <varlistentry>
1222 <term>Inverse Transfer function:</term>
1223 <listitem>
1224 <para>L = L'<superscript>2.6</superscript></para>
1225 </listitem>
1226 </varlistentry>
1227 </variablelist>
1228 <para>Y'CbCr encoding is not specified. V4L2 defaults to Rec. 709.</para>
1229 </section>
1230
1231 <section id="col-smpte-240m">
1232 <title>Colorspace SMPTE 240M (<constant>V4L2_COLORSPACE_SMPTE240M</constant>)</title>
1233 <para>The <xref linkend="smpte240m" /> standard was an interim standard used during
1234the early days of HDTV (1988-1998). It has been superseded by Rec. 709.
1235The default transfer function is <constant>V4L2_XFER_FUNC_SMPTE240M</constant>.
1236The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_SMPTE240M</constant>.
1237The default Y'CbCr quantization is limited range. The chromaticities of the primary colors and the
1238white reference are:</para>
1239 <table frame="none">
1240 <title>SMPTE 240M Chromaticities</title>
1241 <tgroup cols="3" align="left">
1242 &cs-str;
1243 <thead>
1244 <row>
1245 <entry>Color</entry>
1246 <entry>x</entry>
1247 <entry>y</entry>
1248 </row>
1249 </thead>
1250 <tbody valign="top">
1251 <row>
1252 <entry>Red</entry>
1253 <entry>0.630</entry>
1254 <entry>0.340</entry>
1255 </row>
1256 <row>
1257 <entry>Green</entry>
1258 <entry>0.310</entry>
1259 <entry>0.595</entry>
1260 </row>
1261 <row>
1262 <entry>Blue</entry>
1263 <entry>0.155</entry>
1264 <entry>0.070</entry>
1265 </row>
1266 <row>
1267 <entry>White Reference (D65)</entry>
1268 <entry>0.3127</entry>
1269 <entry>0.3290</entry>
1270 </row>
1271 </tbody>
1272 </tgroup>
1273 </table>
1274 <para>These chromaticities are identical to the SMPTE 170M colorspace.</para>
1275 <variablelist>
1276 <varlistentry>
1277 <term>Transfer function:</term>
1278 <listitem>
1279 <para>L' = 4L&nbsp;for&nbsp;0&nbsp;&le;&nbsp;L&nbsp;&lt;&nbsp;0.0228</para>
1280 <para>L' = 1.1115L<superscript>0.45</superscript>&nbsp;-&nbsp;0.1115&nbsp;for&nbsp;0.0228&nbsp;&le;&nbsp;L&nbsp;&le;&nbsp;1</para>
1281 </listitem>
1282 </varlistentry>
1283 <varlistentry>
1284 <term>Inverse Transfer function:</term>
1285 <listitem>
1286 <para>L = L'&nbsp;/&nbsp;4&nbsp;for&nbsp;0&nbsp;&le;&nbsp;L'&nbsp;&lt;&nbsp;0.0913</para>
1287 <para>L = ((L'&nbsp;+&nbsp;0.1115)&nbsp;/&nbsp;1.1115)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&ge;&nbsp;0.0913</para>
1288 </listitem>
1289 </varlistentry>
1290 </variablelist>
1291 <variablelist>
1292 <varlistentry>
1293 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the
1294following <constant>V4L2_YCBCR_ENC_SMPTE240M</constant> encoding:</term>
1295 <listitem>
1296 <para>Y'&nbsp;=&nbsp;0.2122R'&nbsp;+&nbsp;0.7013G'&nbsp;+&nbsp;0.0865B'</para>
1297 <para>Cb&nbsp;=&nbsp;-0.1161R'&nbsp;-&nbsp;0.3839G'&nbsp;+&nbsp;0.5B'</para>
1298 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.4451G'&nbsp;-&nbsp;0.0549B'</para>
1299 </listitem>
1300 </varlistentry>
1301 </variablelist>
1302 <para>Yc' is clamped to the range [0&hellip;1] and Cbc and Crc are
1303clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range.</para>
1304 </section>
1305
1306 <section id="col-sysm">
1307 <title>Colorspace NTSC 1953 (<constant>V4L2_COLORSPACE_470_SYSTEM_M</constant>)</title>
1308 <para>This standard defines the colorspace used by NTSC in 1953. In practice this
1309colorspace is obsolete and SMPTE 170M should be used instead.
1310The default transfer function is <constant>V4L2_XFER_FUNC_709</constant>.
1311The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>.
1312The default Y'CbCr quantization is limited range.
1313The chromaticities of the primary colors and the white reference are:</para>
1314 <table frame="none">
1315 <title>NTSC 1953 Chromaticities</title>
1316 <tgroup cols="3" align="left">
1317 &cs-str;
1318 <thead>
1319 <row>
1320 <entry>Color</entry>
1321 <entry>x</entry>
1322 <entry>y</entry>
1323 </row>
1324 </thead>
1325 <tbody valign="top">
1326 <row>
1327 <entry>Red</entry>
1328 <entry>0.67</entry>
1329 <entry>0.33</entry>
1330 </row>
1331 <row>
1332 <entry>Green</entry>
1333 <entry>0.21</entry>
1334 <entry>0.71</entry>
1335 </row>
1336 <row>
1337 <entry>Blue</entry>
1338 <entry>0.14</entry>
1339 <entry>0.08</entry>
1340 </row>
1341 <row>
1342 <entry>White Reference (C)</entry>
1343 <entry>0.310</entry>
1344 <entry>0.316</entry>
1345 </row>
1346 </tbody>
1347 </tgroup>
1348 </table>
1349 <para>Note that this colorspace uses Illuminant C instead of D65 as the
1350white reference. To correctly convert an image in this colorspace to another
1351that uses D65 you need to apply a chromatic adaptation algorithm such as the
1352Bradford method.</para>
1353 <variablelist>
1354 <varlistentry>
1355 <term>The transfer function was never properly defined for NTSC 1953. The
1356Rec. 709 transfer function is recommended in the literature:</term>
1357 <listitem>
1358 <para>L' = 4.5L&nbsp;for&nbsp;0&nbsp;&le;&nbsp;L&nbsp;&lt;&nbsp;0.018</para>
1359 <para>L' = 1.099L<superscript>0.45</superscript>&nbsp;-&nbsp;0.099&nbsp;for&nbsp;0.018&nbsp;&le;&nbsp;L&nbsp;&le;&nbsp;1</para>
1360 </listitem>
1361 </varlistentry>
1362 <varlistentry>
1363 <term>Inverse Transfer function:</term>
1364 <listitem>
1365 <para>L = L'&nbsp;/&nbsp;4.5&nbsp;for&nbsp;L'&nbsp;&lt;&nbsp;0.081</para>
1366 <para>L = ((L'&nbsp;+&nbsp;0.099)&nbsp;/&nbsp;1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&ge;&nbsp;0.081</para>
1367 </listitem>
1368 </varlistentry>
1369 </variablelist>
1370 <variablelist>
1371 <varlistentry>
1372 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the
1373following <constant>V4L2_YCBCR_ENC_601</constant> encoding:</term>
1374 <listitem>
1375 <para>Y'&nbsp;=&nbsp;0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B'</para>
1376 <para>Cb&nbsp;=&nbsp;-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B'</para>
1377 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B'</para>
1378 </listitem>
1379 </varlistentry>
1380 </variablelist>
1381 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are
1382clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range.
1383This transform is identical to one defined in SMPTE 170M/BT.601.</para>
1384 </section>
1385
1386 <section id="col-sysbg">
1387 <title>Colorspace EBU Tech. 3213 (<constant>V4L2_COLORSPACE_470_SYSTEM_BG</constant>)</title>
1388 <para>The <xref linkend="tech3213" /> standard defines the colorspace used by PAL/SECAM in 1975. In practice this
1389colorspace is obsolete and SMPTE 170M should be used instead.
1390The default transfer function is <constant>V4L2_XFER_FUNC_709</constant>.
1391The default Y'CbCr encoding is <constant>V4L2_YCBCR_ENC_601</constant>.
1392The default Y'CbCr quantization is limited range.
1393The chromaticities of the primary colors and the white reference are:</para>
1394 <table frame="none">
1395 <title>EBU Tech. 3213 Chromaticities</title>
1396 <tgroup cols="3" align="left">
1397 &cs-str;
1398 <thead>
1399 <row>
1400 <entry>Color</entry>
1401 <entry>x</entry>
1402 <entry>y</entry>
1403 </row>
1404 </thead>
1405 <tbody valign="top">
1406 <row>
1407 <entry>Red</entry>
1408 <entry>0.64</entry>
1409 <entry>0.33</entry>
1410 </row>
1411 <row>
1412 <entry>Green</entry>
1413 <entry>0.29</entry>
1414 <entry>0.60</entry>
1415 </row>
1416 <row>
1417 <entry>Blue</entry>
1418 <entry>0.15</entry>
1419 <entry>0.06</entry>
1420 </row>
1421 <row>
1422 <entry>White Reference (D65)</entry>
1423 <entry>0.3127</entry>
1424 <entry>0.3290</entry>
1425 </row>
1426 </tbody>
1427 </tgroup>
1428 </table>
1429 <variablelist>
1430 <varlistentry>
1431 <term>The transfer function was never properly defined for this colorspace.
1432The Rec. 709 transfer function is recommended in the literature:</term>
1433 <listitem>
1434 <para>L' = 4.5L&nbsp;for&nbsp;0&nbsp;&le;&nbsp;L&nbsp;&lt;&nbsp;0.018</para>
1435 <para>L' = 1.099L<superscript>0.45</superscript>&nbsp;-&nbsp;0.099&nbsp;for&nbsp;0.018&nbsp;&le;&nbsp;L&nbsp;&le;&nbsp;1</para>
1436 </listitem>
1437 </varlistentry>
1438 <varlistentry>
1439 <term>Inverse Transfer function:</term>
1440 <listitem>
1441 <para>L = L'&nbsp;/&nbsp;4.5&nbsp;for&nbsp;L'&nbsp;&lt;&nbsp;0.081</para>
1442 <para>L = ((L'&nbsp;+&nbsp;0.099)&nbsp;/&nbsp;1.099)<superscript>1/0.45</superscript>&nbsp;for&nbsp;L'&nbsp;&ge;&nbsp;0.081</para>
1443 </listitem>
1444 </varlistentry>
1445 </variablelist>
1446 <variablelist>
1447 <varlistentry>
1448 <term>The luminance (Y') and color difference (Cb and Cr) are obtained with the
1449following <constant>V4L2_YCBCR_ENC_601</constant> encoding:</term>
1450 <listitem>
1451 <para>Y'&nbsp;=&nbsp;0.299R'&nbsp;+&nbsp;0.587G'&nbsp;+&nbsp;0.114B'</para>
1452 <para>Cb&nbsp;=&nbsp;-0.169R'&nbsp;-&nbsp;0.331G'&nbsp;+&nbsp;0.5B'</para>
1453 <para>Cr&nbsp;=&nbsp;0.5R'&nbsp;-&nbsp;0.419G'&nbsp;-&nbsp;0.081B'</para>
1454 </listitem>
1455 </varlistentry>
1456 </variablelist>
1457 <para>Y' is clamped to the range [0&hellip;1] and Cb and Cr are
1458clamped to the range [-0.5&hellip;0.5]. The Y'CbCr quantization is limited range.
1459This transform is identical to one defined in SMPTE 170M/BT.601.</para>
1460 </section>
1461
1462 <section id="col-jpeg">
1463 <title>Colorspace JPEG (<constant>V4L2_COLORSPACE_JPEG</constant>)</title>
1464 <para>This colorspace defines the colorspace used by most (Motion-)JPEG formats. The chromaticities
1465of the primary colors and the white reference are identical to sRGB. The transfer
1466function use is <constant>V4L2_XFER_FUNC_SRGB</constant>. The Y'CbCr encoding is
1467<constant>V4L2_YCBCR_ENC_601</constant> with full range quantization where
1468Y' is scaled to [0&hellip;255] and Cb/Cr are scaled to [-128&hellip;128] and
1469then clipped to [-128&hellip;127].</para>
1470 <para>Note that the JPEG standard does not actually store colorspace information.
1471So if something other than sRGB is used, then the driver will have to set that information
1472explicitly. Effectively <constant>V4L2_COLORSPACE_JPEG</constant> can be considered to be
1473an abbreviation for <constant>V4L2_COLORSPACE_SRGB</constant>, <constant>V4L2_YCBCR_ENC_601</constant>
1474and <constant>V4L2_QUANTIZATION_FULL_RANGE</constant>.</para>
1475 </section>
1476
1477 </section>
1478
1479 <section>
1480 <title>Detailed Transfer Function Descriptions</title>
1481 <section id="xf-smpte-2084">
1482 <title>Transfer Function SMPTE 2084 (<constant>V4L2_XFER_FUNC_SMPTE2084</constant>)</title>
1483 <para>The <xref linkend="smpte2084" /> standard defines the transfer function used by
1484High Dynamic Range content.</para>
1485 <variablelist>
1486 <varlistentry>
1487 <term>Constants:</term>
1488 <listitem>
1489 <para>m1 = (2610 / 4096) / 4</para>
1490 <para>m2 = (2523 / 4096) * 128</para>
1491 <para>c1 = 3424 / 4096</para>
1492 <para>c2 = (2413 / 4096) * 32</para>
1493 <para>c3 = (2392 / 4096) * 32</para>
1494 </listitem>
1495 </varlistentry>
1496 <varlistentry>
1497 <term>Transfer function:</term>
1498 <listitem>
1499 <para>L' = ((c1 + c2 * L<superscript>m1</superscript>) / (1 + c3 * L<superscript>m1</superscript>))<superscript>m2</superscript></para>
1500 </listitem>
1501 </varlistentry>
1502 </variablelist>
1503 <variablelist>
1504 <varlistentry>
1505 <term>Inverse Transfer function:</term>
1506 <listitem>
1507 <para>L = (max(L'<superscript>1/m2</superscript> - c1, 0) / (c2 - c3 * L'<superscript>1/m2</superscript>))<superscript>1/m1</superscript></para>
1508 </listitem>
1509 </varlistentry>
1510 </variablelist>
1511 </section>
1512 </section>
1513
1514 <section id="pixfmt-indexed">
1515 <title>Indexed Format</title>
1516
1517 <para>In this format each pixel is represented by an 8 bit index
1518into a 256 entry ARGB palette. It is intended for <link
1519linkend="osd">Video Output Overlays</link> only. There are no ioctls to
1520access the palette, this must be done with ioctls of the Linux framebuffer API.</para>
1521
1522 <table pgwide="0" frame="none">
1523 <title>Indexed Image Format</title>
1524 <tgroup cols="37" align="center">
1525 <colspec colname="id" align="left" />
1526 <colspec colname="fourcc" />
1527 <colspec colname="bit" />
1528
1529 <colspec colnum="4" colname="b07" align="center" />
1530 <colspec colnum="5" colname="b06" align="center" />
1531 <colspec colnum="6" colname="b05" align="center" />
1532 <colspec colnum="7" colname="b04" align="center" />
1533 <colspec colnum="8" colname="b03" align="center" />
1534 <colspec colnum="9" colname="b02" align="center" />
1535 <colspec colnum="10" colname="b01" align="center" />
1536 <colspec colnum="11" colname="b00" align="center" />
1537
1538 <spanspec namest="b07" nameend="b00" spanname="b0" />
1539 <spanspec namest="b17" nameend="b10" spanname="b1" />
1540 <spanspec namest="b27" nameend="b20" spanname="b2" />
1541 <spanspec namest="b37" nameend="b30" spanname="b3" />
1542 <thead>
1543 <row>
1544 <entry>Identifier</entry>
1545 <entry>Code</entry>
1546 <entry>&nbsp;</entry>
1547 <entry spanname="b0">Byte&nbsp;0</entry>
1548 </row>
1549 <row>
1550 <entry>&nbsp;</entry>
1551 <entry>&nbsp;</entry>
1552 <entry>Bit</entry>
1553 <entry>7</entry>
1554 <entry>6</entry>
1555 <entry>5</entry>
1556 <entry>4</entry>
1557 <entry>3</entry>
1558 <entry>2</entry>
1559 <entry>1</entry>
1560 <entry>0</entry>
1561 </row>
1562 </thead>
1563 <tbody valign="top">
1564 <row id="V4L2-PIX-FMT-PAL8">
1565 <entry><constant>V4L2_PIX_FMT_PAL8</constant></entry>
1566 <entry>'PAL8'</entry>
1567 <entry></entry>
1568 <entry>i<subscript>7</subscript></entry>
1569 <entry>i<subscript>6</subscript></entry>
1570 <entry>i<subscript>5</subscript></entry>
1571 <entry>i<subscript>4</subscript></entry>
1572 <entry>i<subscript>3</subscript></entry>
1573 <entry>i<subscript>2</subscript></entry>
1574 <entry>i<subscript>1</subscript></entry>
1575 <entry>i<subscript>0</subscript></entry>
1576 </row>
1577 </tbody>
1578 </tgroup>
1579 </table>
1580 </section>
1581
1582 <section id="pixfmt-rgb">
1583 <title>RGB Formats</title>
1584
1585 &sub-packed-rgb;
1586 &sub-sbggr8;
1587 &sub-sgbrg8;
1588 &sub-sgrbg8;
1589 &sub-srggb8;
1590 &sub-sbggr16;
1591 &sub-srggb10;
1592 &sub-srggb10p;
1593 &sub-srggb10alaw8;
1594 &sub-srggb10dpcm8;
1595 &sub-srggb12;
1596 </section>
1597
1598 <section id="yuv-formats">
1599 <title>YUV Formats</title>
1600
1601 <para>YUV is the format native to TV broadcast and composite video
1602signals. It separates the brightness information (Y) from the color
1603information (U and V or Cb and Cr). The color information consists of
1604red and blue <emphasis>color difference</emphasis> signals, this way
1605the green component can be reconstructed by subtracting from the
1606brightness component. See <xref linkend="colorspaces" /> for conversion
1607examples. YUV was chosen because early television would only transmit
1608brightness information. To add color in a way compatible with existing
1609receivers a new signal carrier was added to transmit the color
1610difference signals. Secondary in the YUV format the U and V components
1611usually have lower resolution than the Y component. This is an analog
1612video compression technique taking advantage of a property of the
1613human visual system, being more sensitive to brightness
1614information.</para>
1615
1616 &sub-packed-yuv;
1617 &sub-grey;
1618 &sub-y10;
1619 &sub-y12;
1620 &sub-y10b;
1621 &sub-y16;
1622 &sub-y16-be;
1623 &sub-y8i;
1624 &sub-y12i;
1625 &sub-uv8;
1626 &sub-yuyv;
1627 &sub-uyvy;
1628 &sub-yvyu;
1629 &sub-vyuy;
1630 &sub-y41p;
1631 &sub-yuv420;
1632 &sub-yuv420m;
1633 &sub-yuv422m;
1634 &sub-yuv444m;
1635 &sub-yuv410;
1636 &sub-yuv422p;
1637 &sub-yuv411p;
1638 &sub-nv12;
1639 &sub-nv12m;
1640 &sub-nv12mt;
1641 &sub-nv16;
1642 &sub-nv16m;
1643 &sub-nv24;
1644 &sub-m420;
1645 </section>
1646
1647 <section id="depth-formats">
1648 <title>Depth Formats</title>
1649 <para>Depth data provides distance to points, mapped onto the image plane
1650 </para>
1651
1652 &sub-z16;
1653 </section>
1654
1655 <section>
1656 <title>Compressed Formats</title>
1657
1658 <table pgwide="1" frame="none" id="compressed-formats">
1659 <title>Compressed Image Formats</title>
1660 <tgroup cols="3" align="left">
1661 &cs-def;
1662 <thead>
1663 <row>
1664 <entry>Identifier</entry>
1665 <entry>Code</entry>
1666 <entry>Details</entry>
1667 </row>
1668 </thead>
1669 <tbody valign="top">
1670 <row id="V4L2-PIX-FMT-JPEG">
1671 <entry><constant>V4L2_PIX_FMT_JPEG</constant></entry>
1672 <entry>'JPEG'</entry>
1673 <entry>TBD. See also &VIDIOC-G-JPEGCOMP;,
1674 &VIDIOC-S-JPEGCOMP;.</entry>
1675 </row>
1676 <row id="V4L2-PIX-FMT-MPEG">
1677 <entry><constant>V4L2_PIX_FMT_MPEG</constant></entry>
1678 <entry>'MPEG'</entry>
1679 <entry>MPEG multiplexed stream. The actual format is determined by
1680extended control <constant>V4L2_CID_MPEG_STREAM_TYPE</constant>, see
1681<xref linkend="mpeg-control-id" />.</entry>
1682 </row>
1683 <row id="V4L2-PIX-FMT-H264">
1684 <entry><constant>V4L2_PIX_FMT_H264</constant></entry>
1685 <entry>'H264'</entry>
1686 <entry>H264 video elementary stream with start codes.</entry>
1687 </row>
1688 <row id="V4L2-PIX-FMT-H264-NO-SC">
1689 <entry><constant>V4L2_PIX_FMT_H264_NO_SC</constant></entry>
1690 <entry>'AVC1'</entry>
1691 <entry>H264 video elementary stream without start codes.</entry>
1692 </row>
1693 <row id="V4L2-PIX-FMT-H264-MVC">
1694 <entry><constant>V4L2_PIX_FMT_H264_MVC</constant></entry>
1695 <entry>'M264'</entry>
1696 <entry>H264 MVC video elementary stream.</entry>
1697 </row>
1698 <row id="V4L2-PIX-FMT-H263">
1699 <entry><constant>V4L2_PIX_FMT_H263</constant></entry>
1700 <entry>'H263'</entry>
1701 <entry>H263 video elementary stream.</entry>
1702 </row>
1703 <row id="V4L2-PIX-FMT-MPEG1">
1704 <entry><constant>V4L2_PIX_FMT_MPEG1</constant></entry>
1705 <entry>'MPG1'</entry>
1706 <entry>MPEG1 video elementary stream.</entry>
1707 </row>
1708 <row id="V4L2-PIX-FMT-MPEG2">
1709 <entry><constant>V4L2_PIX_FMT_MPEG2</constant></entry>
1710 <entry>'MPG2'</entry>
1711 <entry>MPEG2 video elementary stream.</entry>
1712 </row>
1713 <row id="V4L2-PIX-FMT-MPEG4">
1714 <entry><constant>V4L2_PIX_FMT_MPEG4</constant></entry>
1715 <entry>'MPG4'</entry>
1716 <entry>MPEG4 video elementary stream.</entry>
1717 </row>
1718 <row id="V4L2-PIX-FMT-XVID">
1719 <entry><constant>V4L2_PIX_FMT_XVID</constant></entry>
1720 <entry>'XVID'</entry>
1721 <entry>Xvid video elementary stream.</entry>
1722 </row>
1723 <row id="V4L2-PIX-FMT-VC1-ANNEX-G">
1724 <entry><constant>V4L2_PIX_FMT_VC1_ANNEX_G</constant></entry>
1725 <entry>'VC1G'</entry>
1726 <entry>VC1, SMPTE 421M Annex G compliant stream.</entry>
1727 </row>
1728 <row id="V4L2-PIX-FMT-VC1-ANNEX-L">
1729 <entry><constant>V4L2_PIX_FMT_VC1_ANNEX_L</constant></entry>
1730 <entry>'VC1L'</entry>
1731 <entry>VC1, SMPTE 421M Annex L compliant stream.</entry>
1732 </row>
1733 <row id="V4L2-PIX-FMT-VP8">
1734 <entry><constant>V4L2_PIX_FMT_VP8</constant></entry>
1735 <entry>'VP80'</entry>
1736 <entry>VP8 video elementary stream.</entry>
1737 </row>
1738 </tbody>
1739 </tgroup>
1740 </table>
1741 </section>
1742
1743 <section id="sdr-formats">
1744 <title>SDR Formats</title>
1745
1746 <para>These formats are used for <link linkend="sdr">SDR</link>
1747interface only.</para>
1748
1749 &sub-sdr-cu08;
1750 &sub-sdr-cu16le;
1751 &sub-sdr-cs08;
1752 &sub-sdr-cs14le;
1753 &sub-sdr-ru12le;
1754
1755 </section>
1756
1757 <section id="pixfmt-reserved">
1758 <title>Reserved Format Identifiers</title>
1759
1760 <para>These formats are not defined by this specification, they
1761are just listed for reference and to avoid naming conflicts. If you
1762want to register your own format, send an e-mail to the linux-media mailing
1763list &v4l-ml; for inclusion in the <filename>videodev2.h</filename>
1764file. If you want to share your format with other developers add a
1765link to your documentation and send a copy to the linux-media mailing list
1766for inclusion in this section. If you think your format should be listed
1767in a standard format section please make a proposal on the linux-media mailing
1768list.</para>
1769
1770 <table pgwide="1" frame="none" id="reserved-formats">
1771 <title>Reserved Image Formats</title>
1772 <tgroup cols="3" align="left">
1773 &cs-def;
1774 <thead>
1775 <row>
1776 <entry>Identifier</entry>
1777 <entry>Code</entry>
1778 <entry>Details</entry>
1779 </row>
1780 </thead>
1781 <tbody valign="top">
1782 <row id="V4L2-PIX-FMT-DV">
1783 <entry><constant>V4L2_PIX_FMT_DV</constant></entry>
1784 <entry>'dvsd'</entry>
1785 <entry>unknown</entry>
1786 </row>
1787 <row id="V4L2-PIX-FMT-ET61X251">
1788 <entry><constant>V4L2_PIX_FMT_ET61X251</constant></entry>
1789 <entry>'E625'</entry>
1790 <entry>Compressed format of the ET61X251 driver.</entry>
1791 </row>
1792 <row id="V4L2-PIX-FMT-HI240">
1793 <entry><constant>V4L2_PIX_FMT_HI240</constant></entry>
1794 <entry>'HI24'</entry>
1795 <entry><para>8 bit RGB format used by the BTTV driver.</para></entry>
1796 </row>
1797 <row id="V4L2-PIX-FMT-HM12">
1798 <entry><constant>V4L2_PIX_FMT_HM12</constant></entry>
1799 <entry>'HM12'</entry>
1800 <entry><para>YUV 4:2:0 format used by the
1801IVTV driver, <ulink url="http://www.ivtvdriver.org/">
1802http://www.ivtvdriver.org/</ulink></para><para>The format is documented in the
1803kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm12</filename>
1804</para></entry>
1805 </row>
1806 <row id="V4L2-PIX-FMT-CPIA1">
1807 <entry><constant>V4L2_PIX_FMT_CPIA1</constant></entry>
1808 <entry>'CPIA'</entry>
1809 <entry>YUV format used by the gspca cpia1 driver.</entry>
1810 </row>
1811 <row id="V4L2-PIX-FMT-JPGL">
1812 <entry><constant>V4L2_PIX_FMT_JPGL</constant></entry>
1813 <entry>'JPGL'</entry>
1814 <entry>JPEG-Light format (Pegasus Lossless JPEG)
1815 used in Divio webcams NW 80x.</entry>
1816 </row>
1817 <row id="V4L2-PIX-FMT-SPCA501">
1818 <entry><constant>V4L2_PIX_FMT_SPCA501</constant></entry>
1819 <entry>'S501'</entry>
1820 <entry>YUYV per line used by the gspca driver.</entry>
1821 </row>
1822 <row id="V4L2-PIX-FMT-SPCA505">
1823 <entry><constant>V4L2_PIX_FMT_SPCA505</constant></entry>
1824 <entry>'S505'</entry>
1825 <entry>YYUV per line used by the gspca driver.</entry>
1826 </row>
1827 <row id="V4L2-PIX-FMT-SPCA508">
1828 <entry><constant>V4L2_PIX_FMT_SPCA508</constant></entry>
1829 <entry>'S508'</entry>
1830 <entry>YUVY per line used by the gspca driver.</entry>
1831 </row>
1832 <row id="V4L2-PIX-FMT-SPCA561">
1833 <entry><constant>V4L2_PIX_FMT_SPCA561</constant></entry>
1834 <entry>'S561'</entry>
1835 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry>
1836 </row>
1837 <row id="V4L2-PIX-FMT-PAC207">
1838 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry>
1839 <entry>'P207'</entry>
1840 <entry>Compressed BGGR Bayer format used by the gspca driver.</entry>
1841 </row>
1842 <row id="V4L2-PIX-FMT-MR97310A">
1843 <entry><constant>V4L2_PIX_FMT_MR97310A</constant></entry>
1844 <entry>'M310'</entry>
1845 <entry>Compressed BGGR Bayer format used by the gspca driver.</entry>
1846 </row>
1847 <row id="V4L2-PIX-FMT-JL2005BCD">
1848 <entry><constant>V4L2_PIX_FMT_JL2005BCD</constant></entry>
1849 <entry>'JL20'</entry>
1850 <entry>JPEG compressed RGGB Bayer format used by the gspca driver.</entry>
1851 </row>
1852 <row id="V4L2-PIX-FMT-OV511">
1853 <entry><constant>V4L2_PIX_FMT_OV511</constant></entry>
1854 <entry>'O511'</entry>
1855 <entry>OV511 JPEG format used by the gspca driver.</entry>
1856 </row>
1857 <row id="V4L2-PIX-FMT-OV518">
1858 <entry><constant>V4L2_PIX_FMT_OV518</constant></entry>
1859 <entry>'O518'</entry>
1860 <entry>OV518 JPEG format used by the gspca driver.</entry>
1861 </row>
1862 <row id="V4L2-PIX-FMT-PJPG">
1863 <entry><constant>V4L2_PIX_FMT_PJPG</constant></entry>
1864 <entry>'PJPG'</entry>
1865 <entry>Pixart 73xx JPEG format used by the gspca driver.</entry>
1866 </row>
1867 <row id="V4L2-PIX-FMT-SE401">
1868 <entry><constant>V4L2_PIX_FMT_SE401</constant></entry>
1869 <entry>'S401'</entry>
1870 <entry>Compressed RGB format used by the gspca se401 driver</entry>
1871 </row>
1872 <row id="V4L2-PIX-FMT-SQ905C">
1873 <entry><constant>V4L2_PIX_FMT_SQ905C</constant></entry>
1874 <entry>'905C'</entry>
1875 <entry>Compressed RGGB bayer format used by the gspca driver.</entry>
1876 </row>
1877 <row id="V4L2-PIX-FMT-MJPEG">
1878 <entry><constant>V4L2_PIX_FMT_MJPEG</constant></entry>
1879 <entry>'MJPG'</entry>
1880 <entry>Compressed format used by the Zoran driver</entry>
1881 </row>
1882 <row id="V4L2-PIX-FMT-PWC1">
1883 <entry><constant>V4L2_PIX_FMT_PWC1</constant></entry>
1884 <entry>'PWC1'</entry>
1885 <entry>Compressed format of the PWC driver.</entry>
1886 </row>
1887 <row id="V4L2-PIX-FMT-PWC2">
1888 <entry><constant>V4L2_PIX_FMT_PWC2</constant></entry>
1889 <entry>'PWC2'</entry>
1890 <entry>Compressed format of the PWC driver.</entry>
1891 </row>
1892 <row id="V4L2-PIX-FMT-SN9C10X">
1893 <entry><constant>V4L2_PIX_FMT_SN9C10X</constant></entry>
1894 <entry>'S910'</entry>
1895 <entry>Compressed format of the SN9C102 driver.</entry>
1896 </row>
1897 <row id="V4L2-PIX-FMT-SN9C20X-I420">
1898 <entry><constant>V4L2_PIX_FMT_SN9C20X_I420</constant></entry>
1899 <entry>'S920'</entry>
1900 <entry>YUV 4:2:0 format of the gspca sn9c20x driver.</entry>
1901 </row>
1902 <row id="V4L2-PIX-FMT-SN9C2028">
1903 <entry><constant>V4L2_PIX_FMT_SN9C2028</constant></entry>
1904 <entry>'SONX'</entry>
1905 <entry>Compressed GBRG bayer format of the gspca sn9c2028 driver.</entry>
1906 </row>
1907 <row id="V4L2-PIX-FMT-STV0680">
1908 <entry><constant>V4L2_PIX_FMT_STV0680</constant></entry>
1909 <entry>'S680'</entry>
1910 <entry>Bayer format of the gspca stv0680 driver.</entry>
1911 </row>
1912 <row id="V4L2-PIX-FMT-WNVA">
1913 <entry><constant>V4L2_PIX_FMT_WNVA</constant></entry>
1914 <entry>'WNVA'</entry>
1915 <entry><para>Used by the Winnov Videum driver, <ulink
1916url="http://www.thedirks.org/winnov/">
1917http://www.thedirks.org/winnov/</ulink></para></entry>
1918 </row>
1919 <row id="V4L2-PIX-FMT-TM6000">
1920 <entry><constant>V4L2_PIX_FMT_TM6000</constant></entry>
1921 <entry>'TM60'</entry>
1922 <entry><para>Used by Trident tm6000</para></entry>
1923 </row>
1924 <row id="V4L2-PIX-FMT-CIT-YYVYUY">
1925 <entry><constant>V4L2_PIX_FMT_CIT_YYVYUY</constant></entry>
1926 <entry>'CITV'</entry>
1927 <entry><para>Used by xirlink CIT, found at IBM webcams.</para>
1928 <para>Uses one line of Y then 1 line of VYUY</para>
1929 </entry>
1930 </row>
1931 <row id="V4L2-PIX-FMT-KONICA420">
1932 <entry><constant>V4L2_PIX_FMT_KONICA420</constant></entry>
1933 <entry>'KONI'</entry>
1934 <entry><para>Used by Konica webcams.</para>
1935 <para>YUV420 planar in blocks of 256 pixels.</para>
1936 </entry>
1937 </row>
1938 <row id="V4L2-PIX-FMT-YYUV">
1939 <entry><constant>V4L2_PIX_FMT_YYUV</constant></entry>
1940 <entry>'YYUV'</entry>
1941 <entry>unknown</entry>
1942 </row>
1943 <row id="V4L2-PIX-FMT-Y4">
1944 <entry><constant>V4L2_PIX_FMT_Y4</constant></entry>
1945 <entry>'Y04 '</entry>
1946 <entry>Old 4-bit greyscale format. Only the most significant 4 bits of each byte are used,
1947the other bits are set to 0.</entry>
1948 </row>
1949 <row id="V4L2-PIX-FMT-Y6">
1950 <entry><constant>V4L2_PIX_FMT_Y6</constant></entry>
1951 <entry>'Y06 '</entry>
1952 <entry>Old 6-bit greyscale format. Only the most significant 6 bits of each byte are used,
1953the other bits are set to 0.</entry>
1954 </row>
1955 <row id="V4L2-PIX-FMT-S5C-UYVY-JPG">
1956 <entry><constant>V4L2_PIX_FMT_S5C_UYVY_JPG</constant></entry>
1957 <entry>'S5CI'</entry>
1958 <entry>Two-planar format used by Samsung S5C73MX cameras. The
1959first plane contains interleaved JPEG and UYVY image data, followed by meta data
1960in form of an array of offsets to the UYVY data blocks. The actual pointer array
1961follows immediately the interleaved JPEG/UYVY data, the number of entries in
1962this array equals the height of the UYVY image. Each entry is a 4-byte unsigned
1963integer in big endian order and it's an offset to a single pixel line of the
1964UYVY image. The first plane can start either with JPEG or UYVY data chunk. The
1965size of a single UYVY block equals the UYVY image's width multiplied by 2. The
1966size of a JPEG chunk depends on the image and can vary with each line.
1967<para>The second plane, at an offset of 4084 bytes, contains a 4-byte offset to
1968the pointer array in the first plane. This offset is followed by a 4-byte value
1969indicating size of the pointer array. All numbers in the second plane are also
1970in big endian order. Remaining data in the second plane is undefined. The
1971information in the second plane allows to easily find location of the pointer
1972array, which can be different for each frame. The size of the pointer array is
1973constant for given UYVY image height.</para>
1974<para>In order to extract UYVY and JPEG frames an application can initially set
1975a data pointer to the start of first plane and then add an offset from the first
1976entry of the pointers table. Such a pointer indicates start of an UYVY image
1977pixel line. Whole UYVY line can be copied to a separate buffer. These steps
1978should be repeated for each line, i.e. the number of entries in the pointer
1979array. Anything what's in between the UYVY lines is JPEG data and should be
1980concatenated to form the JPEG stream. </para>
1981</entry>
1982 </row>
1983 </tbody>
1984 </tgroup>
1985 </table>
1986
1987 <table frame="none" pgwide="1" id="format-flags">
1988 <title>Format Flags</title>
1989 <tgroup cols="3">
1990 &cs-def;
1991 <tbody valign="top">
1992 <row>
1993 <entry><constant>V4L2_PIX_FMT_FLAG_PREMUL_ALPHA</constant></entry>
1994 <entry>0x00000001</entry>
1995 <entry>The color values are premultiplied by the alpha channel
1996value. For example, if a light blue pixel with 50% transparency was described by
1997RGBA values (128, 192, 255, 128), the same pixel described with premultiplied
1998colors would be described by RGBA values (64, 96, 128, 128) </entry>
1999 </row>
2000 </tbody>
2001 </tgroup>
2002 </table>
2003 </section>
diff --git a/Documentation/DocBook/media/v4l/planar-apis.xml b/Documentation/DocBook/media/v4l/planar-apis.xml
deleted file mode 100644
index 878ce2040488..000000000000
--- a/Documentation/DocBook/media/v4l/planar-apis.xml
+++ /dev/null
@@ -1,62 +0,0 @@
1<section id="planar-apis">
2 <title>Single- and multi-planar APIs</title>
3
4 <para>Some devices require data for each input or output video frame
5 to be placed in discontiguous memory buffers. In such cases, one
6 video frame has to be addressed using more than one memory address, i.e. one
7 pointer per "plane". A plane is a sub-buffer of the current frame. For
8 examples of such formats see <xref linkend="pixfmt" />.</para>
9
10 <para>Initially, V4L2 API did not support multi-planar buffers and a set of
11 extensions has been introduced to handle them. Those extensions constitute
12 what is being referred to as the "multi-planar API".</para>
13
14 <para>Some of the V4L2 API calls and structures are interpreted differently,
15 depending on whether single- or multi-planar API is being used. An application
16 can choose whether to use one or the other by passing a corresponding buffer
17 type to its ioctl calls. Multi-planar versions of buffer types are suffixed
18 with an `_MPLANE' string. For a list of available multi-planar buffer types
19 see &v4l2-buf-type;.
20 </para>
21
22 <section>
23 <title>Multi-planar formats</title>
24 <para>Multi-planar API introduces new multi-planar formats. Those formats
25 use a separate set of FourCC codes. It is important to distinguish between
26 the multi-planar API and a multi-planar format. Multi-planar API calls can
27 handle all single-planar formats as well (as long as they are passed in
28 multi-planar API structures), while the single-planar API cannot
29 handle multi-planar formats.</para>
30 </section>
31
32 <section>
33 <title>Calls that distinguish between single and multi-planar APIs</title>
34 <variablelist>
35 <varlistentry>
36 <term>&VIDIOC-QUERYCAP;</term>
37 <listitem><para>Two additional multi-planar capabilities are added. They can
38 be set together with non-multi-planar ones for devices that handle
39 both single- and multi-planar formats.</para></listitem>
40 </varlistentry>
41 <varlistentry>
42 <term>&VIDIOC-G-FMT;, &VIDIOC-S-FMT;, &VIDIOC-TRY-FMT;</term>
43 <listitem><para>New structures for describing multi-planar formats are added:
44 &v4l2-pix-format-mplane; and &v4l2-plane-pix-format;. Drivers may
45 define new multi-planar formats, which have distinct FourCC codes from
46 the existing single-planar ones.</para>
47 </listitem>
48 </varlistentry>
49 <varlistentry>
50 <term>&VIDIOC-QBUF;, &VIDIOC-DQBUF;, &VIDIOC-QUERYBUF;</term>
51 <listitem><para>A new &v4l2-plane; structure for describing planes is added.
52 Arrays of this structure are passed in the new
53 <structfield>m.planes</structfield> field of &v4l2-buffer;.</para>
54 </listitem>
55 </varlistentry>
56 <varlistentry>
57 <term>&VIDIOC-REQBUFS;</term>
58 <listitem><para>Will allocate multi-planar buffers as requested.</para></listitem>
59 </varlistentry>
60 </variablelist>
61 </section>
62</section>
diff --git a/Documentation/DocBook/media/v4l/remote_controllers.xml b/Documentation/DocBook/media/v4l/remote_controllers.xml
deleted file mode 100644
index b86844e80257..000000000000
--- a/Documentation/DocBook/media/v4l/remote_controllers.xml
+++ /dev/null
@@ -1,320 +0,0 @@
1<partinfo>
2<authorgroup>
3<author>
4<firstname>Mauro</firstname>
5<surname>Chehab</surname>
6<othername role="mi">Carvalho</othername>
7<affiliation><address><email>m.chehab@samsung.com</email></address></affiliation>
8<contrib>Initial version.</contrib>
9</author>
10</authorgroup>
11<copyright>
12 <year>2009-2014</year>
13 <holder>Mauro Carvalho Chehab</holder>
14</copyright>
15
16<revhistory>
17<!-- Put document revisions here, newest first. -->
18<revision>
19<revnumber>3.15</revnumber>
20<date>2014-02-06</date>
21<authorinitials>mcc</authorinitials>
22<revremark>Added the interface description and the RC sysfs class description.</revremark>
23</revision>
24<revision>
25<revnumber>1.0</revnumber>
26<date>2009-09-06</date>
27<authorinitials>mcc</authorinitials>
28<revremark>Initial revision</revremark>
29</revision>
30</revhistory>
31</partinfo>
32
33 <title>Remote Controller API</title>
34 <chapter id="remote_controllers">
35
36<title>Remote Controllers</title>
37
38<section id="Remote_controllers_Intro">
39<title>Introduction</title>
40
41<para>Currently, most analog and digital devices have a Infrared input for remote controllers. Each
42manufacturer has their own type of control. It is not rare for the same manufacturer to ship different
43types of controls, depending on the device.</para>
44<para>A Remote Controller interface is mapped as a normal evdev/input interface, just like a keyboard or a mouse.
45So, it uses all ioctls already defined for any other input devices.</para>
46<para>However, remove controllers are more flexible than a normal input device, as the IR
47receiver (and/or transmitter) can be used in conjunction with a wide variety of different IR remotes.</para>
48<para>In order to allow flexibility, the Remote Controller subsystem allows controlling the
49RC-specific attributes via <link linkend="remote_controllers_sysfs_nodes">the sysfs class nodes</link>.</para>
50</section>
51
52<section id="remote_controllers_sysfs_nodes">
53<title>Remote Controller's sysfs nodes</title>
54<para>As defined at <constant>Documentation/ABI/testing/sysfs-class-rc</constant>, those are the sysfs nodes that control the Remote Controllers:</para>
55
56<section id="sys_class_rc">
57<title>/sys/class/rc/</title>
58<para>The <constant>/sys/class/rc/</constant> class sub-directory belongs to the Remote Controller
59core and provides a sysfs interface for configuring infrared remote controller receivers.
60</para>
61
62</section>
63<section id="sys_class_rc_rcN">
64<title>/sys/class/rc/rcN/</title>
65<para>A <constant>/sys/class/rc/rcN</constant> directory is created for each remote
66 control receiver device where N is the number of the receiver.</para>
67
68</section>
69<section id="sys_class_rc_rcN_protocols">
70<title>/sys/class/rc/rcN/protocols</title>
71<para>Reading this file returns a list of available protocols, something like:</para>
72<para><constant>rc5 [rc6] nec jvc [sony]</constant></para>
73<para>Enabled protocols are shown in [] brackets.</para>
74<para>Writing "+proto" will add a protocol to the list of enabled protocols.</para>
75<para>Writing "-proto" will remove a protocol from the list of enabled protocols.</para>
76<para>Writing "proto" will enable only "proto".</para>
77<para>Writing "none" will disable all protocols.</para>
78<para>Write fails with EINVAL if an invalid protocol combination or unknown protocol name is used.</para>
79
80</section>
81<section id="sys_class_rc_rcN_filter">
82<title>/sys/class/rc/rcN/filter</title>
83<para>Sets the scancode filter expected value.</para>
84<para>Use in combination with <constant>/sys/class/rc/rcN/filter_mask</constant> to set the
85expected value of the bits set in the filter mask.
86If the hardware supports it then scancodes which do not match
87the filter will be ignored. Otherwise the write will fail with
88an error.</para>
89<para>This value may be reset to 0 if the current protocol is altered.</para>
90
91</section>
92<section id="sys_class_rc_rcN_filter_mask">
93<title>/sys/class/rc/rcN/filter_mask</title>
94<para>Sets the scancode filter mask of bits to compare.
95Use in combination with <constant>/sys/class/rc/rcN/filter</constant> to set the bits
96of the scancode which should be compared against the expected
97value. A value of 0 disables the filter to allow all valid
98scancodes to be processed.</para>
99<para>If the hardware supports it then scancodes which do not match
100the filter will be ignored. Otherwise the write will fail with
101an error.</para>
102<para>This value may be reset to 0 if the current protocol is altered.</para>
103
104</section>
105<section id="sys_class_rc_rcN_wakeup_protocols">
106<title>/sys/class/rc/rcN/wakeup_protocols</title>
107<para>Reading this file returns a list of available protocols to use for the
108wakeup filter, something like:</para>
109<para><constant>rc5 rc6 nec jvc [sony]</constant></para>
110<para>The enabled wakeup protocol is shown in [] brackets.</para>
111<para>Writing "+proto" will add a protocol to the list of enabled wakeup
112protocols.</para>
113<para>Writing "-proto" will remove a protocol from the list of enabled wakeup
114protocols.</para>
115<para>Writing "proto" will use "proto" for wakeup events.</para>
116<para>Writing "none" will disable wakeup.</para>
117<para>Write fails with EINVAL if an invalid protocol combination or unknown
118protocol name is used, or if wakeup is not supported by the hardware.</para>
119
120</section>
121<section id="sys_class_rc_rcN_wakeup_filter">
122<title>/sys/class/rc/rcN/wakeup_filter</title>
123<para>Sets the scancode wakeup filter expected value.
124Use in combination with <constant>/sys/class/rc/rcN/wakeup_filter_mask</constant> to
125set the expected value of the bits set in the wakeup filter mask
126to trigger a system wake event.</para>
127<para>If the hardware supports it and wakeup_filter_mask is not 0 then
128scancodes which match the filter will wake the system from e.g.
129suspend to RAM or power off.
130Otherwise the write will fail with an error.</para>
131<para>This value may be reset to 0 if the wakeup protocol is altered.</para>
132
133</section>
134<section id="sys_class_rc_rcN_wakeup_filter_mask">
135<title>/sys/class/rc/rcN/wakeup_filter_mask</title>
136<para>Sets the scancode wakeup filter mask of bits to compare.
137Use in combination with <constant>/sys/class/rc/rcN/wakeup_filter</constant> to set
138the bits of the scancode which should be compared against the
139expected value to trigger a system wake event.</para>
140<para>If the hardware supports it and wakeup_filter_mask is not 0 then
141scancodes which match the filter will wake the system from e.g.
142suspend to RAM or power off.
143Otherwise the write will fail with an error.</para>
144<para>This value may be reset to 0 if the wakeup protocol is altered.</para>
145</section>
146</section>
147
148<section id="Remote_controllers_tables">
149<title>Remote controller tables</title>
150<para>Unfortunately, for several years, there was no effort to create uniform IR keycodes for
151different devices. This caused the same IR keyname to be mapped completely differently on
152different IR devices. This resulted that the same IR keyname to be mapped completely different on
153different IR's. Due to that, V4L2 API now specifies a standard for mapping Media keys on IR.</para>
154<para>This standard should be used by both V4L/DVB drivers and userspace applications</para>
155<para>The modules register the remote as keyboard within the linux input layer. This means that the IR key strokes will look like normal keyboard key strokes (if CONFIG_INPUT_KEYBOARD is enabled). Using the event devices (CONFIG_INPUT_EVDEV) it is possible for applications to access the remote via /dev/input/event devices.</para>
156
157<table pgwide="1" frame="none" id="rc_standard_keymap">
158<title>IR default keymapping</title>
159<tgroup cols="3">
160&cs-str;
161<tbody valign="top">
162<row>
163<entry>Key code</entry>
164<entry>Meaning</entry>
165<entry>Key examples on IR</entry>
166</row>
167
168<row><entry><emphasis role="bold">Numeric keys</emphasis></entry></row>
169
170<row><entry><constant>KEY_0</constant></entry><entry>Keyboard digit 0</entry><entry>0</entry></row>
171<row><entry><constant>KEY_1</constant></entry><entry>Keyboard digit 1</entry><entry>1</entry></row>
172<row><entry><constant>KEY_2</constant></entry><entry>Keyboard digit 2</entry><entry>2</entry></row>
173<row><entry><constant>KEY_3</constant></entry><entry>Keyboard digit 3</entry><entry>3</entry></row>
174<row><entry><constant>KEY_4</constant></entry><entry>Keyboard digit 4</entry><entry>4</entry></row>
175<row><entry><constant>KEY_5</constant></entry><entry>Keyboard digit 5</entry><entry>5</entry></row>
176<row><entry><constant>KEY_6</constant></entry><entry>Keyboard digit 6</entry><entry>6</entry></row>
177<row><entry><constant>KEY_7</constant></entry><entry>Keyboard digit 7</entry><entry>7</entry></row>
178<row><entry><constant>KEY_8</constant></entry><entry>Keyboard digit 8</entry><entry>8</entry></row>
179<row><entry><constant>KEY_9</constant></entry><entry>Keyboard digit 9</entry><entry>9</entry></row>
180
181<row><entry><emphasis role="bold">Movie play control</emphasis></entry></row>
182
183<row><entry><constant>KEY_FORWARD</constant></entry><entry>Instantly advance in time</entry><entry>&gt;&gt; / FORWARD</entry></row>
184<row><entry><constant>KEY_BACK</constant></entry><entry>Instantly go back in time</entry><entry>&lt;&lt;&lt; / BACK</entry></row>
185<row><entry><constant>KEY_FASTFORWARD</constant></entry><entry>Play movie faster</entry><entry>&gt;&gt;&gt; / FORWARD</entry></row>
186<row><entry><constant>KEY_REWIND</constant></entry><entry>Play movie back</entry><entry>REWIND / BACKWARD</entry></row>
187<row><entry><constant>KEY_NEXT</constant></entry><entry>Select next chapter / sub-chapter / interval</entry><entry>NEXT / SKIP</entry></row>
188<row><entry><constant>KEY_PREVIOUS</constant></entry><entry>Select previous chapter / sub-chapter / interval</entry><entry>&lt;&lt; / PREV / PREVIOUS</entry></row>
189<row><entry><constant>KEY_AGAIN</constant></entry><entry>Repeat the video or a video interval</entry><entry>REPEAT / LOOP / RECALL</entry></row>
190<row><entry><constant>KEY_PAUSE</constant></entry><entry>Pause sroweam</entry><entry>PAUSE / FREEZE</entry></row>
191<row><entry><constant>KEY_PLAY</constant></entry><entry>Play movie at the normal timeshift</entry><entry>NORMAL TIMESHIFT / LIVE / &gt;</entry></row>
192<row><entry><constant>KEY_PLAYPAUSE</constant></entry><entry>Alternate between play and pause</entry><entry>PLAY / PAUSE</entry></row>
193<row><entry><constant>KEY_STOP</constant></entry><entry>Stop sroweam</entry><entry>STOP</entry></row>
194<row><entry><constant>KEY_RECORD</constant></entry><entry>Start/stop recording sroweam</entry><entry>CAPTURE / REC / RECORD/PAUSE</entry></row>
195<row><entry><constant>KEY_CAMERA</constant></entry><entry>Take a picture of the image</entry><entry>CAMERA ICON / CAPTURE / SNAPSHOT</entry></row>
196<row><entry><constant>KEY_SHUFFLE</constant></entry><entry>Enable shuffle mode</entry><entry>SHUFFLE</entry></row>
197<row><entry><constant>KEY_TIME</constant></entry><entry>Activate time shift mode</entry><entry>TIME SHIFT</entry></row>
198<row><entry><constant>KEY_TITLE</constant></entry><entry>Allow changing the chapter</entry><entry>CHAPTER</entry></row>
199<row><entry><constant>KEY_SUBTITLE</constant></entry><entry>Allow changing the subtitle</entry><entry>SUBTITLE</entry></row>
200
201<row><entry><emphasis role="bold">Image control</emphasis></entry></row>
202
203<row><entry><constant>KEY_BRIGHTNESSDOWN</constant></entry><entry>Decrease Brightness</entry><entry>BRIGHTNESS DECREASE</entry></row>
204<row><entry><constant>KEY_BRIGHTNESSUP</constant></entry><entry>Increase Brightness</entry><entry>BRIGHTNESS INCREASE</entry></row>
205
206<row><entry><constant>KEY_ANGLE</constant></entry><entry>Switch video camera angle (on videos with more than one angle stored)</entry><entry>ANGLE / SWAP</entry></row>
207<row><entry><constant>KEY_EPG</constant></entry><entry>Open the Elecrowonic Play Guide (EPG)</entry><entry>EPG / GUIDE</entry></row>
208<row><entry><constant>KEY_TEXT</constant></entry><entry>Activate/change closed caption mode</entry><entry>CLOSED CAPTION/TELETEXT / DVD TEXT / TELETEXT / TTX</entry></row>
209
210<row><entry><emphasis role="bold">Audio control</emphasis></entry></row>
211
212<row><entry><constant>KEY_AUDIO</constant></entry><entry>Change audio source</entry><entry>AUDIO SOURCE / AUDIO / MUSIC</entry></row>
213<row><entry><constant>KEY_MUTE</constant></entry><entry>Mute/unmute audio</entry><entry>MUTE / DEMUTE / UNMUTE</entry></row>
214<row><entry><constant>KEY_VOLUMEDOWN</constant></entry><entry>Decrease volume</entry><entry>VOLUME- / VOLUME DOWN</entry></row>
215<row><entry><constant>KEY_VOLUMEUP</constant></entry><entry>Increase volume</entry><entry>VOLUME+ / VOLUME UP</entry></row>
216<row><entry><constant>KEY_MODE</constant></entry><entry>Change sound mode</entry><entry>MONO/STEREO</entry></row>
217<row><entry><constant>KEY_LANGUAGE</constant></entry><entry>Select Language</entry><entry>1ST / 2ND LANGUAGE / DVD LANG / MTS/SAP / MTS SEL</entry></row>
218
219<row><entry><emphasis role="bold">Channel control</emphasis></entry></row>
220
221<row><entry><constant>KEY_CHANNEL</constant></entry><entry>Go to the next favorite channel</entry><entry>ALT / CHANNEL / CH SURFING / SURF / FAV</entry></row>
222<row><entry><constant>KEY_CHANNELDOWN</constant></entry><entry>Decrease channel sequencially</entry><entry>CHANNEL - / CHANNEL DOWN / DOWN</entry></row>
223<row><entry><constant>KEY_CHANNELUP</constant></entry><entry>Increase channel sequencially</entry><entry>CHANNEL + / CHANNEL UP / UP</entry></row>
224<row><entry><constant>KEY_DIGITS</constant></entry><entry>Use more than one digit for channel</entry><entry>PLUS / 100/ 1xx / xxx / -/-- / Single Double Triple Digit</entry></row>
225<row><entry><constant>KEY_SEARCH</constant></entry><entry>Start channel autoscan</entry><entry>SCAN / AUTOSCAN</entry></row>
226
227<row><entry><emphasis role="bold">Colored keys</emphasis></entry></row>
228
229<row><entry><constant>KEY_BLUE</constant></entry><entry>IR Blue key</entry><entry>BLUE</entry></row>
230<row><entry><constant>KEY_GREEN</constant></entry><entry>IR Green Key</entry><entry>GREEN</entry></row>
231<row><entry><constant>KEY_RED</constant></entry><entry>IR Red key</entry><entry>RED</entry></row>
232<row><entry><constant>KEY_YELLOW</constant></entry><entry>IR Yellow key</entry><entry> YELLOW</entry></row>
233
234<row><entry><emphasis role="bold">Media selection</emphasis></entry></row>
235
236<row><entry><constant>KEY_CD</constant></entry><entry>Change input source to Compact Disc</entry><entry>CD</entry></row>
237<row><entry><constant>KEY_DVD</constant></entry><entry>Change input to DVD</entry><entry>DVD / DVD MENU</entry></row>
238<row><entry><constant>KEY_EJECTCLOSECD</constant></entry><entry>Open/close the CD/DVD player</entry><entry>-&gt; ) / CLOSE / OPEN</entry></row>
239
240<row><entry><constant>KEY_MEDIA</constant></entry><entry>Turn on/off Media application</entry><entry>PC/TV / TURN ON/OFF APP</entry></row>
241<row><entry><constant>KEY_PC</constant></entry><entry>Selects from TV to PC</entry><entry>PC</entry></row>
242<row><entry><constant>KEY_RADIO</constant></entry><entry>Put into AM/FM radio mode</entry><entry>RADIO / TV/FM / TV/RADIO / FM / FM/RADIO</entry></row>
243<row><entry><constant>KEY_TV</constant></entry><entry>Select tv mode</entry><entry>TV / LIVE TV</entry></row>
244<row><entry><constant>KEY_TV2</constant></entry><entry>Select Cable mode</entry><entry>AIR/CBL</entry></row>
245<row><entry><constant>KEY_VCR</constant></entry><entry>Select VCR mode</entry><entry>VCR MODE / DTR</entry></row>
246<row><entry><constant>KEY_VIDEO</constant></entry><entry>Alternate between input modes</entry><entry>SOURCE / SELECT / DISPLAY / SWITCH INPUTS / VIDEO</entry></row>
247
248<row><entry><emphasis role="bold">Power control</emphasis></entry></row>
249
250<row><entry><constant>KEY_POWER</constant></entry><entry>Turn on/off computer</entry><entry>SYSTEM POWER / COMPUTER POWER</entry></row>
251<row><entry><constant>KEY_POWER2</constant></entry><entry>Turn on/off application</entry><entry>TV ON/OFF / POWER</entry></row>
252<row><entry><constant>KEY_SLEEP</constant></entry><entry>Activate sleep timer</entry><entry>SLEEP / SLEEP TIMER</entry></row>
253<row><entry><constant>KEY_SUSPEND</constant></entry><entry>Put computer into suspend mode</entry><entry>STANDBY / SUSPEND</entry></row>
254
255<row><entry><emphasis role="bold">Window control</emphasis></entry></row>
256
257<row><entry><constant>KEY_CLEAR</constant></entry><entry>Stop sroweam and return to default input video/audio</entry><entry>CLEAR / RESET / BOSS KEY</entry></row>
258<row><entry><constant>KEY_CYCLEWINDOWS</constant></entry><entry>Minimize windows and move to the next one</entry><entry>ALT-TAB / MINIMIZE / DESKTOP</entry></row>
259<row><entry><constant>KEY_FAVORITES</constant></entry><entry>Open the favorites sroweam window</entry><entry>TV WALL / Favorites</entry></row>
260<row><entry><constant>KEY_MENU</constant></entry><entry>Call application menu</entry><entry>2ND CONTROLS (USA: MENU) / DVD/MENU / SHOW/HIDE CTRL</entry></row>
261<row><entry><constant>KEY_NEW</constant></entry><entry>Open/Close Picture in Picture</entry><entry>PIP</entry></row>
262<row><entry><constant>KEY_OK</constant></entry><entry>Send a confirmation code to application</entry><entry>OK / ENTER / RETURN</entry></row>
263<row><entry><constant>KEY_SCREEN</constant></entry><entry>Select screen aspect ratio</entry><entry>4:3 16:9 SELECT</entry></row>
264<row><entry><constant>KEY_ZOOM</constant></entry><entry>Put device into zoom/full screen mode</entry><entry>ZOOM / FULL SCREEN / ZOOM+ / HIDE PANNEL / SWITCH</entry></row>
265
266<row><entry><emphasis role="bold">Navigation keys</emphasis></entry></row>
267
268<row><entry><constant>KEY_ESC</constant></entry><entry>Cancel current operation</entry><entry>CANCEL / BACK</entry></row>
269<row><entry><constant>KEY_HELP</constant></entry><entry>Open a Help window</entry><entry>HELP</entry></row>
270<row><entry><constant>KEY_HOMEPAGE</constant></entry><entry>Navigate to Homepage</entry><entry>HOME</entry></row>
271<row><entry><constant>KEY_INFO</constant></entry><entry>Open On Screen Display</entry><entry>DISPLAY INFORMATION / OSD</entry></row>
272<row><entry><constant>KEY_WWW</constant></entry><entry>Open the default browser</entry><entry>WEB</entry></row>
273<row><entry><constant>KEY_UP</constant></entry><entry>Up key</entry><entry>UP</entry></row>
274<row><entry><constant>KEY_DOWN</constant></entry><entry>Down key</entry><entry>DOWN</entry></row>
275<row><entry><constant>KEY_LEFT</constant></entry><entry>Left key</entry><entry>LEFT</entry></row>
276<row><entry><constant>KEY_RIGHT</constant></entry><entry>Right key</entry><entry>RIGHT</entry></row>
277
278<row><entry><emphasis role="bold">Miscellaneous keys</emphasis></entry></row>
279
280<row><entry><constant>KEY_DOT</constant></entry><entry>Return a dot</entry><entry>.</entry></row>
281<row><entry><constant>KEY_FN</constant></entry><entry>Select a function</entry><entry>FUNCTION</entry></row>
282
283</tbody>
284</tgroup>
285</table>
286
287<para>It should be noted that, sometimes, there some fundamental missing keys at some cheaper IR's. Due to that, it is recommended to:</para>
288
289<table pgwide="1" frame="none" id="rc_keymap_notes">
290<title>Notes</title>
291<tgroup cols="1">
292&cs-str;
293<tbody valign="top">
294<row>
295<entry>On simpler IR's, without separate channel keys, you need to map UP as <constant>KEY_CHANNELUP</constant></entry>
296</row><row>
297<entry>On simpler IR's, without separate channel keys, you need to map DOWN as <constant>KEY_CHANNELDOWN</constant></entry>
298</row><row>
299<entry>On simpler IR's, without separate volume keys, you need to map LEFT as <constant>KEY_VOLUMEDOWN</constant></entry>
300</row><row>
301<entry>On simpler IR's, without separate volume keys, you need to map RIGHT as <constant>KEY_VOLUMEUP</constant></entry>
302</row>
303</tbody>
304</tgroup>
305</table>
306
307</section>
308
309<section id="Remote_controllers_table_change">
310<title>Changing default Remote Controller mappings</title>
311<para>The event interface provides two ioctls to be used against
312the /dev/input/event device, to allow changing the default
313keymapping.</para>
314
315<para>This program demonstrates how to replace the keymap tables.</para>
316&sub-keytable-c;
317</section>
318
319&sub-lirc_device_interface;
320</chapter>
diff --git a/Documentation/DocBook/media/v4l/selection-api.xml b/Documentation/DocBook/media/v4l/selection-api.xml
deleted file mode 100644
index b764cba150d1..000000000000
--- a/Documentation/DocBook/media/v4l/selection-api.xml
+++ /dev/null
@@ -1,317 +0,0 @@
1<section id="selection-api">
2
3 <title>API for cropping, composing and scaling</title>
4
5 <section>
6 <title>Introduction</title>
7
8<para>Some video capture devices can sample a subsection of a picture and
9shrink or enlarge it to an image of arbitrary size. Next, the devices can
10insert the image into larger one. Some video output devices can crop part of an
11input image, scale it up or down and insert it at an arbitrary scan line and
12horizontal offset into a video signal. We call these abilities cropping,
13scaling and composing.</para>
14
15<para>On a video <emphasis>capture</emphasis> device the source is a video
16signal, and the cropping target determine the area actually sampled. The sink
17is an image stored in a memory buffer. The composing area specifies which part
18of the buffer is actually written to by the hardware. </para>
19
20<para>On a video <emphasis>output</emphasis> device the source is an image in a
21memory buffer, and the cropping target is a part of an image to be shown on a
22display. The sink is the display or the graphics screen. The application may
23select the part of display where the image should be displayed. The size and
24position of such a window is controlled by the compose target.</para>
25
26<para>Rectangles for all cropping and composing targets are defined even if the
27device does supports neither cropping nor composing. Their size and position
28will be fixed in such a case. If the device does not support scaling then the
29cropping and composing rectangles have the same size.</para>
30
31 </section>
32
33 <section>
34 <title>Selection targets</title>
35
36 <para>
37 <figure id="sel-targets-capture">
38 <title>Cropping and composing targets</title>
39 <mediaobject>
40 <imageobject>
41 <imagedata fileref="selection.png" format="PNG" />
42 </imageobject>
43 <textobject>
44 <phrase>Targets used by a cropping, composing and scaling
45 process</phrase>
46 </textobject>
47 </mediaobject>
48 </figure>
49 </para>
50
51 <para>See <xref linkend="v4l2-selection-targets" /> for more
52 information.</para>
53 </section>
54
55 <section>
56
57 <title>Configuration</title>
58
59<para>Applications can use the <link linkend="vidioc-g-selection">selection
60API</link> to select an area in a video signal or a buffer, and to query for
61default settings and hardware limits.</para>
62
63<para>Video hardware can have various cropping, composing and scaling
64limitations. It may only scale up or down, support only discrete scaling
65factors, or have different scaling abilities in the horizontal and vertical
66directions. Also it may not support scaling at all. At the same time the
67cropping/composing rectangles may have to be aligned, and both the source and
68the sink may have arbitrary upper and lower size limits. Therefore, as usual,
69drivers are expected to adjust the requested parameters and return the actual
70values selected. An application can control the rounding behaviour using <link
71linkend="v4l2-selection-flags"> constraint flags </link>.</para>
72
73 <section>
74
75 <title>Configuration of video capture</title>
76
77<para>See figure <xref linkend="sel-targets-capture" /> for examples of the
78selection targets available for a video capture device. It is recommended to
79configure the cropping targets before to the composing targets.</para>
80
81<para>The range of coordinates of the top left corner, width and height of
82areas that can be sampled is given by the <constant>V4L2_SEL_TGT_CROP_BOUNDS</constant>
83target. It is recommended for the driver developers to put the
84top/left corner at position <constant>(0,0)</constant>. The rectangle's
85coordinates are expressed in pixels.</para>
86
87<para>The top left corner, width and height of the source rectangle, that is
88the area actually sampled, is given by the <constant>V4L2_SEL_TGT_CROP</constant>
89target. It uses the same coordinate system as <constant>V4L2_SEL_TGT_CROP_BOUNDS</constant>.
90The active cropping area must lie completely inside the capture boundaries. The
91driver may further adjust the requested size and/or position according to hardware
92limitations.</para>
93
94<para>Each capture device has a default source rectangle, given by the
95<constant>V4L2_SEL_TGT_CROP_DEFAULT</constant> target. This rectangle shall
96over what the driver writer considers the complete picture. Drivers shall set
97the active crop rectangle to the default when the driver is first loaded, but
98not later.</para>
99
100<para>The composing targets refer to a memory buffer. The limits of composing
101coordinates are obtained using <constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant>.
102All coordinates are expressed in pixels. The rectangle's top/left
103corner must be located at position <constant>(0,0)</constant>. The width and
104height are equal to the image size set by <constant>VIDIOC_S_FMT</constant>.
105</para>
106
107<para>The part of a buffer into which the image is inserted by the hardware is
108controlled by the <constant>V4L2_SEL_TGT_COMPOSE</constant> target.
109The rectangle's coordinates are also expressed in the same coordinate system as
110the bounds rectangle. The composing rectangle must lie completely inside bounds
111rectangle. The driver must adjust the composing rectangle to fit to the
112bounding limits. Moreover, the driver can perform other adjustments according
113to hardware limitations. The application can control rounding behaviour using
114<link linkend="v4l2-selection-flags"> constraint flags</link>.</para>
115
116<para>For capture devices the default composing rectangle is queried using
117<constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant>. It is usually equal to the
118bounding rectangle.</para>
119
120<para>The part of a buffer that is modified by the hardware is given by
121<constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant>. It contains all pixels
122defined using <constant>V4L2_SEL_TGT_COMPOSE</constant> plus all
123padding data modified by hardware during insertion process. All pixels outside
124this rectangle <emphasis>must not</emphasis> be changed by the hardware. The
125content of pixels that lie inside the padded area but outside active area is
126undefined. The application can use the padded and active rectangles to detect
127where the rubbish pixels are located and remove them if needed.</para>
128
129 </section>
130
131 <section>
132
133 <title>Configuration of video output</title>
134
135<para>For output devices targets and ioctls are used similarly to the video
136capture case. The <emphasis>composing</emphasis> rectangle refers to the
137insertion of an image into a video signal. The cropping rectangles refer to a
138memory buffer. It is recommended to configure the composing targets before to
139the cropping targets.</para>
140
141<para>The cropping targets refer to the memory buffer that contains an image to
142be inserted into a video signal or graphical screen. The limits of cropping
143coordinates are obtained using <constant>V4L2_SEL_TGT_CROP_BOUNDS</constant>.
144All coordinates are expressed in pixels. The top/left corner is always point
145<constant>(0,0)</constant>. The width and height is equal to the image size
146specified using <constant>VIDIOC_S_FMT</constant> ioctl.</para>
147
148<para>The top left corner, width and height of the source rectangle, that is
149the area from which image date are processed by the hardware, is given by the
150<constant>V4L2_SEL_TGT_CROP</constant>. Its coordinates are expressed
151in in the same coordinate system as the bounds rectangle. The active cropping
152area must lie completely inside the crop boundaries and the driver may further
153adjust the requested size and/or position according to hardware
154limitations.</para>
155
156<para>For output devices the default cropping rectangle is queried using
157<constant>V4L2_SEL_TGT_CROP_DEFAULT</constant>. It is usually equal to the
158bounding rectangle.</para>
159
160<para>The part of a video signal or graphics display where the image is
161inserted by the hardware is controlled by <constant>V4L2_SEL_TGT_COMPOSE</constant>
162target. The rectangle's coordinates are expressed in pixels. The composing
163rectangle must lie completely inside the bounds rectangle. The driver must
164adjust the area to fit to the bounding limits. Moreover, the driver can
165perform other adjustments according to hardware limitations.</para>
166
167<para>The device has a default composing rectangle, given by the
168<constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant> target. This rectangle shall cover what
169the driver writer considers the complete picture. It is recommended for the
170driver developers to put the top/left corner at position <constant>(0,0)</constant>.
171Drivers shall set the active composing rectangle to the default
172one when the driver is first loaded.</para>
173
174<para>The devices may introduce additional content to video signal other than
175an image from memory buffers. It includes borders around an image. However,
176such a padded area is driver-dependent feature not covered by this document.
177Driver developers are encouraged to keep padded rectangle equal to active one.
178The padded target is accessed by the <constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant>
179identifier. It must contain all pixels from the <constant>V4L2_SEL_TGT_COMPOSE</constant>
180target.</para>
181
182 </section>
183
184 <section>
185
186 <title>Scaling control</title>
187
188<para>An application can detect if scaling is performed by comparing the width
189and the height of rectangles obtained using <constant>V4L2_SEL_TGT_CROP</constant>
190and <constant>V4L2_SEL_TGT_COMPOSE</constant> targets. If
191these are not equal then the scaling is applied. The application can compute
192the scaling ratios using these values.</para>
193
194 </section>
195
196 </section>
197
198 <section>
199
200 <title>Comparison with old cropping API</title>
201
202<para>The selection API was introduced to cope with deficiencies of previous
203<link linkend="crop"> API</link>, that was designed to control simple capture
204devices. Later the cropping API was adopted by video output drivers. The ioctls
205are used to select a part of the display were the video signal is inserted. It
206should be considered as an API abuse because the described operation is
207actually the composing. The selection API makes a clear distinction between
208composing and cropping operations by setting the appropriate targets. The V4L2
209API lacks any support for composing to and cropping from an image inside a
210memory buffer. The application could configure a capture device to fill only a
211part of an image by abusing V4L2 API. Cropping a smaller image from a larger
212one is achieved by setting the field
213&v4l2-pix-format;<structfield>::bytesperline</structfield>. Introducing an image offsets
214could be done by modifying field &v4l2-buffer;<structfield>::m_userptr</structfield>
215before calling <constant>VIDIOC_QBUF</constant>. Those
216operations should be avoided because they are not portable (endianness), and do
217not work for macroblock and Bayer formats and mmap buffers. The selection API
218deals with configuration of buffer cropping/composing in a clear, intuitive and
219portable way. Next, with the selection API the concepts of the padded target
220and constraints flags are introduced. Finally, &v4l2-crop; and &v4l2-cropcap;
221have no reserved fields. Therefore there is no way to extend their functionality.
222The new &v4l2-selection; provides a lot of place for future
223extensions. Driver developers are encouraged to implement only selection API.
224The former cropping API would be simulated using the new one.</para>
225
226 </section>
227
228 <section>
229 <title>Examples</title>
230 <example>
231 <title>Resetting the cropping parameters</title>
232
233 <para>(A video capture device is assumed; change
234<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> for other devices; change target to
235<constant>V4L2_SEL_TGT_COMPOSE_*</constant> family to configure composing
236area)</para>
237
238 <programlisting>
239
240 &v4l2-selection; sel = {
241 .type = V4L2_BUF_TYPE_VIDEO_CAPTURE,
242 .target = V4L2_SEL_TGT_CROP_DEFAULT,
243 };
244 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;sel);
245 if (ret)
246 exit(-1);
247 sel.target = V4L2_SEL_TGT_CROP;
248 ret = ioctl(fd, &VIDIOC-S-SELECTION;, &amp;sel);
249 if (ret)
250 exit(-1);
251
252 </programlisting>
253 </example>
254
255 <example>
256 <title>Simple downscaling</title>
257 <para>Setting a composing area on output of size of <emphasis> at most
258</emphasis> half of limit placed at a center of a display.</para>
259 <programlisting>
260
261 &v4l2-selection; sel = {
262 .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
263 .target = V4L2_SEL_TGT_COMPOSE_BOUNDS,
264 };
265 struct v4l2_rect r;
266
267 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;sel);
268 if (ret)
269 exit(-1);
270 /* setting smaller compose rectangle */
271 r.width = sel.r.width / 2;
272 r.height = sel.r.height / 2;
273 r.left = sel.r.width / 4;
274 r.top = sel.r.height / 4;
275 sel.r = r;
276 sel.target = V4L2_SEL_TGT_COMPOSE;
277 sel.flags = V4L2_SEL_FLAG_LE;
278 ret = ioctl(fd, &VIDIOC-S-SELECTION;, &amp;sel);
279 if (ret)
280 exit(-1);
281
282 </programlisting>
283 </example>
284
285 <example>
286 <title>Querying for scaling factors</title>
287 <para>A video output device is assumed; change
288<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> for other devices</para>
289 <programlisting>
290
291 &v4l2-selection; compose = {
292 .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
293 .target = V4L2_SEL_TGT_COMPOSE,
294 };
295 &v4l2-selection; crop = {
296 .type = V4L2_BUF_TYPE_VIDEO_OUTPUT,
297 .target = V4L2_SEL_TGT_CROP,
298 };
299 double hscale, vscale;
300
301 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;compose);
302 if (ret)
303 exit(-1);
304 ret = ioctl(fd, &VIDIOC-G-SELECTION;, &amp;crop);
305 if (ret)
306 exit(-1);
307
308 /* computing scaling factors */
309 hscale = (double)compose.r.width / crop.r.width;
310 vscale = (double)compose.r.height / crop.r.height;
311
312 </programlisting>
313 </example>
314
315 </section>
316
317</section>
diff --git a/Documentation/DocBook/media/v4l/selections-common.xml b/Documentation/DocBook/media/v4l/selections-common.xml
deleted file mode 100644
index d6d56fb6f9c0..000000000000
--- a/Documentation/DocBook/media/v4l/selections-common.xml
+++ /dev/null
@@ -1,180 +0,0 @@
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_NATIVE_SIZE</constant></entry>
67 <entry>0x0003</entry>
68 <entry>The native size of the device, e.g. a sensor's
69 pixel array. <structfield>left</structfield> and
70 <structfield>top</structfield> fields are zero for this
71 target. Setting the native size will generally only make
72 sense for memory to memory devices where the software can
73 create a canvas of a given size in which for example a
74 video frame can be composed. In that case
75 V4L2_SEL_TGT_NATIVE_SIZE can be used to configure the size
76 of that canvas.
77 </entry>
78 <entry>Yes</entry>
79 <entry>Yes</entry>
80 </row>
81 <row>
82 <entry><constant>V4L2_SEL_TGT_COMPOSE</constant></entry>
83 <entry>0x0100</entry>
84 <entry>Compose rectangle. Used to configure scaling
85 and composition.</entry>
86 <entry>Yes</entry>
87 <entry>Yes</entry>
88 </row>
89 <row>
90 <entry><constant>V4L2_SEL_TGT_COMPOSE_DEFAULT</constant></entry>
91 <entry>0x0101</entry>
92 <entry>Suggested composition rectangle that covers the "whole picture".</entry>
93 <entry>Yes</entry>
94 <entry>No</entry>
95 </row>
96 <row>
97 <entry><constant>V4L2_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
98 <entry>0x0102</entry>
99 <entry>Bounds of the compose rectangle. All valid compose
100 rectangles fit inside the compose bounds rectangle.</entry>
101 <entry>Yes</entry>
102 <entry>Yes</entry>
103 </row>
104 <row>
105 <entry><constant>V4L2_SEL_TGT_COMPOSE_PADDED</constant></entry>
106 <entry>0x0103</entry>
107 <entry>The active area and all padding pixels that are inserted or
108 modified by hardware.</entry>
109 <entry>Yes</entry>
110 <entry>No</entry>
111 </row>
112 </tbody>
113 </tgroup>
114 </table>
115
116 </section>
117
118 <section id="v4l2-selection-flags">
119
120 <title>Selection flags</title>
121
122 <table pgwide="1" frame="none" id="v4l2-selection-flags-table">
123 <title>Selection flag definitions</title>
124 <tgroup cols="5">
125 <colspec colname="c1" />
126 <colspec colname="c2" />
127 <colspec colname="c3" />
128 <colspec colname="c4" />
129 <colspec colname="c5" />
130 &cs-def;
131 <thead>
132 <row rowsep="1">
133 <entry align="left">Flag name</entry>
134 <entry align="left">id</entry>
135 <entry align="left">Definition</entry>
136 <entry align="left">Valid for V4L2</entry>
137 <entry align="left">Valid for V4L2 subdev</entry>
138 </row>
139 </thead>
140 <tbody valign="top">
141 <row>
142 <entry><constant>V4L2_SEL_FLAG_GE</constant></entry>
143 <entry>(1 &lt;&lt; 0)</entry>
144 <entry>Suggest the driver it should choose greater or
145 equal rectangle (in size) than was requested. Albeit the
146 driver may choose a lesser size, it will only do so due to
147 hardware limitations. Without this flag (and
148 <constant>V4L2_SEL_FLAG_LE</constant>) the
149 behaviour is to choose the closest possible
150 rectangle.</entry>
151 <entry>Yes</entry>
152 <entry>Yes</entry>
153 </row>
154 <row>
155 <entry><constant>V4L2_SEL_FLAG_LE</constant></entry>
156 <entry>(1 &lt;&lt; 1)</entry>
157 <entry>Suggest the driver it
158 should choose lesser or equal rectangle (in size) than was
159 requested. Albeit the driver may choose a greater size, it
160 will only do so due to hardware limitations.</entry>
161 <entry>Yes</entry>
162 <entry>Yes</entry>
163 </row>
164 <row>
165 <entry><constant>V4L2_SEL_FLAG_KEEP_CONFIG</constant></entry>
166 <entry>(1 &lt;&lt; 2)</entry>
167 <entry>The configuration must not be propagated to any
168 further processing steps. If this flag is not given, the
169 configuration is propagated inside the subdevice to all
170 further processing steps.</entry>
171 <entry>No</entry>
172 <entry>Yes</entry>
173 </row>
174 </tbody>
175 </tgroup>
176 </table>
177
178 </section>
179
180</section>
diff --git a/Documentation/DocBook/media/v4l/subdev-formats.xml b/Documentation/DocBook/media/v4l/subdev-formats.xml
deleted file mode 100644
index 199c84e3aede..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-formats.xml
+++ /dev/null
@@ -1,4040 +0,0 @@
1<section id="v4l2-mbus-format">
2 <title>Media Bus Formats</title>
3
4 <table pgwide="1" frame="none" id="v4l2-mbus-framefmt">
5 <title>struct <structname>v4l2_mbus_framefmt</structname></title>
6 <tgroup cols="3">
7 &cs-str;
8 <tbody valign="top">
9 <row>
10 <entry>__u32</entry>
11 <entry><structfield>width</structfield></entry>
12 <entry>Image width, in pixels.</entry>
13 </row>
14 <row>
15 <entry>__u32</entry>
16 <entry><structfield>height</structfield></entry>
17 <entry>Image height, in pixels.</entry>
18 </row>
19 <row>
20 <entry>__u32</entry>
21 <entry><structfield>code</structfield></entry>
22 <entry>Format code, from &v4l2-mbus-pixelcode;.</entry>
23 </row>
24 <row>
25 <entry>__u32</entry>
26 <entry><structfield>field</structfield></entry>
27 <entry>Field order, from &v4l2-field;. See
28 <xref linkend="field-order" /> for details.</entry>
29 </row>
30 <row>
31 <entry>__u32</entry>
32 <entry><structfield>colorspace</structfield></entry>
33 <entry>Image colorspace, from &v4l2-colorspace;. See
34 <xref linkend="colorspaces" /> for details.</entry>
35 </row>
36 <row>
37 <entry>&v4l2-ycbcr-encoding;</entry>
38 <entry><structfield>ycbcr_enc</structfield></entry>
39 <entry>This information supplements the
40<structfield>colorspace</structfield> and must be set by the driver for
41capture streams and by the application for output streams,
42see <xref linkend="colorspaces" />.</entry>
43 </row>
44 <row>
45 <entry>&v4l2-quantization;</entry>
46 <entry><structfield>quantization</structfield></entry>
47 <entry>This information supplements the
48<structfield>colorspace</structfield> and must be set by the driver for
49capture streams and by the application for output streams,
50see <xref linkend="colorspaces" />.</entry>
51 </row>
52 <row>
53 <entry>&v4l2-xfer-func;</entry>
54 <entry><structfield>xfer_func</structfield></entry>
55 <entry>This information supplements the
56<structfield>colorspace</structfield> and must be set by the driver for
57capture streams and by the application for output streams,
58see <xref linkend="colorspaces" />.</entry>
59 </row>
60 <row>
61 <entry>__u16</entry>
62 <entry><structfield>reserved</structfield>[11]</entry>
63 <entry>Reserved for future extensions. Applications and drivers must
64 set the array to zero.</entry>
65 </row>
66 </tbody>
67 </tgroup>
68 </table>
69
70 <section id="v4l2-mbus-pixelcode">
71 <title>Media Bus Pixel Codes</title>
72
73 <para>The media bus pixel codes describe image formats as flowing over
74 physical busses (both between separate physical components and inside SoC
75 devices). This should not be confused with the V4L2 pixel formats that
76 describe, using four character codes, image formats as stored in memory.
77 </para>
78
79 <para>While there is a relationship between image formats on busses and
80 image formats in memory (a raw Bayer image won't be magically converted to
81 JPEG just by storing it to memory), there is no one-to-one correspondance
82 between them.</para>
83
84 <section>
85 <title>Packed RGB Formats</title>
86
87 <para>Those formats transfer pixel data as red, green and blue components.
88 The format code is made of the following information.
89 <itemizedlist>
90 <listitem><para>The red, green and blue components order code, as encoded in a
91 pixel sample. Possible values are RGB and BGR.</para></listitem>
92 <listitem><para>The number of bits per component, for each component. The values
93 can be different for all components. Common values are 555 and 565.</para>
94 </listitem>
95 <listitem><para>The number of bus samples per pixel. Pixels that are wider than
96 the bus width must be transferred in multiple samples. Common values are
97 1 and 2.</para></listitem>
98 <listitem><para>The bus width.</para></listitem>
99 <listitem><para>For formats where the total number of bits per pixel is smaller
100 than the number of bus samples per pixel times the bus width, a padding
101 value stating if the bytes are padded in their most high order bits
102 (PADHI) or low order bits (PADLO). A "C" prefix is used for component-wise
103 padding in the most high order bits (CPADHI) or low order bits (CPADLO)
104 of each separate component.</para></listitem>
105 <listitem><para>For formats where the number of bus samples per pixel is larger
106 than 1, an endianness value stating if the pixel is transferred MSB first
107 (BE) or LSB first (LE).</para></listitem>
108 </itemizedlist>
109 </para>
110
111 <para>For instance, a format where pixels are encoded as 5-bits red, 5-bits
112 green and 5-bit blue values padded on the high bit, transferred as 2 8-bit
113 samples per pixel with the most significant bits (padding, red and half of
114 the green value) transferred first will be named
115 <constant>MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE</constant>.
116 </para>
117
118 <para>The following tables list existing packed RGB formats.</para>
119
120 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb">
121 <title>RGB formats</title>
122 <tgroup cols="27">
123 <colspec colname="id" align="left" />
124 <colspec colname="code" align="center"/>
125 <colspec colname="bit" />
126 <colspec colnum="4" colname="b31" align="center" />
127 <colspec colnum="5" colname="b20" align="center" />
128 <colspec colnum="6" colname="b29" align="center" />
129 <colspec colnum="7" colname="b28" align="center" />
130 <colspec colnum="8" colname="b27" align="center" />
131 <colspec colnum="9" colname="b26" align="center" />
132 <colspec colnum="10" colname="b25" align="center" />
133 <colspec colnum="11" colname="b24" align="center" />
134 <colspec colnum="12" colname="b23" align="center" />
135 <colspec colnum="13" colname="b22" align="center" />
136 <colspec colnum="14" colname="b21" align="center" />
137 <colspec colnum="15" colname="b20" align="center" />
138 <colspec colnum="16" colname="b19" align="center" />
139 <colspec colnum="17" colname="b18" align="center" />
140 <colspec colnum="18" colname="b17" align="center" />
141 <colspec colnum="19" colname="b16" align="center" />
142 <colspec colnum="20" colname="b15" align="center" />
143 <colspec colnum="21" colname="b14" align="center" />
144 <colspec colnum="22" colname="b13" align="center" />
145 <colspec colnum="23" colname="b12" align="center" />
146 <colspec colnum="24" colname="b11" align="center" />
147 <colspec colnum="25" colname="b10" align="center" />
148 <colspec colnum="26" colname="b09" align="center" />
149 <colspec colnum="27" colname="b08" align="center" />
150 <colspec colnum="28" colname="b07" align="center" />
151 <colspec colnum="29" colname="b06" align="center" />
152 <colspec colnum="30" colname="b05" align="center" />
153 <colspec colnum="31" colname="b04" align="center" />
154 <colspec colnum="32" colname="b03" align="center" />
155 <colspec colnum="33" colname="b02" align="center" />
156 <colspec colnum="34" colname="b01" align="center" />
157 <colspec colnum="35" colname="b00" align="center" />
158 <spanspec namest="b31" nameend="b00" spanname="b0" />
159 <thead>
160 <row>
161 <entry>Identifier</entry>
162 <entry>Code</entry>
163 <entry></entry>
164 <entry spanname="b0">Data organization</entry>
165 </row>
166 <row>
167 <entry></entry>
168 <entry></entry>
169 <entry>Bit</entry>
170 <entry>31</entry>
171 <entry>30</entry>
172 <entry>29</entry>
173 <entry>28</entry>
174 <entry>27</entry>
175 <entry>26</entry>
176 <entry>25</entry>
177 <entry>24</entry>
178 <entry>23</entry>
179 <entry>22</entry>
180 <entry>21</entry>
181 <entry>20</entry>
182 <entry>19</entry>
183 <entry>18</entry>
184 <entry>17</entry>
185 <entry>16</entry>
186 <entry>15</entry>
187 <entry>14</entry>
188 <entry>13</entry>
189 <entry>12</entry>
190 <entry>11</entry>
191 <entry>10</entry>
192 <entry>9</entry>
193 <entry>8</entry>
194 <entry>7</entry>
195 <entry>6</entry>
196 <entry>5</entry>
197 <entry>4</entry>
198 <entry>3</entry>
199 <entry>2</entry>
200 <entry>1</entry>
201 <entry>0</entry>
202 </row>
203 </thead>
204 <tbody valign="top">
205 <row id="MEDIA-BUS-FMT-RGB444-1X12">
206 <entry>MEDIA_BUS_FMT_RGB444_1X12</entry>
207 <entry>0x1016</entry>
208 <entry></entry>
209 &dash-ent-20;
210 <entry>r<subscript>3</subscript></entry>
211 <entry>r<subscript>2</subscript></entry>
212 <entry>r<subscript>1</subscript></entry>
213 <entry>r<subscript>0</subscript></entry>
214 <entry>g<subscript>3</subscript></entry>
215 <entry>g<subscript>2</subscript></entry>
216 <entry>g<subscript>1</subscript></entry>
217 <entry>g<subscript>0</subscript></entry>
218 <entry>b<subscript>3</subscript></entry>
219 <entry>b<subscript>2</subscript></entry>
220 <entry>b<subscript>1</subscript></entry>
221 <entry>b<subscript>0</subscript></entry>
222 </row>
223 <row id="MEDIA-BUS-FMT-RGB444-2X8-PADHI-BE">
224 <entry>MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE</entry>
225 <entry>0x1001</entry>
226 <entry></entry>
227 &dash-ent-24;
228 <entry>0</entry>
229 <entry>0</entry>
230 <entry>0</entry>
231 <entry>0</entry>
232 <entry>r<subscript>3</subscript></entry>
233 <entry>r<subscript>2</subscript></entry>
234 <entry>r<subscript>1</subscript></entry>
235 <entry>r<subscript>0</subscript></entry>
236 </row>
237 <row>
238 <entry></entry>
239 <entry></entry>
240 <entry></entry>
241 &dash-ent-24;
242 <entry>g<subscript>3</subscript></entry>
243 <entry>g<subscript>2</subscript></entry>
244 <entry>g<subscript>1</subscript></entry>
245 <entry>g<subscript>0</subscript></entry>
246 <entry>b<subscript>3</subscript></entry>
247 <entry>b<subscript>2</subscript></entry>
248 <entry>b<subscript>1</subscript></entry>
249 <entry>b<subscript>0</subscript></entry>
250 </row>
251 <row id="MEDIA-BUS-FMT-RGB444-2X8-PADHI-LE">
252 <entry>MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE</entry>
253 <entry>0x1002</entry>
254 <entry></entry>
255 &dash-ent-24;
256 <entry>g<subscript>3</subscript></entry>
257 <entry>g<subscript>2</subscript></entry>
258 <entry>g<subscript>1</subscript></entry>
259 <entry>g<subscript>0</subscript></entry>
260 <entry>b<subscript>3</subscript></entry>
261 <entry>b<subscript>2</subscript></entry>
262 <entry>b<subscript>1</subscript></entry>
263 <entry>b<subscript>0</subscript></entry>
264 </row>
265 <row>
266 <entry></entry>
267 <entry></entry>
268 <entry></entry>
269 &dash-ent-24;
270 <entry>0</entry>
271 <entry>0</entry>
272 <entry>0</entry>
273 <entry>0</entry>
274 <entry>r<subscript>3</subscript></entry>
275 <entry>r<subscript>2</subscript></entry>
276 <entry>r<subscript>1</subscript></entry>
277 <entry>r<subscript>0</subscript></entry>
278 </row>
279 <row id="MEDIA-BUS-FMT-RGB555-2X8-PADHI-BE">
280 <entry>MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE</entry>
281 <entry>0x1003</entry>
282 <entry></entry>
283 &dash-ent-24;
284 <entry>0</entry>
285 <entry>r<subscript>4</subscript></entry>
286 <entry>r<subscript>3</subscript></entry>
287 <entry>r<subscript>2</subscript></entry>
288 <entry>r<subscript>1</subscript></entry>
289 <entry>r<subscript>0</subscript></entry>
290 <entry>g<subscript>4</subscript></entry>
291 <entry>g<subscript>3</subscript></entry>
292 </row>
293 <row>
294 <entry></entry>
295 <entry></entry>
296 <entry></entry>
297 &dash-ent-24;
298 <entry>g<subscript>2</subscript></entry>
299 <entry>g<subscript>1</subscript></entry>
300 <entry>g<subscript>0</subscript></entry>
301 <entry>b<subscript>4</subscript></entry>
302 <entry>b<subscript>3</subscript></entry>
303 <entry>b<subscript>2</subscript></entry>
304 <entry>b<subscript>1</subscript></entry>
305 <entry>b<subscript>0</subscript></entry>
306 </row>
307 <row id="MEDIA-BUS-FMT-RGB555-2X8-PADHI-LE">
308 <entry>MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE</entry>
309 <entry>0x1004</entry>
310 <entry></entry>
311 &dash-ent-24;
312 <entry>g<subscript>2</subscript></entry>
313 <entry>g<subscript>1</subscript></entry>
314 <entry>g<subscript>0</subscript></entry>
315 <entry>b<subscript>4</subscript></entry>
316 <entry>b<subscript>3</subscript></entry>
317 <entry>b<subscript>2</subscript></entry>
318 <entry>b<subscript>1</subscript></entry>
319 <entry>b<subscript>0</subscript></entry>
320 </row>
321 <row>
322 <entry></entry>
323 <entry></entry>
324 <entry></entry>
325 &dash-ent-24;
326 <entry>0</entry>
327 <entry>r<subscript>4</subscript></entry>
328 <entry>r<subscript>3</subscript></entry>
329 <entry>r<subscript>2</subscript></entry>
330 <entry>r<subscript>1</subscript></entry>
331 <entry>r<subscript>0</subscript></entry>
332 <entry>g<subscript>4</subscript></entry>
333 <entry>g<subscript>3</subscript></entry>
334 </row>
335 <row id="MEDIA-BUS-FMT-RGB565-1X16">
336 <entry>MEDIA_BUS_FMT_RGB565_1X16</entry>
337 <entry>0x1017</entry>
338 <entry></entry>
339 &dash-ent-16;
340 <entry>r<subscript>4</subscript></entry>
341 <entry>r<subscript>3</subscript></entry>
342 <entry>r<subscript>2</subscript></entry>
343 <entry>r<subscript>1</subscript></entry>
344 <entry>r<subscript>0</subscript></entry>
345 <entry>g<subscript>5</subscript></entry>
346 <entry>g<subscript>4</subscript></entry>
347 <entry>g<subscript>3</subscript></entry>
348 <entry>g<subscript>2</subscript></entry>
349 <entry>g<subscript>1</subscript></entry>
350 <entry>g<subscript>0</subscript></entry>
351 <entry>b<subscript>4</subscript></entry>
352 <entry>b<subscript>3</subscript></entry>
353 <entry>b<subscript>2</subscript></entry>
354 <entry>b<subscript>1</subscript></entry>
355 <entry>b<subscript>0</subscript></entry>
356 </row>
357 <row id="MEDIA-BUS-FMT-BGR565-2X8-BE">
358 <entry>MEDIA_BUS_FMT_BGR565_2X8_BE</entry>
359 <entry>0x1005</entry>
360 <entry></entry>
361 &dash-ent-24;
362 <entry>b<subscript>4</subscript></entry>
363 <entry>b<subscript>3</subscript></entry>
364 <entry>b<subscript>2</subscript></entry>
365 <entry>b<subscript>1</subscript></entry>
366 <entry>b<subscript>0</subscript></entry>
367 <entry>g<subscript>5</subscript></entry>
368 <entry>g<subscript>4</subscript></entry>
369 <entry>g<subscript>3</subscript></entry>
370 </row>
371 <row>
372 <entry></entry>
373 <entry></entry>
374 <entry></entry>
375 &dash-ent-24;
376 <entry>g<subscript>2</subscript></entry>
377 <entry>g<subscript>1</subscript></entry>
378 <entry>g<subscript>0</subscript></entry>
379 <entry>r<subscript>4</subscript></entry>
380 <entry>r<subscript>3</subscript></entry>
381 <entry>r<subscript>2</subscript></entry>
382 <entry>r<subscript>1</subscript></entry>
383 <entry>r<subscript>0</subscript></entry>
384 </row>
385 <row id="MEDIA-BUS-FMT-BGR565-2X8-LE">
386 <entry>MEDIA_BUS_FMT_BGR565_2X8_LE</entry>
387 <entry>0x1006</entry>
388 <entry></entry>
389 &dash-ent-24;
390 <entry>g<subscript>2</subscript></entry>
391 <entry>g<subscript>1</subscript></entry>
392 <entry>g<subscript>0</subscript></entry>
393 <entry>r<subscript>4</subscript></entry>
394 <entry>r<subscript>3</subscript></entry>
395 <entry>r<subscript>2</subscript></entry>
396 <entry>r<subscript>1</subscript></entry>
397 <entry>r<subscript>0</subscript></entry>
398 </row>
399 <row>
400 <entry></entry>
401 <entry></entry>
402 <entry></entry>
403 &dash-ent-24;
404 <entry>b<subscript>4</subscript></entry>
405 <entry>b<subscript>3</subscript></entry>
406 <entry>b<subscript>2</subscript></entry>
407 <entry>b<subscript>1</subscript></entry>
408 <entry>b<subscript>0</subscript></entry>
409 <entry>g<subscript>5</subscript></entry>
410 <entry>g<subscript>4</subscript></entry>
411 <entry>g<subscript>3</subscript></entry>
412 </row>
413 <row id="MEDIA-BUS-FMT-RGB565-2X8-BE">
414 <entry>MEDIA_BUS_FMT_RGB565_2X8_BE</entry>
415 <entry>0x1007</entry>
416 <entry></entry>
417 &dash-ent-24;
418 <entry>r<subscript>4</subscript></entry>
419 <entry>r<subscript>3</subscript></entry>
420 <entry>r<subscript>2</subscript></entry>
421 <entry>r<subscript>1</subscript></entry>
422 <entry>r<subscript>0</subscript></entry>
423 <entry>g<subscript>5</subscript></entry>
424 <entry>g<subscript>4</subscript></entry>
425 <entry>g<subscript>3</subscript></entry>
426 </row>
427 <row>
428 <entry></entry>
429 <entry></entry>
430 <entry></entry>
431 &dash-ent-24;
432 <entry>g<subscript>2</subscript></entry>
433 <entry>g<subscript>1</subscript></entry>
434 <entry>g<subscript>0</subscript></entry>
435 <entry>b<subscript>4</subscript></entry>
436 <entry>b<subscript>3</subscript></entry>
437 <entry>b<subscript>2</subscript></entry>
438 <entry>b<subscript>1</subscript></entry>
439 <entry>b<subscript>0</subscript></entry>
440 </row>
441 <row id="MEDIA-BUS-FMT-RGB565-2X8-LE">
442 <entry>MEDIA_BUS_FMT_RGB565_2X8_LE</entry>
443 <entry>0x1008</entry>
444 <entry></entry>
445 &dash-ent-24;
446 <entry>g<subscript>2</subscript></entry>
447 <entry>g<subscript>1</subscript></entry>
448 <entry>g<subscript>0</subscript></entry>
449 <entry>b<subscript>4</subscript></entry>
450 <entry>b<subscript>3</subscript></entry>
451 <entry>b<subscript>2</subscript></entry>
452 <entry>b<subscript>1</subscript></entry>
453 <entry>b<subscript>0</subscript></entry>
454 </row>
455 <row>
456 <entry></entry>
457 <entry></entry>
458 <entry></entry>
459 &dash-ent-24;
460 <entry>r<subscript>4</subscript></entry>
461 <entry>r<subscript>3</subscript></entry>
462 <entry>r<subscript>2</subscript></entry>
463 <entry>r<subscript>1</subscript></entry>
464 <entry>r<subscript>0</subscript></entry>
465 <entry>g<subscript>5</subscript></entry>
466 <entry>g<subscript>4</subscript></entry>
467 <entry>g<subscript>3</subscript></entry>
468 </row>
469 <row id="MEDIA-BUS-FMT-RGB666-1X18">
470 <entry>MEDIA_BUS_FMT_RGB666_1X18</entry>
471 <entry>0x1009</entry>
472 <entry></entry>
473 &dash-ent-14;
474 <entry>r<subscript>5</subscript></entry>
475 <entry>r<subscript>4</subscript></entry>
476 <entry>r<subscript>3</subscript></entry>
477 <entry>r<subscript>2</subscript></entry>
478 <entry>r<subscript>1</subscript></entry>
479 <entry>r<subscript>0</subscript></entry>
480 <entry>g<subscript>5</subscript></entry>
481 <entry>g<subscript>4</subscript></entry>
482 <entry>g<subscript>3</subscript></entry>
483 <entry>g<subscript>2</subscript></entry>
484 <entry>g<subscript>1</subscript></entry>
485 <entry>g<subscript>0</subscript></entry>
486 <entry>b<subscript>5</subscript></entry>
487 <entry>b<subscript>4</subscript></entry>
488 <entry>b<subscript>3</subscript></entry>
489 <entry>b<subscript>2</subscript></entry>
490 <entry>b<subscript>1</subscript></entry>
491 <entry>b<subscript>0</subscript></entry>
492 </row>
493 <row id="MEDIA-BUS-FMT-RBG888-1X24">
494 <entry>MEDIA_BUS_FMT_RBG888_1X24</entry>
495 <entry>0x100e</entry>
496 <entry></entry>
497 &dash-ent-8;
498 <entry>r<subscript>7</subscript></entry>
499 <entry>r<subscript>6</subscript></entry>
500 <entry>r<subscript>5</subscript></entry>
501 <entry>r<subscript>4</subscript></entry>
502 <entry>r<subscript>3</subscript></entry>
503 <entry>r<subscript>2</subscript></entry>
504 <entry>r<subscript>1</subscript></entry>
505 <entry>r<subscript>0</subscript></entry>
506 <entry>b<subscript>7</subscript></entry>
507 <entry>b<subscript>6</subscript></entry>
508 <entry>b<subscript>5</subscript></entry>
509 <entry>b<subscript>4</subscript></entry>
510 <entry>b<subscript>3</subscript></entry>
511 <entry>b<subscript>2</subscript></entry>
512 <entry>b<subscript>1</subscript></entry>
513 <entry>b<subscript>0</subscript></entry>
514 <entry>g<subscript>7</subscript></entry>
515 <entry>g<subscript>6</subscript></entry>
516 <entry>g<subscript>5</subscript></entry>
517 <entry>g<subscript>4</subscript></entry>
518 <entry>g<subscript>3</subscript></entry>
519 <entry>g<subscript>2</subscript></entry>
520 <entry>g<subscript>1</subscript></entry>
521 <entry>g<subscript>0</subscript></entry>
522 </row>
523 <row id="MEDIA-BUS-FMT-RGB666-1X24_CPADHI">
524 <entry>MEDIA_BUS_FMT_RGB666_1X24_CPADHI</entry>
525 <entry>0x1015</entry>
526 <entry></entry>
527 &dash-ent-8;
528 <entry>0</entry>
529 <entry>0</entry>
530 <entry>r<subscript>5</subscript></entry>
531 <entry>r<subscript>4</subscript></entry>
532 <entry>r<subscript>3</subscript></entry>
533 <entry>r<subscript>2</subscript></entry>
534 <entry>r<subscript>1</subscript></entry>
535 <entry>r<subscript>0</subscript></entry>
536 <entry>0</entry>
537 <entry>0</entry>
538 <entry>g<subscript>5</subscript></entry>
539 <entry>g<subscript>4</subscript></entry>
540 <entry>g<subscript>3</subscript></entry>
541 <entry>g<subscript>2</subscript></entry>
542 <entry>g<subscript>1</subscript></entry>
543 <entry>g<subscript>0</subscript></entry>
544 <entry>0</entry>
545 <entry>0</entry>
546 <entry>b<subscript>5</subscript></entry>
547 <entry>b<subscript>4</subscript></entry>
548 <entry>b<subscript>3</subscript></entry>
549 <entry>b<subscript>2</subscript></entry>
550 <entry>b<subscript>1</subscript></entry>
551 <entry>b<subscript>0</subscript></entry>
552 </row>
553 <row id="MEDIA-BUS-FMT-BGR888-1X24">
554 <entry>MEDIA_BUS_FMT_BGR888_1X24</entry>
555 <entry>0x1013</entry>
556 <entry></entry>
557 &dash-ent-8;
558 <entry>b<subscript>7</subscript></entry>
559 <entry>b<subscript>6</subscript></entry>
560 <entry>b<subscript>5</subscript></entry>
561 <entry>b<subscript>4</subscript></entry>
562 <entry>b<subscript>3</subscript></entry>
563 <entry>b<subscript>2</subscript></entry>
564 <entry>b<subscript>1</subscript></entry>
565 <entry>b<subscript>0</subscript></entry>
566 <entry>g<subscript>7</subscript></entry>
567 <entry>g<subscript>6</subscript></entry>
568 <entry>g<subscript>5</subscript></entry>
569 <entry>g<subscript>4</subscript></entry>
570 <entry>g<subscript>3</subscript></entry>
571 <entry>g<subscript>2</subscript></entry>
572 <entry>g<subscript>1</subscript></entry>
573 <entry>g<subscript>0</subscript></entry>
574 <entry>r<subscript>7</subscript></entry>
575 <entry>r<subscript>6</subscript></entry>
576 <entry>r<subscript>5</subscript></entry>
577 <entry>r<subscript>4</subscript></entry>
578 <entry>r<subscript>3</subscript></entry>
579 <entry>r<subscript>2</subscript></entry>
580 <entry>r<subscript>1</subscript></entry>
581 <entry>r<subscript>0</subscript></entry>
582 </row>
583 <row id="MEDIA-BUS-FMT-GBR888-1X24">
584 <entry>MEDIA_BUS_FMT_GBR888_1X24</entry>
585 <entry>0x1014</entry>
586 <entry></entry>
587 &dash-ent-8;
588 <entry>g<subscript>7</subscript></entry>
589 <entry>g<subscript>6</subscript></entry>
590 <entry>g<subscript>5</subscript></entry>
591 <entry>g<subscript>4</subscript></entry>
592 <entry>g<subscript>3</subscript></entry>
593 <entry>g<subscript>2</subscript></entry>
594 <entry>g<subscript>1</subscript></entry>
595 <entry>g<subscript>0</subscript></entry>
596 <entry>b<subscript>7</subscript></entry>
597 <entry>b<subscript>6</subscript></entry>
598 <entry>b<subscript>5</subscript></entry>
599 <entry>b<subscript>4</subscript></entry>
600 <entry>b<subscript>3</subscript></entry>
601 <entry>b<subscript>2</subscript></entry>
602 <entry>b<subscript>1</subscript></entry>
603 <entry>b<subscript>0</subscript></entry>
604 <entry>r<subscript>7</subscript></entry>
605 <entry>r<subscript>6</subscript></entry>
606 <entry>r<subscript>5</subscript></entry>
607 <entry>r<subscript>4</subscript></entry>
608 <entry>r<subscript>3</subscript></entry>
609 <entry>r<subscript>2</subscript></entry>
610 <entry>r<subscript>1</subscript></entry>
611 <entry>r<subscript>0</subscript></entry>
612 </row>
613 <row id="MEDIA-BUS-FMT-RGB888-1X24">
614 <entry>MEDIA_BUS_FMT_RGB888_1X24</entry>
615 <entry>0x100a</entry>
616 <entry></entry>
617 &dash-ent-8;
618 <entry>r<subscript>7</subscript></entry>
619 <entry>r<subscript>6</subscript></entry>
620 <entry>r<subscript>5</subscript></entry>
621 <entry>r<subscript>4</subscript></entry>
622 <entry>r<subscript>3</subscript></entry>
623 <entry>r<subscript>2</subscript></entry>
624 <entry>r<subscript>1</subscript></entry>
625 <entry>r<subscript>0</subscript></entry>
626 <entry>g<subscript>7</subscript></entry>
627 <entry>g<subscript>6</subscript></entry>
628 <entry>g<subscript>5</subscript></entry>
629 <entry>g<subscript>4</subscript></entry>
630 <entry>g<subscript>3</subscript></entry>
631 <entry>g<subscript>2</subscript></entry>
632 <entry>g<subscript>1</subscript></entry>
633 <entry>g<subscript>0</subscript></entry>
634 <entry>b<subscript>7</subscript></entry>
635 <entry>b<subscript>6</subscript></entry>
636 <entry>b<subscript>5</subscript></entry>
637 <entry>b<subscript>4</subscript></entry>
638 <entry>b<subscript>3</subscript></entry>
639 <entry>b<subscript>2</subscript></entry>
640 <entry>b<subscript>1</subscript></entry>
641 <entry>b<subscript>0</subscript></entry>
642 </row>
643 <row id="MEDIA-BUS-FMT-RGB888-2X12-BE">
644 <entry>MEDIA_BUS_FMT_RGB888_2X12_BE</entry>
645 <entry>0x100b</entry>
646 <entry></entry>
647 &dash-ent-20;
648 <entry>r<subscript>7</subscript></entry>
649 <entry>r<subscript>6</subscript></entry>
650 <entry>r<subscript>5</subscript></entry>
651 <entry>r<subscript>4</subscript></entry>
652 <entry>r<subscript>3</subscript></entry>
653 <entry>r<subscript>2</subscript></entry>
654 <entry>r<subscript>1</subscript></entry>
655 <entry>r<subscript>0</subscript></entry>
656 <entry>g<subscript>7</subscript></entry>
657 <entry>g<subscript>6</subscript></entry>
658 <entry>g<subscript>5</subscript></entry>
659 <entry>g<subscript>4</subscript></entry>
660 </row>
661 <row>
662 <entry></entry>
663 <entry></entry>
664 <entry></entry>
665 &dash-ent-20;
666 <entry>g<subscript>3</subscript></entry>
667 <entry>g<subscript>2</subscript></entry>
668 <entry>g<subscript>1</subscript></entry>
669 <entry>g<subscript>0</subscript></entry>
670 <entry>b<subscript>7</subscript></entry>
671 <entry>b<subscript>6</subscript></entry>
672 <entry>b<subscript>5</subscript></entry>
673 <entry>b<subscript>4</subscript></entry>
674 <entry>b<subscript>3</subscript></entry>
675 <entry>b<subscript>2</subscript></entry>
676 <entry>b<subscript>1</subscript></entry>
677 <entry>b<subscript>0</subscript></entry>
678 </row>
679 <row id="MEDIA-BUS-FMT-RGB888-2X12-LE">
680 <entry>MEDIA_BUS_FMT_RGB888_2X12_LE</entry>
681 <entry>0x100c</entry>
682 <entry></entry>
683 &dash-ent-20;
684 <entry>g<subscript>3</subscript></entry>
685 <entry>g<subscript>2</subscript></entry>
686 <entry>g<subscript>1</subscript></entry>
687 <entry>g<subscript>0</subscript></entry>
688 <entry>b<subscript>7</subscript></entry>
689 <entry>b<subscript>6</subscript></entry>
690 <entry>b<subscript>5</subscript></entry>
691 <entry>b<subscript>4</subscript></entry>
692 <entry>b<subscript>3</subscript></entry>
693 <entry>b<subscript>2</subscript></entry>
694 <entry>b<subscript>1</subscript></entry>
695 <entry>b<subscript>0</subscript></entry>
696 </row>
697 <row>
698 <entry></entry>
699 <entry></entry>
700 <entry></entry>
701 &dash-ent-20;
702 <entry>r<subscript>7</subscript></entry>
703 <entry>r<subscript>6</subscript></entry>
704 <entry>r<subscript>5</subscript></entry>
705 <entry>r<subscript>4</subscript></entry>
706 <entry>r<subscript>3</subscript></entry>
707 <entry>r<subscript>2</subscript></entry>
708 <entry>r<subscript>1</subscript></entry>
709 <entry>r<subscript>0</subscript></entry>
710 <entry>g<subscript>7</subscript></entry>
711 <entry>g<subscript>6</subscript></entry>
712 <entry>g<subscript>5</subscript></entry>
713 <entry>g<subscript>4</subscript></entry>
714 </row>
715 <row id="MEDIA-BUS-FMT-ARGB888-1X32">
716 <entry>MEDIA_BUS_FMT_ARGB888_1X32</entry>
717 <entry>0x100d</entry>
718 <entry></entry>
719 <entry>a<subscript>7</subscript></entry>
720 <entry>a<subscript>6</subscript></entry>
721 <entry>a<subscript>5</subscript></entry>
722 <entry>a<subscript>4</subscript></entry>
723 <entry>a<subscript>3</subscript></entry>
724 <entry>a<subscript>2</subscript></entry>
725 <entry>a<subscript>1</subscript></entry>
726 <entry>a<subscript>0</subscript></entry>
727 <entry>r<subscript>7</subscript></entry>
728 <entry>r<subscript>6</subscript></entry>
729 <entry>r<subscript>5</subscript></entry>
730 <entry>r<subscript>4</subscript></entry>
731 <entry>r<subscript>3</subscript></entry>
732 <entry>r<subscript>2</subscript></entry>
733 <entry>r<subscript>1</subscript></entry>
734 <entry>r<subscript>0</subscript></entry>
735 <entry>g<subscript>7</subscript></entry>
736 <entry>g<subscript>6</subscript></entry>
737 <entry>g<subscript>5</subscript></entry>
738 <entry>g<subscript>4</subscript></entry>
739 <entry>g<subscript>3</subscript></entry>
740 <entry>g<subscript>2</subscript></entry>
741 <entry>g<subscript>1</subscript></entry>
742 <entry>g<subscript>0</subscript></entry>
743 <entry>b<subscript>7</subscript></entry>
744 <entry>b<subscript>6</subscript></entry>
745 <entry>b<subscript>5</subscript></entry>
746 <entry>b<subscript>4</subscript></entry>
747 <entry>b<subscript>3</subscript></entry>
748 <entry>b<subscript>2</subscript></entry>
749 <entry>b<subscript>1</subscript></entry>
750 <entry>b<subscript>0</subscript></entry>
751 </row>
752 <row id="MEDIA-BUS-FMT-RGB888-1X32-PADHI">
753 <entry>MEDIA_BUS_FMT_RGB888_1X32_PADHI</entry>
754 <entry>0x100f</entry>
755 <entry></entry>
756 <entry>0</entry>
757 <entry>0</entry>
758 <entry>0</entry>
759 <entry>0</entry>
760 <entry>0</entry>
761 <entry>0</entry>
762 <entry>0</entry>
763 <entry>0</entry>
764 <entry>r<subscript>7</subscript></entry>
765 <entry>r<subscript>6</subscript></entry>
766 <entry>r<subscript>5</subscript></entry>
767 <entry>r<subscript>4</subscript></entry>
768 <entry>r<subscript>3</subscript></entry>
769 <entry>r<subscript>2</subscript></entry>
770 <entry>r<subscript>1</subscript></entry>
771 <entry>r<subscript>0</subscript></entry>
772 <entry>g<subscript>7</subscript></entry>
773 <entry>g<subscript>6</subscript></entry>
774 <entry>g<subscript>5</subscript></entry>
775 <entry>g<subscript>4</subscript></entry>
776 <entry>g<subscript>3</subscript></entry>
777 <entry>g<subscript>2</subscript></entry>
778 <entry>g<subscript>1</subscript></entry>
779 <entry>g<subscript>0</subscript></entry>
780 <entry>b<subscript>7</subscript></entry>
781 <entry>b<subscript>6</subscript></entry>
782 <entry>b<subscript>5</subscript></entry>
783 <entry>b<subscript>4</subscript></entry>
784 <entry>b<subscript>3</subscript></entry>
785 <entry>b<subscript>2</subscript></entry>
786 <entry>b<subscript>1</subscript></entry>
787 <entry>b<subscript>0</subscript></entry>
788 </row>
789 </tbody>
790 </tgroup>
791 </table>
792
793 <para>On LVDS buses, usually each sample is transferred serialized in
794 seven time slots per pixel clock, on three (18-bit) or four (24-bit)
795 differential data pairs at the same time. The remaining bits are used for
796 control signals as defined by SPWG/PSWG/VESA or JEIDA standards.
797 The 24-bit RGB format serialized in seven time slots on four lanes using
798 JEIDA defined bit mapping will be named
799 <constant>MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA</constant>, for example.
800 </para>
801
802 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-rgb-lvds">
803 <title>LVDS RGB formats</title>
804 <tgroup cols="8">
805 <colspec colname="id" align="left" />
806 <colspec colname="code" align="center" />
807 <colspec colname="slot" align="center" />
808 <colspec colname="lane" />
809 <colspec colnum="5" colname="l03" align="center" />
810 <colspec colnum="6" colname="l02" align="center" />
811 <colspec colnum="7" colname="l01" align="center" />
812 <colspec colnum="8" colname="l00" align="center" />
813 <spanspec namest="l03" nameend="l00" spanname="l0" />
814 <thead>
815 <row>
816 <entry>Identifier</entry>
817 <entry>Code</entry>
818 <entry></entry>
819 <entry></entry>
820 <entry spanname="l0">Data organization</entry>
821 </row>
822 <row>
823 <entry></entry>
824 <entry></entry>
825 <entry>Timeslot</entry>
826 <entry>Lane</entry>
827 <entry>3</entry>
828 <entry>2</entry>
829 <entry>1</entry>
830 <entry>0</entry>
831 </row>
832 </thead>
833 <tbody valign="top">
834 <row id="MEDIA-BUS-FMT-RGB666-1X7X3-SPWG">
835 <entry>MEDIA_BUS_FMT_RGB666_1X7X3_SPWG</entry>
836 <entry>0x1010</entry>
837 <entry>0</entry>
838 <entry></entry>
839 <entry>-</entry>
840 <entry>d</entry>
841 <entry>b<subscript>1</subscript></entry>
842 <entry>g<subscript>0</subscript></entry>
843 </row>
844 <row>
845 <entry></entry>
846 <entry></entry>
847 <entry>1</entry>
848 <entry></entry>
849 <entry>-</entry>
850 <entry>d</entry>
851 <entry>b<subscript>0</subscript></entry>
852 <entry>r<subscript>5</subscript></entry>
853 </row>
854 <row>
855 <entry></entry>
856 <entry></entry>
857 <entry>2</entry>
858 <entry></entry>
859 <entry>-</entry>
860 <entry>d</entry>
861 <entry>g<subscript>5</subscript></entry>
862 <entry>r<subscript>4</subscript></entry>
863 </row>
864 <row>
865 <entry></entry>
866 <entry></entry>
867 <entry>3</entry>
868 <entry></entry>
869 <entry>-</entry>
870 <entry>b<subscript>5</subscript></entry>
871 <entry>g<subscript>4</subscript></entry>
872 <entry>r<subscript>3</subscript></entry>
873 </row>
874 <row>
875 <entry></entry>
876 <entry></entry>
877 <entry>4</entry>
878 <entry></entry>
879 <entry>-</entry>
880 <entry>b<subscript>4</subscript></entry>
881 <entry>g<subscript>3</subscript></entry>
882 <entry>r<subscript>2</subscript></entry>
883 </row>
884 <row>
885 <entry></entry>
886 <entry></entry>
887 <entry>5</entry>
888 <entry></entry>
889 <entry>-</entry>
890 <entry>b<subscript>3</subscript></entry>
891 <entry>g<subscript>2</subscript></entry>
892 <entry>r<subscript>1</subscript></entry>
893 </row>
894 <row>
895 <entry></entry>
896 <entry></entry>
897 <entry>6</entry>
898 <entry></entry>
899 <entry>-</entry>
900 <entry>b<subscript>2</subscript></entry>
901 <entry>g<subscript>1</subscript></entry>
902 <entry>r<subscript>0</subscript></entry>
903 </row>
904 <row id="MEDIA-BUS-FMT-RGB888-1X7X4-SPWG">
905 <entry>MEDIA_BUS_FMT_RGB888_1X7X4_SPWG</entry>
906 <entry>0x1011</entry>
907 <entry>0</entry>
908 <entry></entry>
909 <entry>d</entry>
910 <entry>d</entry>
911 <entry>b<subscript>1</subscript></entry>
912 <entry>g<subscript>0</subscript></entry>
913 </row>
914 <row>
915 <entry></entry>
916 <entry></entry>
917 <entry>1</entry>
918 <entry></entry>
919 <entry>b<subscript>7</subscript></entry>
920 <entry>d</entry>
921 <entry>b<subscript>0</subscript></entry>
922 <entry>r<subscript>5</subscript></entry>
923 </row>
924 <row>
925 <entry></entry>
926 <entry></entry>
927 <entry>2</entry>
928 <entry></entry>
929 <entry>b<subscript>6</subscript></entry>
930 <entry>d</entry>
931 <entry>g<subscript>5</subscript></entry>
932 <entry>r<subscript>4</subscript></entry>
933 </row>
934 <row>
935 <entry></entry>
936 <entry></entry>
937 <entry>3</entry>
938 <entry></entry>
939 <entry>g<subscript>7</subscript></entry>
940 <entry>b<subscript>5</subscript></entry>
941 <entry>g<subscript>4</subscript></entry>
942 <entry>r<subscript>3</subscript></entry>
943 </row>
944 <row>
945 <entry></entry>
946 <entry></entry>
947 <entry>4</entry>
948 <entry></entry>
949 <entry>g<subscript>6</subscript></entry>
950 <entry>b<subscript>4</subscript></entry>
951 <entry>g<subscript>3</subscript></entry>
952 <entry>r<subscript>2</subscript></entry>
953 </row>
954 <row>
955 <entry></entry>
956 <entry></entry>
957 <entry>5</entry>
958 <entry></entry>
959 <entry>r<subscript>7</subscript></entry>
960 <entry>b<subscript>3</subscript></entry>
961 <entry>g<subscript>2</subscript></entry>
962 <entry>r<subscript>1</subscript></entry>
963 </row>
964 <row>
965 <entry></entry>
966 <entry></entry>
967 <entry>6</entry>
968 <entry></entry>
969 <entry>r<subscript>6</subscript></entry>
970 <entry>b<subscript>2</subscript></entry>
971 <entry>g<subscript>1</subscript></entry>
972 <entry>r<subscript>0</subscript></entry>
973 </row>
974 <row id="MEDIA-BUS-FMT-RGB888-1X7X4-JEIDA">
975 <entry>MEDIA_BUS_FMT_RGB888_1X7X4_JEIDA</entry>
976 <entry>0x1012</entry>
977 <entry>0</entry>
978 <entry></entry>
979 <entry>d</entry>
980 <entry>d</entry>
981 <entry>b<subscript>3</subscript></entry>
982 <entry>g<subscript>2</subscript></entry>
983 </row>
984 <row>
985 <entry></entry>
986 <entry></entry>
987 <entry>1</entry>
988 <entry></entry>
989 <entry>b<subscript>1</subscript></entry>
990 <entry>d</entry>
991 <entry>b<subscript>2</subscript></entry>
992 <entry>r<subscript>7</subscript></entry>
993 </row>
994 <row>
995 <entry></entry>
996 <entry></entry>
997 <entry>2</entry>
998 <entry></entry>
999 <entry>b<subscript>0</subscript></entry>
1000 <entry>d</entry>
1001 <entry>g<subscript>7</subscript></entry>
1002 <entry>r<subscript>6</subscript></entry>
1003 </row>
1004 <row>
1005 <entry></entry>
1006 <entry></entry>
1007 <entry>3</entry>
1008 <entry></entry>
1009 <entry>g<subscript>1</subscript></entry>
1010 <entry>b<subscript>7</subscript></entry>
1011 <entry>g<subscript>6</subscript></entry>
1012 <entry>r<subscript>5</subscript></entry>
1013 </row>
1014 <row>
1015 <entry></entry>
1016 <entry></entry>
1017 <entry>4</entry>
1018 <entry></entry>
1019 <entry>g<subscript>0</subscript></entry>
1020 <entry>b<subscript>6</subscript></entry>
1021 <entry>g<subscript>5</subscript></entry>
1022 <entry>r<subscript>4</subscript></entry>
1023 </row>
1024 <row>
1025 <entry></entry>
1026 <entry></entry>
1027 <entry>5</entry>
1028 <entry></entry>
1029 <entry>r<subscript>1</subscript></entry>
1030 <entry>b<subscript>5</subscript></entry>
1031 <entry>g<subscript>4</subscript></entry>
1032 <entry>r<subscript>3</subscript></entry>
1033 </row>
1034 <row>
1035 <entry></entry>
1036 <entry></entry>
1037 <entry>6</entry>
1038 <entry></entry>
1039 <entry>r<subscript>0</subscript></entry>
1040 <entry>b<subscript>4</subscript></entry>
1041 <entry>g<subscript>3</subscript></entry>
1042 <entry>r<subscript>2</subscript></entry>
1043 </row>
1044 </tbody>
1045 </tgroup>
1046 </table>
1047 </section>
1048
1049 <section>
1050 <title>Bayer Formats</title>
1051
1052 <para>Those formats transfer pixel data as red, green and blue components.
1053 The format code is made of the following information.
1054 <itemizedlist>
1055 <listitem><para>The red, green and blue components order code, as encoded in a
1056 pixel sample. The possible values are shown in <xref
1057 linkend="bayer-patterns" />.</para></listitem>
1058 <listitem><para>The number of bits per pixel component. All components are
1059 transferred on the same number of bits. Common values are 8, 10 and 12.</para>
1060 </listitem>
1061 <listitem><para>The compression (optional). If the pixel components are
1062 ALAW- or DPCM-compressed, a mention of the compression scheme and the
1063 number of bits per compressed pixel component.</para></listitem>
1064 <listitem><para>The number of bus samples per pixel. Pixels that are wider than
1065 the bus width must be transferred in multiple samples. Common values are
1066 1 and 2.</para></listitem>
1067 <listitem><para>The bus width.</para></listitem>
1068 <listitem><para>For formats where the total number of bits per pixel is smaller
1069 than the number of bus samples per pixel times the bus width, a padding
1070 value stating if the bytes are padded in their most high order bits
1071 (PADHI) or low order bits (PADLO).</para></listitem>
1072 <listitem><para>For formats where the number of bus samples per pixel is larger
1073 than 1, an endianness value stating if the pixel is transferred MSB first
1074 (BE) or LSB first (LE).</para></listitem>
1075 </itemizedlist>
1076 </para>
1077
1078 <para>For instance, a format with uncompressed 10-bit Bayer components
1079 arranged in a red, green, green, blue pattern transferred as 2 8-bit
1080 samples per pixel with the least significant bits transferred first will
1081 be named <constant>MEDIA_BUS_FMT_SRGGB10_2X8_PADHI_LE</constant>.
1082 </para>
1083
1084 <figure id="bayer-patterns">
1085 <title>Bayer Patterns</title>
1086 <mediaobject>
1087 <imageobject>
1088 <imagedata fileref="bayer.png" format="PNG" />
1089 </imageobject>
1090 <textobject>
1091 <phrase>Bayer filter color patterns</phrase>
1092 </textobject>
1093 </mediaobject>
1094 </figure>
1095
1096 <para>The following table lists existing packed Bayer formats. The data
1097 organization is given as an example for the first pixel only.</para>
1098
1099 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-bayer">
1100 <title>Bayer Formats</title>
1101 <tgroup cols="15">
1102 <colspec colname="id" align="left" />
1103 <colspec colname="code" align="center"/>
1104 <colspec colname="bit" />
1105 <colspec colnum="4" colname="b11" align="center" />
1106 <colspec colnum="5" colname="b10" align="center" />
1107 <colspec colnum="6" colname="b09" align="center" />
1108 <colspec colnum="7" colname="b08" align="center" />
1109 <colspec colnum="8" colname="b07" align="center" />
1110 <colspec colnum="9" colname="b06" align="center" />
1111 <colspec colnum="10" colname="b05" align="center" />
1112 <colspec colnum="11" colname="b04" align="center" />
1113 <colspec colnum="12" colname="b03" align="center" />
1114 <colspec colnum="13" colname="b02" align="center" />
1115 <colspec colnum="14" colname="b01" align="center" />
1116 <colspec colnum="15" colname="b00" align="center" />
1117 <spanspec namest="b11" nameend="b00" spanname="b0" />
1118 <thead>
1119 <row>
1120 <entry>Identifier</entry>
1121 <entry>Code</entry>
1122 <entry></entry>
1123 <entry spanname="b0">Data organization</entry>
1124 </row>
1125 <row>
1126 <entry></entry>
1127 <entry></entry>
1128 <entry>Bit</entry>
1129 <entry>11</entry>
1130 <entry>10</entry>
1131 <entry>9</entry>
1132 <entry>8</entry>
1133 <entry>7</entry>
1134 <entry>6</entry>
1135 <entry>5</entry>
1136 <entry>4</entry>
1137 <entry>3</entry>
1138 <entry>2</entry>
1139 <entry>1</entry>
1140 <entry>0</entry>
1141 </row>
1142 </thead>
1143 <tbody valign="top">
1144 <row id="MEDIA-BUS-FMT-SBGGR8-1X8">
1145 <entry>MEDIA_BUS_FMT_SBGGR8_1X8</entry>
1146 <entry>0x3001</entry>
1147 <entry></entry>
1148 <entry>-</entry>
1149 <entry>-</entry>
1150 <entry>-</entry>
1151 <entry>-</entry>
1152 <entry>b<subscript>7</subscript></entry>
1153 <entry>b<subscript>6</subscript></entry>
1154 <entry>b<subscript>5</subscript></entry>
1155 <entry>b<subscript>4</subscript></entry>
1156 <entry>b<subscript>3</subscript></entry>
1157 <entry>b<subscript>2</subscript></entry>
1158 <entry>b<subscript>1</subscript></entry>
1159 <entry>b<subscript>0</subscript></entry>
1160 </row>
1161 <row id="MEDIA-BUS-FMT-SGBRG8-1X8">
1162 <entry>MEDIA_BUS_FMT_SGBRG8_1X8</entry>
1163 <entry>0x3013</entry>
1164 <entry></entry>
1165 <entry>-</entry>
1166 <entry>-</entry>
1167 <entry>-</entry>
1168 <entry>-</entry>
1169 <entry>g<subscript>7</subscript></entry>
1170 <entry>g<subscript>6</subscript></entry>
1171 <entry>g<subscript>5</subscript></entry>
1172 <entry>g<subscript>4</subscript></entry>
1173 <entry>g<subscript>3</subscript></entry>
1174 <entry>g<subscript>2</subscript></entry>
1175 <entry>g<subscript>1</subscript></entry>
1176 <entry>g<subscript>0</subscript></entry>
1177 </row>
1178 <row id="MEDIA-BUS-FMT-SGRBG8-1X8">
1179 <entry>MEDIA_BUS_FMT_SGRBG8_1X8</entry>
1180 <entry>0x3002</entry>
1181 <entry></entry>
1182 <entry>-</entry>
1183 <entry>-</entry>
1184 <entry>-</entry>
1185 <entry>-</entry>
1186 <entry>g<subscript>7</subscript></entry>
1187 <entry>g<subscript>6</subscript></entry>
1188 <entry>g<subscript>5</subscript></entry>
1189 <entry>g<subscript>4</subscript></entry>
1190 <entry>g<subscript>3</subscript></entry>
1191 <entry>g<subscript>2</subscript></entry>
1192 <entry>g<subscript>1</subscript></entry>
1193 <entry>g<subscript>0</subscript></entry>
1194 </row>
1195 <row id="MEDIA-BUS-FMT-SRGGB8-1X8">
1196 <entry>MEDIA_BUS_FMT_SRGGB8_1X8</entry>
1197 <entry>0x3014</entry>
1198 <entry></entry>
1199 <entry>-</entry>
1200 <entry>-</entry>
1201 <entry>-</entry>
1202 <entry>-</entry>
1203 <entry>r<subscript>7</subscript></entry>
1204 <entry>r<subscript>6</subscript></entry>
1205 <entry>r<subscript>5</subscript></entry>
1206 <entry>r<subscript>4</subscript></entry>
1207 <entry>r<subscript>3</subscript></entry>
1208 <entry>r<subscript>2</subscript></entry>
1209 <entry>r<subscript>1</subscript></entry>
1210 <entry>r<subscript>0</subscript></entry>
1211 </row>
1212 <row id="MEDIA-BUS-FMT-SBGGR10-ALAW8-1X8">
1213 <entry>MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8</entry>
1214 <entry>0x3015</entry>
1215 <entry></entry>
1216 <entry>-</entry>
1217 <entry>-</entry>
1218 <entry>-</entry>
1219 <entry>-</entry>
1220 <entry>b<subscript>7</subscript></entry>
1221 <entry>b<subscript>6</subscript></entry>
1222 <entry>b<subscript>5</subscript></entry>
1223 <entry>b<subscript>4</subscript></entry>
1224 <entry>b<subscript>3</subscript></entry>
1225 <entry>b<subscript>2</subscript></entry>
1226 <entry>b<subscript>1</subscript></entry>
1227 <entry>b<subscript>0</subscript></entry>
1228 </row>
1229 <row id="MEDIA-BUS-FMT-SGBRG10-ALAW8-1X8">
1230 <entry>MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8</entry>
1231 <entry>0x3016</entry>
1232 <entry></entry>
1233 <entry>-</entry>
1234 <entry>-</entry>
1235 <entry>-</entry>
1236 <entry>-</entry>
1237 <entry>g<subscript>7</subscript></entry>
1238 <entry>g<subscript>6</subscript></entry>
1239 <entry>g<subscript>5</subscript></entry>
1240 <entry>g<subscript>4</subscript></entry>
1241 <entry>g<subscript>3</subscript></entry>
1242 <entry>g<subscript>2</subscript></entry>
1243 <entry>g<subscript>1</subscript></entry>
1244 <entry>g<subscript>0</subscript></entry>
1245 </row>
1246 <row id="MEDIA-BUS-FMT-SGRBG10-ALAW8-1X8">
1247 <entry>MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8</entry>
1248 <entry>0x3017</entry>
1249 <entry></entry>
1250 <entry>-</entry>
1251 <entry>-</entry>
1252 <entry>-</entry>
1253 <entry>-</entry>
1254 <entry>g<subscript>7</subscript></entry>
1255 <entry>g<subscript>6</subscript></entry>
1256 <entry>g<subscript>5</subscript></entry>
1257 <entry>g<subscript>4</subscript></entry>
1258 <entry>g<subscript>3</subscript></entry>
1259 <entry>g<subscript>2</subscript></entry>
1260 <entry>g<subscript>1</subscript></entry>
1261 <entry>g<subscript>0</subscript></entry>
1262 </row>
1263 <row id="MEDIA-BUS-FMT-SRGGB10-ALAW8-1X8">
1264 <entry>MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8</entry>
1265 <entry>0x3018</entry>
1266 <entry></entry>
1267 <entry>-</entry>
1268 <entry>-</entry>
1269 <entry>-</entry>
1270 <entry>-</entry>
1271 <entry>r<subscript>7</subscript></entry>
1272 <entry>r<subscript>6</subscript></entry>
1273 <entry>r<subscript>5</subscript></entry>
1274 <entry>r<subscript>4</subscript></entry>
1275 <entry>r<subscript>3</subscript></entry>
1276 <entry>r<subscript>2</subscript></entry>
1277 <entry>r<subscript>1</subscript></entry>
1278 <entry>r<subscript>0</subscript></entry>
1279 </row>
1280 <row id="MEDIA-BUS-FMT-SBGGR10-DPCM8-1X8">
1281 <entry>MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8</entry>
1282 <entry>0x300b</entry>
1283 <entry></entry>
1284 <entry>-</entry>
1285 <entry>-</entry>
1286 <entry>-</entry>
1287 <entry>-</entry>
1288 <entry>b<subscript>7</subscript></entry>
1289 <entry>b<subscript>6</subscript></entry>
1290 <entry>b<subscript>5</subscript></entry>
1291 <entry>b<subscript>4</subscript></entry>
1292 <entry>b<subscript>3</subscript></entry>
1293 <entry>b<subscript>2</subscript></entry>
1294 <entry>b<subscript>1</subscript></entry>
1295 <entry>b<subscript>0</subscript></entry>
1296 </row>
1297 <row id="MEDIA-BUS-FMT-SGBRG10-DPCM8-1X8">
1298 <entry>MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8</entry>
1299 <entry>0x300c</entry>
1300 <entry></entry>
1301 <entry>-</entry>
1302 <entry>-</entry>
1303 <entry>-</entry>
1304 <entry>-</entry>
1305 <entry>g<subscript>7</subscript></entry>
1306 <entry>g<subscript>6</subscript></entry>
1307 <entry>g<subscript>5</subscript></entry>
1308 <entry>g<subscript>4</subscript></entry>
1309 <entry>g<subscript>3</subscript></entry>
1310 <entry>g<subscript>2</subscript></entry>
1311 <entry>g<subscript>1</subscript></entry>
1312 <entry>g<subscript>0</subscript></entry>
1313 </row>
1314 <row id="MEDIA-BUS-FMT-SGRBG10-DPCM8-1X8">
1315 <entry>MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8</entry>
1316 <entry>0x3009</entry>
1317 <entry></entry>
1318 <entry>-</entry>
1319 <entry>-</entry>
1320 <entry>-</entry>
1321 <entry>-</entry>
1322 <entry>g<subscript>7</subscript></entry>
1323 <entry>g<subscript>6</subscript></entry>
1324 <entry>g<subscript>5</subscript></entry>
1325 <entry>g<subscript>4</subscript></entry>
1326 <entry>g<subscript>3</subscript></entry>
1327 <entry>g<subscript>2</subscript></entry>
1328 <entry>g<subscript>1</subscript></entry>
1329 <entry>g<subscript>0</subscript></entry>
1330 </row>
1331 <row id="MEDIA-BUS-FMT-SRGGB10-DPCM8-1X8">
1332 <entry>MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8</entry>
1333 <entry>0x300d</entry>
1334 <entry></entry>
1335 <entry>-</entry>
1336 <entry>-</entry>
1337 <entry>-</entry>
1338 <entry>-</entry>
1339 <entry>r<subscript>7</subscript></entry>
1340 <entry>r<subscript>6</subscript></entry>
1341 <entry>r<subscript>5</subscript></entry>
1342 <entry>r<subscript>4</subscript></entry>
1343 <entry>r<subscript>3</subscript></entry>
1344 <entry>r<subscript>2</subscript></entry>
1345 <entry>r<subscript>1</subscript></entry>
1346 <entry>r<subscript>0</subscript></entry>
1347 </row>
1348 <row id="MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-BE">
1349 <entry>MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE</entry>
1350 <entry>0x3003</entry>
1351 <entry></entry>
1352 <entry>-</entry>
1353 <entry>-</entry>
1354 <entry>-</entry>
1355 <entry>-</entry>
1356 <entry>0</entry>
1357 <entry>0</entry>
1358 <entry>0</entry>
1359 <entry>0</entry>
1360 <entry>0</entry>
1361 <entry>0</entry>
1362 <entry>b<subscript>9</subscript></entry>
1363 <entry>b<subscript>8</subscript></entry>
1364 </row>
1365 <row>
1366 <entry></entry>
1367 <entry></entry>
1368 <entry></entry>
1369 <entry>-</entry>
1370 <entry>-</entry>
1371 <entry>-</entry>
1372 <entry>-</entry>
1373 <entry>b<subscript>7</subscript></entry>
1374 <entry>b<subscript>6</subscript></entry>
1375 <entry>b<subscript>5</subscript></entry>
1376 <entry>b<subscript>4</subscript></entry>
1377 <entry>b<subscript>3</subscript></entry>
1378 <entry>b<subscript>2</subscript></entry>
1379 <entry>b<subscript>1</subscript></entry>
1380 <entry>b<subscript>0</subscript></entry>
1381 </row>
1382 <row id="MEDIA-BUS-FMT-SBGGR10-2X8-PADHI-LE">
1383 <entry>MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE</entry>
1384 <entry>0x3004</entry>
1385 <entry></entry>
1386 <entry>-</entry>
1387 <entry>-</entry>
1388 <entry>-</entry>
1389 <entry>-</entry>
1390 <entry>b<subscript>7</subscript></entry>
1391 <entry>b<subscript>6</subscript></entry>
1392 <entry>b<subscript>5</subscript></entry>
1393 <entry>b<subscript>4</subscript></entry>
1394 <entry>b<subscript>3</subscript></entry>
1395 <entry>b<subscript>2</subscript></entry>
1396 <entry>b<subscript>1</subscript></entry>
1397 <entry>b<subscript>0</subscript></entry>
1398 </row>
1399 <row>
1400 <entry></entry>
1401 <entry></entry>
1402 <entry></entry>
1403 <entry>-</entry>
1404 <entry>-</entry>
1405 <entry>-</entry>
1406 <entry>-</entry>
1407 <entry>0</entry>
1408 <entry>0</entry>
1409 <entry>0</entry>
1410 <entry>0</entry>
1411 <entry>0</entry>
1412 <entry>0</entry>
1413 <entry>b<subscript>9</subscript></entry>
1414 <entry>b<subscript>8</subscript></entry>
1415 </row>
1416 <row id="MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-BE">
1417 <entry>MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE</entry>
1418 <entry>0x3005</entry>
1419 <entry></entry>
1420 <entry>-</entry>
1421 <entry>-</entry>
1422 <entry>-</entry>
1423 <entry>-</entry>
1424 <entry>b<subscript>9</subscript></entry>
1425 <entry>b<subscript>8</subscript></entry>
1426 <entry>b<subscript>7</subscript></entry>
1427 <entry>b<subscript>6</subscript></entry>
1428 <entry>b<subscript>5</subscript></entry>
1429 <entry>b<subscript>4</subscript></entry>
1430 <entry>b<subscript>3</subscript></entry>
1431 <entry>b<subscript>2</subscript></entry>
1432 </row>
1433 <row>
1434 <entry></entry>
1435 <entry></entry>
1436 <entry></entry>
1437 <entry>-</entry>
1438 <entry>-</entry>
1439 <entry>-</entry>
1440 <entry>-</entry>
1441 <entry>b<subscript>1</subscript></entry>
1442 <entry>b<subscript>0</subscript></entry>
1443 <entry>0</entry>
1444 <entry>0</entry>
1445 <entry>0</entry>
1446 <entry>0</entry>
1447 <entry>0</entry>
1448 <entry>0</entry>
1449 </row>
1450 <row id="MEDIA-BUS-FMT-SBGGR10-2X8-PADLO-LE">
1451 <entry>MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE</entry>
1452 <entry>0x3006</entry>
1453 <entry></entry>
1454 <entry>-</entry>
1455 <entry>-</entry>
1456 <entry>-</entry>
1457 <entry>-</entry>
1458 <entry>b<subscript>1</subscript></entry>
1459 <entry>b<subscript>0</subscript></entry>
1460 <entry>0</entry>
1461 <entry>0</entry>
1462 <entry>0</entry>
1463 <entry>0</entry>
1464 <entry>0</entry>
1465 <entry>0</entry>
1466 </row>
1467 <row>
1468 <entry></entry>
1469 <entry></entry>
1470 <entry></entry>
1471 <entry>-</entry>
1472 <entry>-</entry>
1473 <entry>-</entry>
1474 <entry>-</entry>
1475 <entry>b<subscript>9</subscript></entry>
1476 <entry>b<subscript>8</subscript></entry>
1477 <entry>b<subscript>7</subscript></entry>
1478 <entry>b<subscript>6</subscript></entry>
1479 <entry>b<subscript>5</subscript></entry>
1480 <entry>b<subscript>4</subscript></entry>
1481 <entry>b<subscript>3</subscript></entry>
1482 <entry>b<subscript>2</subscript></entry>
1483 </row>
1484 <row id="MEDIA-BUS-FMT-SBGGR10-1X10">
1485 <entry>MEDIA_BUS_FMT_SBGGR10_1X10</entry>
1486 <entry>0x3007</entry>
1487 <entry></entry>
1488 <entry>-</entry>
1489 <entry>-</entry>
1490 <entry>b<subscript>9</subscript></entry>
1491 <entry>b<subscript>8</subscript></entry>
1492 <entry>b<subscript>7</subscript></entry>
1493 <entry>b<subscript>6</subscript></entry>
1494 <entry>b<subscript>5</subscript></entry>
1495 <entry>b<subscript>4</subscript></entry>
1496 <entry>b<subscript>3</subscript></entry>
1497 <entry>b<subscript>2</subscript></entry>
1498 <entry>b<subscript>1</subscript></entry>
1499 <entry>b<subscript>0</subscript></entry>
1500 </row>
1501 <row id="MEDIA-BUS-FMT-SGBRG10-1X10">
1502 <entry>MEDIA_BUS_FMT_SGBRG10_1X10</entry>
1503 <entry>0x300e</entry>
1504 <entry></entry>
1505 <entry>-</entry>
1506 <entry>-</entry>
1507 <entry>g<subscript>9</subscript></entry>
1508 <entry>g<subscript>8</subscript></entry>
1509 <entry>g<subscript>7</subscript></entry>
1510 <entry>g<subscript>6</subscript></entry>
1511 <entry>g<subscript>5</subscript></entry>
1512 <entry>g<subscript>4</subscript></entry>
1513 <entry>g<subscript>3</subscript></entry>
1514 <entry>g<subscript>2</subscript></entry>
1515 <entry>g<subscript>1</subscript></entry>
1516 <entry>g<subscript>0</subscript></entry>
1517 </row>
1518 <row id="MEDIA-BUS-FMT-SGRBG10-1X10">
1519 <entry>MEDIA_BUS_FMT_SGRBG10_1X10</entry>
1520 <entry>0x300a</entry>
1521 <entry></entry>
1522 <entry>-</entry>
1523 <entry>-</entry>
1524 <entry>g<subscript>9</subscript></entry>
1525 <entry>g<subscript>8</subscript></entry>
1526 <entry>g<subscript>7</subscript></entry>
1527 <entry>g<subscript>6</subscript></entry>
1528 <entry>g<subscript>5</subscript></entry>
1529 <entry>g<subscript>4</subscript></entry>
1530 <entry>g<subscript>3</subscript></entry>
1531 <entry>g<subscript>2</subscript></entry>
1532 <entry>g<subscript>1</subscript></entry>
1533 <entry>g<subscript>0</subscript></entry>
1534 </row>
1535 <row id="MEDIA-BUS-FMT-SRGGB10-1X10">
1536 <entry>MEDIA_BUS_FMT_SRGGB10_1X10</entry>
1537 <entry>0x300f</entry>
1538 <entry></entry>
1539 <entry>-</entry>
1540 <entry>-</entry>
1541 <entry>r<subscript>9</subscript></entry>
1542 <entry>r<subscript>8</subscript></entry>
1543 <entry>r<subscript>7</subscript></entry>
1544 <entry>r<subscript>6</subscript></entry>
1545 <entry>r<subscript>5</subscript></entry>
1546 <entry>r<subscript>4</subscript></entry>
1547 <entry>r<subscript>3</subscript></entry>
1548 <entry>r<subscript>2</subscript></entry>
1549 <entry>r<subscript>1</subscript></entry>
1550 <entry>r<subscript>0</subscript></entry>
1551 </row>
1552 <row id="MEDIA-BUS-FMT-SBGGR12-1X12">
1553 <entry>MEDIA_BUS_FMT_SBGGR12_1X12</entry>
1554 <entry>0x3008</entry>
1555 <entry></entry>
1556 <entry>b<subscript>11</subscript></entry>
1557 <entry>b<subscript>10</subscript></entry>
1558 <entry>b<subscript>9</subscript></entry>
1559 <entry>b<subscript>8</subscript></entry>
1560 <entry>b<subscript>7</subscript></entry>
1561 <entry>b<subscript>6</subscript></entry>
1562 <entry>b<subscript>5</subscript></entry>
1563 <entry>b<subscript>4</subscript></entry>
1564 <entry>b<subscript>3</subscript></entry>
1565 <entry>b<subscript>2</subscript></entry>
1566 <entry>b<subscript>1</subscript></entry>
1567 <entry>b<subscript>0</subscript></entry>
1568 </row>
1569 <row id="MEDIA-BUS-FMT-SGBRG12-1X12">
1570 <entry>MEDIA_BUS_FMT_SGBRG12_1X12</entry>
1571 <entry>0x3010</entry>
1572 <entry></entry>
1573 <entry>g<subscript>11</subscript></entry>
1574 <entry>g<subscript>10</subscript></entry>
1575 <entry>g<subscript>9</subscript></entry>
1576 <entry>g<subscript>8</subscript></entry>
1577 <entry>g<subscript>7</subscript></entry>
1578 <entry>g<subscript>6</subscript></entry>
1579 <entry>g<subscript>5</subscript></entry>
1580 <entry>g<subscript>4</subscript></entry>
1581 <entry>g<subscript>3</subscript></entry>
1582 <entry>g<subscript>2</subscript></entry>
1583 <entry>g<subscript>1</subscript></entry>
1584 <entry>g<subscript>0</subscript></entry>
1585 </row>
1586 <row id="MEDIA-BUS-FMT-SGRBG12-1X12">
1587 <entry>MEDIA_BUS_FMT_SGRBG12_1X12</entry>
1588 <entry>0x3011</entry>
1589 <entry></entry>
1590 <entry>g<subscript>11</subscript></entry>
1591 <entry>g<subscript>10</subscript></entry>
1592 <entry>g<subscript>9</subscript></entry>
1593 <entry>g<subscript>8</subscript></entry>
1594 <entry>g<subscript>7</subscript></entry>
1595 <entry>g<subscript>6</subscript></entry>
1596 <entry>g<subscript>5</subscript></entry>
1597 <entry>g<subscript>4</subscript></entry>
1598 <entry>g<subscript>3</subscript></entry>
1599 <entry>g<subscript>2</subscript></entry>
1600 <entry>g<subscript>1</subscript></entry>
1601 <entry>g<subscript>0</subscript></entry>
1602 </row>
1603 <row id="MEDIA-BUS-FMT-SRGGB12-1X12">
1604 <entry>MEDIA_BUS_FMT_SRGGB12_1X12</entry>
1605 <entry>0x3012</entry>
1606 <entry></entry>
1607 <entry>r<subscript>11</subscript></entry>
1608 <entry>r<subscript>10</subscript></entry>
1609 <entry>r<subscript>9</subscript></entry>
1610 <entry>r<subscript>8</subscript></entry>
1611 <entry>r<subscript>7</subscript></entry>
1612 <entry>r<subscript>6</subscript></entry>
1613 <entry>r<subscript>5</subscript></entry>
1614 <entry>r<subscript>4</subscript></entry>
1615 <entry>r<subscript>3</subscript></entry>
1616 <entry>r<subscript>2</subscript></entry>
1617 <entry>r<subscript>1</subscript></entry>
1618 <entry>r<subscript>0</subscript></entry>
1619 </row>
1620 </tbody>
1621 </tgroup>
1622 </table>
1623 </section>
1624
1625 <section>
1626 <title>Packed YUV Formats</title>
1627
1628 <para>Those data formats transfer pixel data as (possibly downsampled) Y, U
1629 and V components. Some formats include dummy bits in some of their samples
1630 and are collectively referred to as "YDYC" (Y-Dummy-Y-Chroma) formats.
1631 One cannot rely on the values of these dummy bits as those are undefined.
1632 </para>
1633 <para>The format code is made of the following information.
1634 <itemizedlist>
1635 <listitem><para>The Y, U and V components order code, as transferred on the
1636 bus. Possible values are YUYV, UYVY, YVYU and VYUY for formats with no
1637 dummy bit, and YDYUYDYV, YDYVYDYU, YUYDYVYD and YVYDYUYD for YDYC formats.
1638 </para></listitem>
1639 <listitem><para>The number of bits per pixel component. All components are
1640 transferred on the same number of bits. Common values are 8, 10 and 12.</para>
1641 </listitem>
1642 <listitem><para>The number of bus samples per pixel. Pixels that are wider than
1643 the bus width must be transferred in multiple samples. Common values are
1644 1, 1.5 (encoded as 1_5) and 2.</para></listitem>
1645 <listitem><para>The bus width. When the bus width is larger than the number of
1646 bits per pixel component, several components are packed in a single bus
1647 sample. The components are ordered as specified by the order code, with
1648 components on the left of the code transferred in the high order bits.
1649 Common values are 8 and 16.</para>
1650 </listitem>
1651 </itemizedlist>
1652 </para>
1653
1654 <para>For instance, a format where pixels are encoded as 8-bit YUV values
1655 downsampled to 4:2:2 and transferred as 2 8-bit bus samples per pixel in the
1656 U, Y, V, Y order will be named <constant>MEDIA_BUS_FMT_UYVY8_2X8</constant>.
1657 </para>
1658
1659 <para><xref linkend="v4l2-mbus-pixelcode-yuv8"/> lists existing packed YUV
1660 formats and describes the organization of each pixel data in each sample.
1661 When a format pattern is split across multiple samples each of the samples
1662 in the pattern is described.</para>
1663
1664 <para>The role of each bit transferred over the bus is identified by one
1665 of the following codes.</para>
1666
1667 <itemizedlist>
1668 <listitem><para>y<subscript>x</subscript> for luma component bit number x</para></listitem>
1669 <listitem><para>u<subscript>x</subscript> for blue chroma component bit number x</para></listitem>
1670 <listitem><para>v<subscript>x</subscript> for red chroma component bit number x</para></listitem>
1671 <listitem><para>a<subscript>x</subscript> for alpha component bit number x</para></listitem>
1672 <listitem><para>- for non-available bits (for positions higher than the bus width)</para></listitem>
1673 <listitem><para>d for dummy bits</para></listitem>
1674 </itemizedlist>
1675
1676 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-yuv8">
1677 <title>YUV Formats</title>
1678 <tgroup cols="23">
1679 <colspec colname="id" align="left" />
1680 <colspec colname="code" align="center"/>
1681 <colspec colname="bit" />
1682 <colspec colnum="4" colname="b31" align="center" />
1683 <colspec colnum="5" colname="b20" align="center" />
1684 <colspec colnum="6" colname="b29" align="center" />
1685 <colspec colnum="7" colname="b28" align="center" />
1686 <colspec colnum="8" colname="b27" align="center" />
1687 <colspec colnum="9" colname="b26" align="center" />
1688 <colspec colnum="10" colname="b25" align="center" />
1689 <colspec colnum="11" colname="b24" align="center" />
1690 <colspec colnum="12" colname="b23" align="center" />
1691 <colspec colnum="13" colname="b22" align="center" />
1692 <colspec colnum="14" colname="b21" align="center" />
1693 <colspec colnum="15" colname="b20" align="center" />
1694 <colspec colnum="16" colname="b19" align="center" />
1695 <colspec colnum="17" colname="b18" align="center" />
1696 <colspec colnum="18" colname="b17" align="center" />
1697 <colspec colnum="19" colname="b16" align="center" />
1698 <colspec colnum="20" colname="b15" align="center" />
1699 <colspec colnum="21" colname="b14" align="center" />
1700 <colspec colnum="22" colname="b13" align="center" />
1701 <colspec colnum="23" colname="b12" align="center" />
1702 <colspec colnum="24" colname="b11" align="center" />
1703 <colspec colnum="25" colname="b10" align="center" />
1704 <colspec colnum="26" colname="b09" align="center" />
1705 <colspec colnum="27" colname="b08" align="center" />
1706 <colspec colnum="28" colname="b07" align="center" />
1707 <colspec colnum="29" colname="b06" align="center" />
1708 <colspec colnum="30" colname="b05" align="center" />
1709 <colspec colnum="31" colname="b04" align="center" />
1710 <colspec colnum="32" colname="b03" align="center" />
1711 <colspec colnum="33" colname="b02" align="center" />
1712 <colspec colnum="34" colname="b01" align="center" />
1713 <colspec colnum="35" colname="b00" align="center" />
1714 <spanspec namest="b31" nameend="b00" spanname="b0" />
1715 <thead>
1716 <row>
1717 <entry>Identifier</entry>
1718 <entry>Code</entry>
1719 <entry></entry>
1720 <entry spanname="b0">Data organization</entry>
1721 </row>
1722 <row>
1723 <entry></entry>
1724 <entry></entry>
1725 <entry>Bit</entry>
1726 <entry>31</entry>
1727 <entry>30</entry>
1728 <entry>29</entry>
1729 <entry>28</entry>
1730 <entry>27</entry>
1731 <entry>26</entry>
1732 <entry>25</entry>
1733 <entry>24</entry>
1734 <entry>23</entry>
1735 <entry>22</entry>
1736 <entry>21</entry>
1737 <entry>10</entry>
1738 <entry>19</entry>
1739 <entry>18</entry>
1740 <entry>17</entry>
1741 <entry>16</entry>
1742 <entry>15</entry>
1743 <entry>14</entry>
1744 <entry>13</entry>
1745 <entry>12</entry>
1746 <entry>11</entry>
1747 <entry>10</entry>
1748 <entry>9</entry>
1749 <entry>8</entry>
1750 <entry>7</entry>
1751 <entry>6</entry>
1752 <entry>5</entry>
1753 <entry>4</entry>
1754 <entry>3</entry>
1755 <entry>2</entry>
1756 <entry>1</entry>
1757 <entry>0</entry>
1758 </row>
1759 </thead>
1760 <tbody valign="top">
1761 <row id="MEDIA-BUS-FMT-Y8-1X8">
1762 <entry>MEDIA_BUS_FMT_Y8_1X8</entry>
1763 <entry>0x2001</entry>
1764 <entry></entry>
1765 &dash-ent-24;
1766 <entry>y<subscript>7</subscript></entry>
1767 <entry>y<subscript>6</subscript></entry>
1768 <entry>y<subscript>5</subscript></entry>
1769 <entry>y<subscript>4</subscript></entry>
1770 <entry>y<subscript>3</subscript></entry>
1771 <entry>y<subscript>2</subscript></entry>
1772 <entry>y<subscript>1</subscript></entry>
1773 <entry>y<subscript>0</subscript></entry>
1774 </row>
1775 <row id="MEDIA-BUS-FMT-UV8-1X8">
1776 <entry>MEDIA_BUS_FMT_UV8_1X8</entry>
1777 <entry>0x2015</entry>
1778 <entry></entry>
1779 &dash-ent-24;
1780 <entry>u<subscript>7</subscript></entry>
1781 <entry>u<subscript>6</subscript></entry>
1782 <entry>u<subscript>5</subscript></entry>
1783 <entry>u<subscript>4</subscript></entry>
1784 <entry>u<subscript>3</subscript></entry>
1785 <entry>u<subscript>2</subscript></entry>
1786 <entry>u<subscript>1</subscript></entry>
1787 <entry>u<subscript>0</subscript></entry>
1788 </row>
1789 <row>
1790 <entry></entry>
1791 <entry></entry>
1792 <entry></entry>
1793 &dash-ent-24;
1794 <entry>v<subscript>7</subscript></entry>
1795 <entry>v<subscript>6</subscript></entry>
1796 <entry>v<subscript>5</subscript></entry>
1797 <entry>v<subscript>4</subscript></entry>
1798 <entry>v<subscript>3</subscript></entry>
1799 <entry>v<subscript>2</subscript></entry>
1800 <entry>v<subscript>1</subscript></entry>
1801 <entry>v<subscript>0</subscript></entry>
1802 </row>
1803 <row id="MEDIA-BUS-FMT-UYVY8-1_5X8">
1804 <entry>MEDIA_BUS_FMT_UYVY8_1_5X8</entry>
1805 <entry>0x2002</entry>
1806 <entry></entry>
1807 &dash-ent-24;
1808 <entry>u<subscript>7</subscript></entry>
1809 <entry>u<subscript>6</subscript></entry>
1810 <entry>u<subscript>5</subscript></entry>
1811 <entry>u<subscript>4</subscript></entry>
1812 <entry>u<subscript>3</subscript></entry>
1813 <entry>u<subscript>2</subscript></entry>
1814 <entry>u<subscript>1</subscript></entry>
1815 <entry>u<subscript>0</subscript></entry>
1816 </row>
1817 <row>
1818 <entry></entry>
1819 <entry></entry>
1820 <entry></entry>
1821 &dash-ent-24;
1822 <entry>y<subscript>7</subscript></entry>
1823 <entry>y<subscript>6</subscript></entry>
1824 <entry>y<subscript>5</subscript></entry>
1825 <entry>y<subscript>4</subscript></entry>
1826 <entry>y<subscript>3</subscript></entry>
1827 <entry>y<subscript>2</subscript></entry>
1828 <entry>y<subscript>1</subscript></entry>
1829 <entry>y<subscript>0</subscript></entry>
1830 </row>
1831 <row>
1832 <entry></entry>
1833 <entry></entry>
1834 <entry></entry>
1835 &dash-ent-24;
1836 <entry>y<subscript>7</subscript></entry>
1837 <entry>y<subscript>6</subscript></entry>
1838 <entry>y<subscript>5</subscript></entry>
1839 <entry>y<subscript>4</subscript></entry>
1840 <entry>y<subscript>3</subscript></entry>
1841 <entry>y<subscript>2</subscript></entry>
1842 <entry>y<subscript>1</subscript></entry>
1843 <entry>y<subscript>0</subscript></entry>
1844 </row>
1845 <row>
1846 <entry></entry>
1847 <entry></entry>
1848 <entry></entry>
1849 &dash-ent-24;
1850 <entry>v<subscript>7</subscript></entry>
1851 <entry>v<subscript>6</subscript></entry>
1852 <entry>v<subscript>5</subscript></entry>
1853 <entry>v<subscript>4</subscript></entry>
1854 <entry>v<subscript>3</subscript></entry>
1855 <entry>v<subscript>2</subscript></entry>
1856 <entry>v<subscript>1</subscript></entry>
1857 <entry>v<subscript>0</subscript></entry>
1858 </row>
1859 <row>
1860 <entry></entry>
1861 <entry></entry>
1862 <entry></entry>
1863 &dash-ent-24;
1864 <entry>y<subscript>7</subscript></entry>
1865 <entry>y<subscript>6</subscript></entry>
1866 <entry>y<subscript>5</subscript></entry>
1867 <entry>y<subscript>4</subscript></entry>
1868 <entry>y<subscript>3</subscript></entry>
1869 <entry>y<subscript>2</subscript></entry>
1870 <entry>y<subscript>1</subscript></entry>
1871 <entry>y<subscript>0</subscript></entry>
1872 </row>
1873 <row>
1874 <entry></entry>
1875 <entry></entry>
1876 <entry></entry>
1877 &dash-ent-24;
1878 <entry>y<subscript>7</subscript></entry>
1879 <entry>y<subscript>6</subscript></entry>
1880 <entry>y<subscript>5</subscript></entry>
1881 <entry>y<subscript>4</subscript></entry>
1882 <entry>y<subscript>3</subscript></entry>
1883 <entry>y<subscript>2</subscript></entry>
1884 <entry>y<subscript>1</subscript></entry>
1885 <entry>y<subscript>0</subscript></entry>
1886 </row>
1887 <row id="MEDIA-BUS-FMT-VYUY8-1_5X8">
1888 <entry>MEDIA_BUS_FMT_VYUY8_1_5X8</entry>
1889 <entry>0x2003</entry>
1890 <entry></entry>
1891 &dash-ent-24;
1892 <entry>v<subscript>7</subscript></entry>
1893 <entry>v<subscript>6</subscript></entry>
1894 <entry>v<subscript>5</subscript></entry>
1895 <entry>v<subscript>4</subscript></entry>
1896 <entry>v<subscript>3</subscript></entry>
1897 <entry>v<subscript>2</subscript></entry>
1898 <entry>v<subscript>1</subscript></entry>
1899 <entry>v<subscript>0</subscript></entry>
1900 </row>
1901 <row>
1902 <entry></entry>
1903 <entry></entry>
1904 <entry></entry>
1905 &dash-ent-24;
1906 <entry>y<subscript>7</subscript></entry>
1907 <entry>y<subscript>6</subscript></entry>
1908 <entry>y<subscript>5</subscript></entry>
1909 <entry>y<subscript>4</subscript></entry>
1910 <entry>y<subscript>3</subscript></entry>
1911 <entry>y<subscript>2</subscript></entry>
1912 <entry>y<subscript>1</subscript></entry>
1913 <entry>y<subscript>0</subscript></entry>
1914 </row>
1915 <row>
1916 <entry></entry>
1917 <entry></entry>
1918 <entry></entry>
1919 &dash-ent-24;
1920 <entry>y<subscript>7</subscript></entry>
1921 <entry>y<subscript>6</subscript></entry>
1922 <entry>y<subscript>5</subscript></entry>
1923 <entry>y<subscript>4</subscript></entry>
1924 <entry>y<subscript>3</subscript></entry>
1925 <entry>y<subscript>2</subscript></entry>
1926 <entry>y<subscript>1</subscript></entry>
1927 <entry>y<subscript>0</subscript></entry>
1928 </row>
1929 <row>
1930 <entry></entry>
1931 <entry></entry>
1932 <entry></entry>
1933 &dash-ent-24;
1934 <entry>u<subscript>7</subscript></entry>
1935 <entry>u<subscript>6</subscript></entry>
1936 <entry>u<subscript>5</subscript></entry>
1937 <entry>u<subscript>4</subscript></entry>
1938 <entry>u<subscript>3</subscript></entry>
1939 <entry>u<subscript>2</subscript></entry>
1940 <entry>u<subscript>1</subscript></entry>
1941 <entry>u<subscript>0</subscript></entry>
1942 </row>
1943 <row>
1944 <entry></entry>
1945 <entry></entry>
1946 <entry></entry>
1947 &dash-ent-24;
1948 <entry>y<subscript>7</subscript></entry>
1949 <entry>y<subscript>6</subscript></entry>
1950 <entry>y<subscript>5</subscript></entry>
1951 <entry>y<subscript>4</subscript></entry>
1952 <entry>y<subscript>3</subscript></entry>
1953 <entry>y<subscript>2</subscript></entry>
1954 <entry>y<subscript>1</subscript></entry>
1955 <entry>y<subscript>0</subscript></entry>
1956 </row>
1957 <row>
1958 <entry></entry>
1959 <entry></entry>
1960 <entry></entry>
1961 &dash-ent-24;
1962 <entry>y<subscript>7</subscript></entry>
1963 <entry>y<subscript>6</subscript></entry>
1964 <entry>y<subscript>5</subscript></entry>
1965 <entry>y<subscript>4</subscript></entry>
1966 <entry>y<subscript>3</subscript></entry>
1967 <entry>y<subscript>2</subscript></entry>
1968 <entry>y<subscript>1</subscript></entry>
1969 <entry>y<subscript>0</subscript></entry>
1970 </row>
1971 <row id="MEDIA-BUS-FMT-YUYV8-1_5X8">
1972 <entry>MEDIA_BUS_FMT_YUYV8_1_5X8</entry>
1973 <entry>0x2004</entry>
1974 <entry></entry>
1975 &dash-ent-24;
1976 <entry>y<subscript>7</subscript></entry>
1977 <entry>y<subscript>6</subscript></entry>
1978 <entry>y<subscript>5</subscript></entry>
1979 <entry>y<subscript>4</subscript></entry>
1980 <entry>y<subscript>3</subscript></entry>
1981 <entry>y<subscript>2</subscript></entry>
1982 <entry>y<subscript>1</subscript></entry>
1983 <entry>y<subscript>0</subscript></entry>
1984 </row>
1985 <row>
1986 <entry></entry>
1987 <entry></entry>
1988 <entry></entry>
1989 &dash-ent-24;
1990 <entry>y<subscript>7</subscript></entry>
1991 <entry>y<subscript>6</subscript></entry>
1992 <entry>y<subscript>5</subscript></entry>
1993 <entry>y<subscript>4</subscript></entry>
1994 <entry>y<subscript>3</subscript></entry>
1995 <entry>y<subscript>2</subscript></entry>
1996 <entry>y<subscript>1</subscript></entry>
1997 <entry>y<subscript>0</subscript></entry>
1998 </row>
1999 <row>
2000 <entry></entry>
2001 <entry></entry>
2002 <entry></entry>
2003 &dash-ent-24;
2004 <entry>u<subscript>7</subscript></entry>
2005 <entry>u<subscript>6</subscript></entry>
2006 <entry>u<subscript>5</subscript></entry>
2007 <entry>u<subscript>4</subscript></entry>
2008 <entry>u<subscript>3</subscript></entry>
2009 <entry>u<subscript>2</subscript></entry>
2010 <entry>u<subscript>1</subscript></entry>
2011 <entry>u<subscript>0</subscript></entry>
2012 </row>
2013 <row>
2014 <entry></entry>
2015 <entry></entry>
2016 <entry></entry>
2017 &dash-ent-24;
2018 <entry>y<subscript>7</subscript></entry>
2019 <entry>y<subscript>6</subscript></entry>
2020 <entry>y<subscript>5</subscript></entry>
2021 <entry>y<subscript>4</subscript></entry>
2022 <entry>y<subscript>3</subscript></entry>
2023 <entry>y<subscript>2</subscript></entry>
2024 <entry>y<subscript>1</subscript></entry>
2025 <entry>y<subscript>0</subscript></entry>
2026 </row>
2027 <row>
2028 <entry></entry>
2029 <entry></entry>
2030 <entry></entry>
2031 &dash-ent-24;
2032 <entry>y<subscript>7</subscript></entry>
2033 <entry>y<subscript>6</subscript></entry>
2034 <entry>y<subscript>5</subscript></entry>
2035 <entry>y<subscript>4</subscript></entry>
2036 <entry>y<subscript>3</subscript></entry>
2037 <entry>y<subscript>2</subscript></entry>
2038 <entry>y<subscript>1</subscript></entry>
2039 <entry>y<subscript>0</subscript></entry>
2040 </row>
2041 <row>
2042 <entry></entry>
2043 <entry></entry>
2044 <entry></entry>
2045 &dash-ent-24;
2046 <entry>v<subscript>7</subscript></entry>
2047 <entry>v<subscript>6</subscript></entry>
2048 <entry>v<subscript>5</subscript></entry>
2049 <entry>v<subscript>4</subscript></entry>
2050 <entry>v<subscript>3</subscript></entry>
2051 <entry>v<subscript>2</subscript></entry>
2052 <entry>v<subscript>1</subscript></entry>
2053 <entry>v<subscript>0</subscript></entry>
2054 </row>
2055 <row id="MEDIA-BUS-FMT-YVYU8-1_5X8">
2056 <entry>MEDIA_BUS_FMT_YVYU8_1_5X8</entry>
2057 <entry>0x2005</entry>
2058 <entry></entry>
2059 &dash-ent-24;
2060 <entry>y<subscript>7</subscript></entry>
2061 <entry>y<subscript>6</subscript></entry>
2062 <entry>y<subscript>5</subscript></entry>
2063 <entry>y<subscript>4</subscript></entry>
2064 <entry>y<subscript>3</subscript></entry>
2065 <entry>y<subscript>2</subscript></entry>
2066 <entry>y<subscript>1</subscript></entry>
2067 <entry>y<subscript>0</subscript></entry>
2068 </row>
2069 <row>
2070 <entry></entry>
2071 <entry></entry>
2072 <entry></entry>
2073 &dash-ent-24;
2074 <entry>y<subscript>7</subscript></entry>
2075 <entry>y<subscript>6</subscript></entry>
2076 <entry>y<subscript>5</subscript></entry>
2077 <entry>y<subscript>4</subscript></entry>
2078 <entry>y<subscript>3</subscript></entry>
2079 <entry>y<subscript>2</subscript></entry>
2080 <entry>y<subscript>1</subscript></entry>
2081 <entry>y<subscript>0</subscript></entry>
2082 </row>
2083 <row>
2084 <entry></entry>
2085 <entry></entry>
2086 <entry></entry>
2087 &dash-ent-24;
2088 <entry>v<subscript>7</subscript></entry>
2089 <entry>v<subscript>6</subscript></entry>
2090 <entry>v<subscript>5</subscript></entry>
2091 <entry>v<subscript>4</subscript></entry>
2092 <entry>v<subscript>3</subscript></entry>
2093 <entry>v<subscript>2</subscript></entry>
2094 <entry>v<subscript>1</subscript></entry>
2095 <entry>v<subscript>0</subscript></entry>
2096 </row>
2097 <row>
2098 <entry></entry>
2099 <entry></entry>
2100 <entry></entry>
2101 &dash-ent-24;
2102 <entry>y<subscript>7</subscript></entry>
2103 <entry>y<subscript>6</subscript></entry>
2104 <entry>y<subscript>5</subscript></entry>
2105 <entry>y<subscript>4</subscript></entry>
2106 <entry>y<subscript>3</subscript></entry>
2107 <entry>y<subscript>2</subscript></entry>
2108 <entry>y<subscript>1</subscript></entry>
2109 <entry>y<subscript>0</subscript></entry>
2110 </row>
2111 <row>
2112 <entry></entry>
2113 <entry></entry>
2114 <entry></entry>
2115 &dash-ent-24;
2116 <entry>y<subscript>7</subscript></entry>
2117 <entry>y<subscript>6</subscript></entry>
2118 <entry>y<subscript>5</subscript></entry>
2119 <entry>y<subscript>4</subscript></entry>
2120 <entry>y<subscript>3</subscript></entry>
2121 <entry>y<subscript>2</subscript></entry>
2122 <entry>y<subscript>1</subscript></entry>
2123 <entry>y<subscript>0</subscript></entry>
2124 </row>
2125 <row>
2126 <entry></entry>
2127 <entry></entry>
2128 <entry></entry>
2129 &dash-ent-24;
2130 <entry>u<subscript>7</subscript></entry>
2131 <entry>u<subscript>6</subscript></entry>
2132 <entry>u<subscript>5</subscript></entry>
2133 <entry>u<subscript>4</subscript></entry>
2134 <entry>u<subscript>3</subscript></entry>
2135 <entry>u<subscript>2</subscript></entry>
2136 <entry>u<subscript>1</subscript></entry>
2137 <entry>u<subscript>0</subscript></entry>
2138 </row>
2139 <row id="MEDIA-BUS-FMT-UYVY8-2X8">
2140 <entry>MEDIA_BUS_FMT_UYVY8_2X8</entry>
2141 <entry>0x2006</entry>
2142 <entry></entry>
2143 &dash-ent-24;
2144 <entry>u<subscript>7</subscript></entry>
2145 <entry>u<subscript>6</subscript></entry>
2146 <entry>u<subscript>5</subscript></entry>
2147 <entry>u<subscript>4</subscript></entry>
2148 <entry>u<subscript>3</subscript></entry>
2149 <entry>u<subscript>2</subscript></entry>
2150 <entry>u<subscript>1</subscript></entry>
2151 <entry>u<subscript>0</subscript></entry>
2152 </row>
2153 <row>
2154 <entry></entry>
2155 <entry></entry>
2156 <entry></entry>
2157 &dash-ent-24;
2158 <entry>y<subscript>7</subscript></entry>
2159 <entry>y<subscript>6</subscript></entry>
2160 <entry>y<subscript>5</subscript></entry>
2161 <entry>y<subscript>4</subscript></entry>
2162 <entry>y<subscript>3</subscript></entry>
2163 <entry>y<subscript>2</subscript></entry>
2164 <entry>y<subscript>1</subscript></entry>
2165 <entry>y<subscript>0</subscript></entry>
2166 </row>
2167 <row>
2168 <entry></entry>
2169 <entry></entry>
2170 <entry></entry>
2171 &dash-ent-24;
2172 <entry>v<subscript>7</subscript></entry>
2173 <entry>v<subscript>6</subscript></entry>
2174 <entry>v<subscript>5</subscript></entry>
2175 <entry>v<subscript>4</subscript></entry>
2176 <entry>v<subscript>3</subscript></entry>
2177 <entry>v<subscript>2</subscript></entry>
2178 <entry>v<subscript>1</subscript></entry>
2179 <entry>v<subscript>0</subscript></entry>
2180 </row>
2181 <row>
2182 <entry></entry>
2183 <entry></entry>
2184 <entry></entry>
2185 &dash-ent-24;
2186 <entry>y<subscript>7</subscript></entry>
2187 <entry>y<subscript>6</subscript></entry>
2188 <entry>y<subscript>5</subscript></entry>
2189 <entry>y<subscript>4</subscript></entry>
2190 <entry>y<subscript>3</subscript></entry>
2191 <entry>y<subscript>2</subscript></entry>
2192 <entry>y<subscript>1</subscript></entry>
2193 <entry>y<subscript>0</subscript></entry>
2194 </row>
2195 <row id="MEDIA-BUS-FMT-VYUY8-2X8">
2196 <entry>MEDIA_BUS_FMT_VYUY8_2X8</entry>
2197 <entry>0x2007</entry>
2198 <entry></entry>
2199 &dash-ent-24;
2200 <entry>v<subscript>7</subscript></entry>
2201 <entry>v<subscript>6</subscript></entry>
2202 <entry>v<subscript>5</subscript></entry>
2203 <entry>v<subscript>4</subscript></entry>
2204 <entry>v<subscript>3</subscript></entry>
2205 <entry>v<subscript>2</subscript></entry>
2206 <entry>v<subscript>1</subscript></entry>
2207 <entry>v<subscript>0</subscript></entry>
2208 </row>
2209 <row>
2210 <entry></entry>
2211 <entry></entry>
2212 <entry></entry>
2213 &dash-ent-24;
2214 <entry>y<subscript>7</subscript></entry>
2215 <entry>y<subscript>6</subscript></entry>
2216 <entry>y<subscript>5</subscript></entry>
2217 <entry>y<subscript>4</subscript></entry>
2218 <entry>y<subscript>3</subscript></entry>
2219 <entry>y<subscript>2</subscript></entry>
2220 <entry>y<subscript>1</subscript></entry>
2221 <entry>y<subscript>0</subscript></entry>
2222 </row>
2223 <row>
2224 <entry></entry>
2225 <entry></entry>
2226 <entry></entry>
2227 &dash-ent-24;
2228 <entry>u<subscript>7</subscript></entry>
2229 <entry>u<subscript>6</subscript></entry>
2230 <entry>u<subscript>5</subscript></entry>
2231 <entry>u<subscript>4</subscript></entry>
2232 <entry>u<subscript>3</subscript></entry>
2233 <entry>u<subscript>2</subscript></entry>
2234 <entry>u<subscript>1</subscript></entry>
2235 <entry>u<subscript>0</subscript></entry>
2236 </row>
2237 <row>
2238 <entry></entry>
2239 <entry></entry>
2240 <entry></entry>
2241 &dash-ent-24;
2242 <entry>y<subscript>7</subscript></entry>
2243 <entry>y<subscript>6</subscript></entry>
2244 <entry>y<subscript>5</subscript></entry>
2245 <entry>y<subscript>4</subscript></entry>
2246 <entry>y<subscript>3</subscript></entry>
2247 <entry>y<subscript>2</subscript></entry>
2248 <entry>y<subscript>1</subscript></entry>
2249 <entry>y<subscript>0</subscript></entry>
2250 </row>
2251 <row id="MEDIA-BUS-FMT-YUYV8-2X8">
2252 <entry>MEDIA_BUS_FMT_YUYV8_2X8</entry>
2253 <entry>0x2008</entry>
2254 <entry></entry>
2255 &dash-ent-24;
2256 <entry>y<subscript>7</subscript></entry>
2257 <entry>y<subscript>6</subscript></entry>
2258 <entry>y<subscript>5</subscript></entry>
2259 <entry>y<subscript>4</subscript></entry>
2260 <entry>y<subscript>3</subscript></entry>
2261 <entry>y<subscript>2</subscript></entry>
2262 <entry>y<subscript>1</subscript></entry>
2263 <entry>y<subscript>0</subscript></entry>
2264 </row>
2265 <row>
2266 <entry></entry>
2267 <entry></entry>
2268 <entry></entry>
2269 &dash-ent-24;
2270 <entry>u<subscript>7</subscript></entry>
2271 <entry>u<subscript>6</subscript></entry>
2272 <entry>u<subscript>5</subscript></entry>
2273 <entry>u<subscript>4</subscript></entry>
2274 <entry>u<subscript>3</subscript></entry>
2275 <entry>u<subscript>2</subscript></entry>
2276 <entry>u<subscript>1</subscript></entry>
2277 <entry>u<subscript>0</subscript></entry>
2278 </row>
2279 <row>
2280 <entry></entry>
2281 <entry></entry>
2282 <entry></entry>
2283 &dash-ent-24;
2284 <entry>y<subscript>7</subscript></entry>
2285 <entry>y<subscript>6</subscript></entry>
2286 <entry>y<subscript>5</subscript></entry>
2287 <entry>y<subscript>4</subscript></entry>
2288 <entry>y<subscript>3</subscript></entry>
2289 <entry>y<subscript>2</subscript></entry>
2290 <entry>y<subscript>1</subscript></entry>
2291 <entry>y<subscript>0</subscript></entry>
2292 </row>
2293 <row>
2294 <entry></entry>
2295 <entry></entry>
2296 <entry></entry>
2297 &dash-ent-24;
2298 <entry>v<subscript>7</subscript></entry>
2299 <entry>v<subscript>6</subscript></entry>
2300 <entry>v<subscript>5</subscript></entry>
2301 <entry>v<subscript>4</subscript></entry>
2302 <entry>v<subscript>3</subscript></entry>
2303 <entry>v<subscript>2</subscript></entry>
2304 <entry>v<subscript>1</subscript></entry>
2305 <entry>v<subscript>0</subscript></entry>
2306 </row>
2307 <row id="MEDIA-BUS-FMT-YVYU8-2X8">
2308 <entry>MEDIA_BUS_FMT_YVYU8_2X8</entry>
2309 <entry>0x2009</entry>
2310 <entry></entry>
2311 &dash-ent-24;
2312 <entry>y<subscript>7</subscript></entry>
2313 <entry>y<subscript>6</subscript></entry>
2314 <entry>y<subscript>5</subscript></entry>
2315 <entry>y<subscript>4</subscript></entry>
2316 <entry>y<subscript>3</subscript></entry>
2317 <entry>y<subscript>2</subscript></entry>
2318 <entry>y<subscript>1</subscript></entry>
2319 <entry>y<subscript>0</subscript></entry>
2320 </row>
2321 <row>
2322 <entry></entry>
2323 <entry></entry>
2324 <entry></entry>
2325 &dash-ent-24;
2326 <entry>v<subscript>7</subscript></entry>
2327 <entry>v<subscript>6</subscript></entry>
2328 <entry>v<subscript>5</subscript></entry>
2329 <entry>v<subscript>4</subscript></entry>
2330 <entry>v<subscript>3</subscript></entry>
2331 <entry>v<subscript>2</subscript></entry>
2332 <entry>v<subscript>1</subscript></entry>
2333 <entry>v<subscript>0</subscript></entry>
2334 </row>
2335 <row>
2336 <entry></entry>
2337 <entry></entry>
2338 <entry></entry>
2339 &dash-ent-24;
2340 <entry>y<subscript>7</subscript></entry>
2341 <entry>y<subscript>6</subscript></entry>
2342 <entry>y<subscript>5</subscript></entry>
2343 <entry>y<subscript>4</subscript></entry>
2344 <entry>y<subscript>3</subscript></entry>
2345 <entry>y<subscript>2</subscript></entry>
2346 <entry>y<subscript>1</subscript></entry>
2347 <entry>y<subscript>0</subscript></entry>
2348 </row>
2349 <row>
2350 <entry></entry>
2351 <entry></entry>
2352 <entry></entry>
2353 &dash-ent-24;
2354 <entry>u<subscript>7</subscript></entry>
2355 <entry>u<subscript>6</subscript></entry>
2356 <entry>u<subscript>5</subscript></entry>
2357 <entry>u<subscript>4</subscript></entry>
2358 <entry>u<subscript>3</subscript></entry>
2359 <entry>u<subscript>2</subscript></entry>
2360 <entry>u<subscript>1</subscript></entry>
2361 <entry>u<subscript>0</subscript></entry>
2362 </row>
2363 <row id="MEDIA-BUS-FMT-Y10-1X10">
2364 <entry>MEDIA_BUS_FMT_Y10_1X10</entry>
2365 <entry>0x200a</entry>
2366 <entry></entry>
2367 &dash-ent-22;
2368 <entry>y<subscript>9</subscript></entry>
2369 <entry>y<subscript>8</subscript></entry>
2370 <entry>y<subscript>7</subscript></entry>
2371 <entry>y<subscript>6</subscript></entry>
2372 <entry>y<subscript>5</subscript></entry>
2373 <entry>y<subscript>4</subscript></entry>
2374 <entry>y<subscript>3</subscript></entry>
2375 <entry>y<subscript>2</subscript></entry>
2376 <entry>y<subscript>1</subscript></entry>
2377 <entry>y<subscript>0</subscript></entry>
2378 </row>
2379 <row id="MEDIA-BUS-FMT-UYVY10-2X10">
2380 <entry>MEDIA_BUS_FMT_UYVY10_2X10</entry>
2381 <entry>0x2018</entry>
2382 <entry></entry>
2383 &dash-ent-22;
2384 <entry>u<subscript>9</subscript></entry>
2385 <entry>u<subscript>8</subscript></entry>
2386 <entry>u<subscript>7</subscript></entry>
2387 <entry>u<subscript>6</subscript></entry>
2388 <entry>u<subscript>5</subscript></entry>
2389 <entry>u<subscript>4</subscript></entry>
2390 <entry>u<subscript>3</subscript></entry>
2391 <entry>u<subscript>2</subscript></entry>
2392 <entry>u<subscript>1</subscript></entry>
2393 <entry>u<subscript>0</subscript></entry>
2394 </row>
2395 <row>
2396 <entry></entry>
2397 <entry></entry>
2398 <entry></entry>
2399 &dash-ent-22;
2400 <entry>y<subscript>9</subscript></entry>
2401 <entry>y<subscript>8</subscript></entry>
2402 <entry>y<subscript>7</subscript></entry>
2403 <entry>y<subscript>6</subscript></entry>
2404 <entry>y<subscript>5</subscript></entry>
2405 <entry>y<subscript>4</subscript></entry>
2406 <entry>y<subscript>3</subscript></entry>
2407 <entry>y<subscript>2</subscript></entry>
2408 <entry>y<subscript>1</subscript></entry>
2409 <entry>y<subscript>0</subscript></entry>
2410 </row>
2411 <row>
2412 <entry></entry>
2413 <entry></entry>
2414 <entry></entry>
2415 &dash-ent-22;
2416 <entry>v<subscript>9</subscript></entry>
2417 <entry>v<subscript>8</subscript></entry>
2418 <entry>v<subscript>7</subscript></entry>
2419 <entry>v<subscript>6</subscript></entry>
2420 <entry>v<subscript>5</subscript></entry>
2421 <entry>v<subscript>4</subscript></entry>
2422 <entry>v<subscript>3</subscript></entry>
2423 <entry>v<subscript>2</subscript></entry>
2424 <entry>v<subscript>1</subscript></entry>
2425 <entry>v<subscript>0</subscript></entry>
2426 </row>
2427 <row>
2428 <entry></entry>
2429 <entry></entry>
2430 <entry></entry>
2431 &dash-ent-22;
2432 <entry>y<subscript>9</subscript></entry>
2433 <entry>y<subscript>8</subscript></entry>
2434 <entry>y<subscript>7</subscript></entry>
2435 <entry>y<subscript>6</subscript></entry>
2436 <entry>y<subscript>5</subscript></entry>
2437 <entry>y<subscript>4</subscript></entry>
2438 <entry>y<subscript>3</subscript></entry>
2439 <entry>y<subscript>2</subscript></entry>
2440 <entry>y<subscript>1</subscript></entry>
2441 <entry>y<subscript>0</subscript></entry>
2442 </row>
2443 <row id="MEDIA-BUS-FMT-VYUY10-2X10">
2444 <entry>MEDIA_BUS_FMT_VYUY10_2X10</entry>
2445 <entry>0x2019</entry>
2446 <entry></entry>
2447 &dash-ent-22;
2448 <entry>v<subscript>9</subscript></entry>
2449 <entry>v<subscript>8</subscript></entry>
2450 <entry>v<subscript>7</subscript></entry>
2451 <entry>v<subscript>6</subscript></entry>
2452 <entry>v<subscript>5</subscript></entry>
2453 <entry>v<subscript>4</subscript></entry>
2454 <entry>v<subscript>3</subscript></entry>
2455 <entry>v<subscript>2</subscript></entry>
2456 <entry>v<subscript>1</subscript></entry>
2457 <entry>v<subscript>0</subscript></entry>
2458 </row>
2459 <row>
2460 <entry></entry>
2461 <entry></entry>
2462 <entry></entry>
2463 &dash-ent-22;
2464 <entry>y<subscript>9</subscript></entry>
2465 <entry>y<subscript>8</subscript></entry>
2466 <entry>y<subscript>7</subscript></entry>
2467 <entry>y<subscript>6</subscript></entry>
2468 <entry>y<subscript>5</subscript></entry>
2469 <entry>y<subscript>4</subscript></entry>
2470 <entry>y<subscript>3</subscript></entry>
2471 <entry>y<subscript>2</subscript></entry>
2472 <entry>y<subscript>1</subscript></entry>
2473 <entry>y<subscript>0</subscript></entry>
2474 </row>
2475 <row>
2476 <entry></entry>
2477 <entry></entry>
2478 <entry></entry>
2479 &dash-ent-22;
2480 <entry>u<subscript>9</subscript></entry>
2481 <entry>u<subscript>8</subscript></entry>
2482 <entry>u<subscript>7</subscript></entry>
2483 <entry>u<subscript>6</subscript></entry>
2484 <entry>u<subscript>5</subscript></entry>
2485 <entry>u<subscript>4</subscript></entry>
2486 <entry>u<subscript>3</subscript></entry>
2487 <entry>u<subscript>2</subscript></entry>
2488 <entry>u<subscript>1</subscript></entry>
2489 <entry>u<subscript>0</subscript></entry>
2490 </row>
2491 <row>
2492 <entry></entry>
2493 <entry></entry>
2494 <entry></entry>
2495 &dash-ent-22;
2496 <entry>y<subscript>9</subscript></entry>
2497 <entry>y<subscript>8</subscript></entry>
2498 <entry>y<subscript>7</subscript></entry>
2499 <entry>y<subscript>6</subscript></entry>
2500 <entry>y<subscript>5</subscript></entry>
2501 <entry>y<subscript>4</subscript></entry>
2502 <entry>y<subscript>3</subscript></entry>
2503 <entry>y<subscript>2</subscript></entry>
2504 <entry>y<subscript>1</subscript></entry>
2505 <entry>y<subscript>0</subscript></entry>
2506 </row>
2507 <row id="MEDIA-BUS-FMT-YUYV10-2X10">
2508 <entry>MEDIA_BUS_FMT_YUYV10_2X10</entry>
2509 <entry>0x200b</entry>
2510 <entry></entry>
2511 &dash-ent-22;
2512 <entry>y<subscript>9</subscript></entry>
2513 <entry>y<subscript>8</subscript></entry>
2514 <entry>y<subscript>7</subscript></entry>
2515 <entry>y<subscript>6</subscript></entry>
2516 <entry>y<subscript>5</subscript></entry>
2517 <entry>y<subscript>4</subscript></entry>
2518 <entry>y<subscript>3</subscript></entry>
2519 <entry>y<subscript>2</subscript></entry>
2520 <entry>y<subscript>1</subscript></entry>
2521 <entry>y<subscript>0</subscript></entry>
2522 </row>
2523 <row>
2524 <entry></entry>
2525 <entry></entry>
2526 <entry></entry>
2527 &dash-ent-22;
2528 <entry>u<subscript>9</subscript></entry>
2529 <entry>u<subscript>8</subscript></entry>
2530 <entry>u<subscript>7</subscript></entry>
2531 <entry>u<subscript>6</subscript></entry>
2532 <entry>u<subscript>5</subscript></entry>
2533 <entry>u<subscript>4</subscript></entry>
2534 <entry>u<subscript>3</subscript></entry>
2535 <entry>u<subscript>2</subscript></entry>
2536 <entry>u<subscript>1</subscript></entry>
2537 <entry>u<subscript>0</subscript></entry>
2538 </row>
2539 <row>
2540 <entry></entry>
2541 <entry></entry>
2542 <entry></entry>
2543 &dash-ent-22;
2544 <entry>y<subscript>9</subscript></entry>
2545 <entry>y<subscript>8</subscript></entry>
2546 <entry>y<subscript>7</subscript></entry>
2547 <entry>y<subscript>6</subscript></entry>
2548 <entry>y<subscript>5</subscript></entry>
2549 <entry>y<subscript>4</subscript></entry>
2550 <entry>y<subscript>3</subscript></entry>
2551 <entry>y<subscript>2</subscript></entry>
2552 <entry>y<subscript>1</subscript></entry>
2553 <entry>y<subscript>0</subscript></entry>
2554 </row>
2555 <row>
2556 <entry></entry>
2557 <entry></entry>
2558 <entry></entry>
2559 &dash-ent-22;
2560 <entry>v<subscript>9</subscript></entry>
2561 <entry>v<subscript>8</subscript></entry>
2562 <entry>v<subscript>7</subscript></entry>
2563 <entry>v<subscript>6</subscript></entry>
2564 <entry>v<subscript>5</subscript></entry>
2565 <entry>v<subscript>4</subscript></entry>
2566 <entry>v<subscript>3</subscript></entry>
2567 <entry>v<subscript>2</subscript></entry>
2568 <entry>v<subscript>1</subscript></entry>
2569 <entry>v<subscript>0</subscript></entry>
2570 </row>
2571 <row id="MEDIA-BUS-FMT-YVYU10-2X10">
2572 <entry>MEDIA_BUS_FMT_YVYU10_2X10</entry>
2573 <entry>0x200c</entry>
2574 <entry></entry>
2575 &dash-ent-22;
2576 <entry>y<subscript>9</subscript></entry>
2577 <entry>y<subscript>8</subscript></entry>
2578 <entry>y<subscript>7</subscript></entry>
2579 <entry>y<subscript>6</subscript></entry>
2580 <entry>y<subscript>5</subscript></entry>
2581 <entry>y<subscript>4</subscript></entry>
2582 <entry>y<subscript>3</subscript></entry>
2583 <entry>y<subscript>2</subscript></entry>
2584 <entry>y<subscript>1</subscript></entry>
2585 <entry>y<subscript>0</subscript></entry>
2586 </row>
2587 <row>
2588 <entry></entry>
2589 <entry></entry>
2590 <entry></entry>
2591 &dash-ent-22;
2592 <entry>v<subscript>9</subscript></entry>
2593 <entry>v<subscript>8</subscript></entry>
2594 <entry>v<subscript>7</subscript></entry>
2595 <entry>v<subscript>6</subscript></entry>
2596 <entry>v<subscript>5</subscript></entry>
2597 <entry>v<subscript>4</subscript></entry>
2598 <entry>v<subscript>3</subscript></entry>
2599 <entry>v<subscript>2</subscript></entry>
2600 <entry>v<subscript>1</subscript></entry>
2601 <entry>v<subscript>0</subscript></entry>
2602 </row>
2603 <row>
2604 <entry></entry>
2605 <entry></entry>
2606 <entry></entry>
2607 &dash-ent-22;
2608 <entry>y<subscript>9</subscript></entry>
2609 <entry>y<subscript>8</subscript></entry>
2610 <entry>y<subscript>7</subscript></entry>
2611 <entry>y<subscript>6</subscript></entry>
2612 <entry>y<subscript>5</subscript></entry>
2613 <entry>y<subscript>4</subscript></entry>
2614 <entry>y<subscript>3</subscript></entry>
2615 <entry>y<subscript>2</subscript></entry>
2616 <entry>y<subscript>1</subscript></entry>
2617 <entry>y<subscript>0</subscript></entry>
2618 </row>
2619 <row>
2620 <entry></entry>
2621 <entry></entry>
2622 <entry></entry>
2623 &dash-ent-22;
2624 <entry>u<subscript>9</subscript></entry>
2625 <entry>u<subscript>8</subscript></entry>
2626 <entry>u<subscript>7</subscript></entry>
2627 <entry>u<subscript>6</subscript></entry>
2628 <entry>u<subscript>5</subscript></entry>
2629 <entry>u<subscript>4</subscript></entry>
2630 <entry>u<subscript>3</subscript></entry>
2631 <entry>u<subscript>2</subscript></entry>
2632 <entry>u<subscript>1</subscript></entry>
2633 <entry>u<subscript>0</subscript></entry>
2634 </row>
2635 <row id="MEDIA-BUS-FMT-Y12-1X12">
2636 <entry>MEDIA_BUS_FMT_Y12_1X12</entry>
2637 <entry>0x2013</entry>
2638 <entry></entry>
2639 &dash-ent-20;
2640 <entry>y<subscript>11</subscript></entry>
2641 <entry>y<subscript>10</subscript></entry>
2642 <entry>y<subscript>9</subscript></entry>
2643 <entry>y<subscript>8</subscript></entry>
2644 <entry>y<subscript>7</subscript></entry>
2645 <entry>y<subscript>6</subscript></entry>
2646 <entry>y<subscript>5</subscript></entry>
2647 <entry>y<subscript>4</subscript></entry>
2648 <entry>y<subscript>3</subscript></entry>
2649 <entry>y<subscript>2</subscript></entry>
2650 <entry>y<subscript>1</subscript></entry>
2651 <entry>y<subscript>0</subscript></entry>
2652 </row>
2653 <row id="MEDIA-BUS-FMT-UYVY12-2X12">
2654 <entry>MEDIA_BUS_FMT_UYVY12_2X12</entry>
2655 <entry>0x201c</entry>
2656 <entry></entry>
2657 &dash-ent-20;
2658 <entry>u<subscript>11</subscript></entry>
2659 <entry>u<subscript>10</subscript></entry>
2660 <entry>u<subscript>9</subscript></entry>
2661 <entry>u<subscript>8</subscript></entry>
2662 <entry>u<subscript>7</subscript></entry>
2663 <entry>u<subscript>6</subscript></entry>
2664 <entry>u<subscript>5</subscript></entry>
2665 <entry>u<subscript>4</subscript></entry>
2666 <entry>u<subscript>3</subscript></entry>
2667 <entry>u<subscript>2</subscript></entry>
2668 <entry>u<subscript>1</subscript></entry>
2669 <entry>u<subscript>0</subscript></entry>
2670 </row>
2671 <row>
2672 <entry></entry>
2673 <entry></entry>
2674 <entry></entry>
2675 &dash-ent-20;
2676 <entry>y<subscript>11</subscript></entry>
2677 <entry>y<subscript>10</subscript></entry>
2678 <entry>y<subscript>9</subscript></entry>
2679 <entry>y<subscript>8</subscript></entry>
2680 <entry>y<subscript>7</subscript></entry>
2681 <entry>y<subscript>6</subscript></entry>
2682 <entry>y<subscript>5</subscript></entry>
2683 <entry>y<subscript>4</subscript></entry>
2684 <entry>y<subscript>3</subscript></entry>
2685 <entry>y<subscript>2</subscript></entry>
2686 <entry>y<subscript>1</subscript></entry>
2687 <entry>y<subscript>0</subscript></entry>
2688 </row>
2689 <row>
2690 <entry></entry>
2691 <entry></entry>
2692 <entry></entry>
2693 &dash-ent-20;
2694 <entry>v<subscript>11</subscript></entry>
2695 <entry>v<subscript>10</subscript></entry>
2696 <entry>v<subscript>9</subscript></entry>
2697 <entry>v<subscript>8</subscript></entry>
2698 <entry>v<subscript>7</subscript></entry>
2699 <entry>v<subscript>6</subscript></entry>
2700 <entry>v<subscript>5</subscript></entry>
2701 <entry>v<subscript>4</subscript></entry>
2702 <entry>v<subscript>3</subscript></entry>
2703 <entry>v<subscript>2</subscript></entry>
2704 <entry>v<subscript>1</subscript></entry>
2705 <entry>v<subscript>0</subscript></entry>
2706 </row>
2707 <row>
2708 <entry></entry>
2709 <entry></entry>
2710 <entry></entry>
2711 &dash-ent-20;
2712 <entry>y<subscript>11</subscript></entry>
2713 <entry>y<subscript>10</subscript></entry>
2714 <entry>y<subscript>9</subscript></entry>
2715 <entry>y<subscript>8</subscript></entry>
2716 <entry>y<subscript>7</subscript></entry>
2717 <entry>y<subscript>6</subscript></entry>
2718 <entry>y<subscript>5</subscript></entry>
2719 <entry>y<subscript>4</subscript></entry>
2720 <entry>y<subscript>3</subscript></entry>
2721 <entry>y<subscript>2</subscript></entry>
2722 <entry>y<subscript>1</subscript></entry>
2723 <entry>y<subscript>0</subscript></entry>
2724 </row>
2725 <row id="MEDIA-BUS-FMT-VYUY12-2X12">
2726 <entry>MEDIA_BUS_FMT_VYUY12_2X12</entry>
2727 <entry>0x201d</entry>
2728 <entry></entry>
2729 &dash-ent-20;
2730 <entry>v<subscript>11</subscript></entry>
2731 <entry>v<subscript>10</subscript></entry>
2732 <entry>v<subscript>9</subscript></entry>
2733 <entry>v<subscript>8</subscript></entry>
2734 <entry>v<subscript>7</subscript></entry>
2735 <entry>v<subscript>6</subscript></entry>
2736 <entry>v<subscript>5</subscript></entry>
2737 <entry>v<subscript>4</subscript></entry>
2738 <entry>v<subscript>3</subscript></entry>
2739 <entry>v<subscript>2</subscript></entry>
2740 <entry>v<subscript>1</subscript></entry>
2741 <entry>v<subscript>0</subscript></entry>
2742 </row>
2743 <row>
2744 <entry></entry>
2745 <entry></entry>
2746 <entry></entry>
2747 &dash-ent-20;
2748 <entry>y<subscript>11</subscript></entry>
2749 <entry>y<subscript>10</subscript></entry>
2750 <entry>y<subscript>9</subscript></entry>
2751 <entry>y<subscript>8</subscript></entry>
2752 <entry>y<subscript>7</subscript></entry>
2753 <entry>y<subscript>6</subscript></entry>
2754 <entry>y<subscript>5</subscript></entry>
2755 <entry>y<subscript>4</subscript></entry>
2756 <entry>y<subscript>3</subscript></entry>
2757 <entry>y<subscript>2</subscript></entry>
2758 <entry>y<subscript>1</subscript></entry>
2759 <entry>y<subscript>0</subscript></entry>
2760 </row>
2761 <row>
2762 <entry></entry>
2763 <entry></entry>
2764 <entry></entry>
2765 &dash-ent-20;
2766 <entry>u<subscript>11</subscript></entry>
2767 <entry>u<subscript>10</subscript></entry>
2768 <entry>u<subscript>9</subscript></entry>
2769 <entry>u<subscript>8</subscript></entry>
2770 <entry>u<subscript>7</subscript></entry>
2771 <entry>u<subscript>6</subscript></entry>
2772 <entry>u<subscript>5</subscript></entry>
2773 <entry>u<subscript>4</subscript></entry>
2774 <entry>u<subscript>3</subscript></entry>
2775 <entry>u<subscript>2</subscript></entry>
2776 <entry>u<subscript>1</subscript></entry>
2777 <entry>u<subscript>0</subscript></entry>
2778 </row>
2779 <row>
2780 <entry></entry>
2781 <entry></entry>
2782 <entry></entry>
2783 &dash-ent-20;
2784 <entry>y<subscript>11</subscript></entry>
2785 <entry>y<subscript>10</subscript></entry>
2786 <entry>y<subscript>9</subscript></entry>
2787 <entry>y<subscript>8</subscript></entry>
2788 <entry>y<subscript>7</subscript></entry>
2789 <entry>y<subscript>6</subscript></entry>
2790 <entry>y<subscript>5</subscript></entry>
2791 <entry>y<subscript>4</subscript></entry>
2792 <entry>y<subscript>3</subscript></entry>
2793 <entry>y<subscript>2</subscript></entry>
2794 <entry>y<subscript>1</subscript></entry>
2795 <entry>y<subscript>0</subscript></entry>
2796 </row>
2797 <row id="MEDIA-BUS-FMT-YUYV12-2X12">
2798 <entry>MEDIA_BUS_FMT_YUYV12_2X12</entry>
2799 <entry>0x201e</entry>
2800 <entry></entry>
2801 &dash-ent-20;
2802 <entry>y<subscript>11</subscript></entry>
2803 <entry>y<subscript>10</subscript></entry>
2804 <entry>y<subscript>9</subscript></entry>
2805 <entry>y<subscript>8</subscript></entry>
2806 <entry>y<subscript>7</subscript></entry>
2807 <entry>y<subscript>6</subscript></entry>
2808 <entry>y<subscript>5</subscript></entry>
2809 <entry>y<subscript>4</subscript></entry>
2810 <entry>y<subscript>3</subscript></entry>
2811 <entry>y<subscript>2</subscript></entry>
2812 <entry>y<subscript>1</subscript></entry>
2813 <entry>y<subscript>0</subscript></entry>
2814 </row>
2815 <row>
2816 <entry></entry>
2817 <entry></entry>
2818 <entry></entry>
2819 &dash-ent-20;
2820 <entry>u<subscript>11</subscript></entry>
2821 <entry>u<subscript>10</subscript></entry>
2822 <entry>u<subscript>9</subscript></entry>
2823 <entry>u<subscript>8</subscript></entry>
2824 <entry>u<subscript>7</subscript></entry>
2825 <entry>u<subscript>6</subscript></entry>
2826 <entry>u<subscript>5</subscript></entry>
2827 <entry>u<subscript>4</subscript></entry>
2828 <entry>u<subscript>3</subscript></entry>
2829 <entry>u<subscript>2</subscript></entry>
2830 <entry>u<subscript>1</subscript></entry>
2831 <entry>u<subscript>0</subscript></entry>
2832 </row>
2833 <row>
2834 <entry></entry>
2835 <entry></entry>
2836 <entry></entry>
2837 &dash-ent-20;
2838 <entry>y<subscript>11</subscript></entry>
2839 <entry>y<subscript>10</subscript></entry>
2840 <entry>y<subscript>9</subscript></entry>
2841 <entry>y<subscript>8</subscript></entry>
2842 <entry>y<subscript>7</subscript></entry>
2843 <entry>y<subscript>6</subscript></entry>
2844 <entry>y<subscript>5</subscript></entry>
2845 <entry>y<subscript>4</subscript></entry>
2846 <entry>y<subscript>3</subscript></entry>
2847 <entry>y<subscript>2</subscript></entry>
2848 <entry>y<subscript>1</subscript></entry>
2849 <entry>y<subscript>0</subscript></entry>
2850 </row>
2851 <row>
2852 <entry></entry>
2853 <entry></entry>
2854 <entry></entry>
2855 &dash-ent-20;
2856 <entry>v<subscript>11</subscript></entry>
2857 <entry>v<subscript>10</subscript></entry>
2858 <entry>v<subscript>9</subscript></entry>
2859 <entry>v<subscript>8</subscript></entry>
2860 <entry>v<subscript>7</subscript></entry>
2861 <entry>v<subscript>6</subscript></entry>
2862 <entry>v<subscript>5</subscript></entry>
2863 <entry>v<subscript>4</subscript></entry>
2864 <entry>v<subscript>3</subscript></entry>
2865 <entry>v<subscript>2</subscript></entry>
2866 <entry>v<subscript>1</subscript></entry>
2867 <entry>v<subscript>0</subscript></entry>
2868 </row>
2869 <row id="MEDIA-BUS-FMT-YVYU12-2X12">
2870 <entry>MEDIA_BUS_FMT_YVYU12_2X12</entry>
2871 <entry>0x201f</entry>
2872 <entry></entry>
2873 &dash-ent-20;
2874 <entry>y<subscript>11</subscript></entry>
2875 <entry>y<subscript>10</subscript></entry>
2876 <entry>y<subscript>9</subscript></entry>
2877 <entry>y<subscript>8</subscript></entry>
2878 <entry>y<subscript>7</subscript></entry>
2879 <entry>y<subscript>6</subscript></entry>
2880 <entry>y<subscript>5</subscript></entry>
2881 <entry>y<subscript>4</subscript></entry>
2882 <entry>y<subscript>3</subscript></entry>
2883 <entry>y<subscript>2</subscript></entry>
2884 <entry>y<subscript>1</subscript></entry>
2885 <entry>y<subscript>0</subscript></entry>
2886 </row>
2887 <row>
2888 <entry></entry>
2889 <entry></entry>
2890 <entry></entry>
2891 &dash-ent-20;
2892 <entry>v<subscript>11</subscript></entry>
2893 <entry>v<subscript>10</subscript></entry>
2894 <entry>v<subscript>9</subscript></entry>
2895 <entry>v<subscript>8</subscript></entry>
2896 <entry>v<subscript>7</subscript></entry>
2897 <entry>v<subscript>6</subscript></entry>
2898 <entry>v<subscript>5</subscript></entry>
2899 <entry>v<subscript>4</subscript></entry>
2900 <entry>v<subscript>3</subscript></entry>
2901 <entry>v<subscript>2</subscript></entry>
2902 <entry>v<subscript>1</subscript></entry>
2903 <entry>v<subscript>0</subscript></entry>
2904 </row>
2905 <row>
2906 <entry></entry>
2907 <entry></entry>
2908 <entry></entry>
2909 &dash-ent-20;
2910 <entry>y<subscript>11</subscript></entry>
2911 <entry>y<subscript>10</subscript></entry>
2912 <entry>y<subscript>9</subscript></entry>
2913 <entry>y<subscript>8</subscript></entry>
2914 <entry>y<subscript>7</subscript></entry>
2915 <entry>y<subscript>6</subscript></entry>
2916 <entry>y<subscript>5</subscript></entry>
2917 <entry>y<subscript>4</subscript></entry>
2918 <entry>y<subscript>3</subscript></entry>
2919 <entry>y<subscript>2</subscript></entry>
2920 <entry>y<subscript>1</subscript></entry>
2921 <entry>y<subscript>0</subscript></entry>
2922 </row>
2923 <row>
2924 <entry></entry>
2925 <entry></entry>
2926 <entry></entry>
2927 &dash-ent-20;
2928 <entry>u<subscript>11</subscript></entry>
2929 <entry>u<subscript>10</subscript></entry>
2930 <entry>u<subscript>9</subscript></entry>
2931 <entry>u<subscript>8</subscript></entry>
2932 <entry>u<subscript>7</subscript></entry>
2933 <entry>u<subscript>6</subscript></entry>
2934 <entry>u<subscript>5</subscript></entry>
2935 <entry>u<subscript>4</subscript></entry>
2936 <entry>u<subscript>3</subscript></entry>
2937 <entry>u<subscript>2</subscript></entry>
2938 <entry>u<subscript>1</subscript></entry>
2939 <entry>u<subscript>0</subscript></entry>
2940 </row>
2941 <row id="MEDIA-BUS-FMT-UYVY8-1X16">
2942 <entry>MEDIA_BUS_FMT_UYVY8_1X16</entry>
2943 <entry>0x200f</entry>
2944 <entry></entry>
2945 &dash-ent-16;
2946 <entry>u<subscript>7</subscript></entry>
2947 <entry>u<subscript>6</subscript></entry>
2948 <entry>u<subscript>5</subscript></entry>
2949 <entry>u<subscript>4</subscript></entry>
2950 <entry>u<subscript>3</subscript></entry>
2951 <entry>u<subscript>2</subscript></entry>
2952 <entry>u<subscript>1</subscript></entry>
2953 <entry>u<subscript>0</subscript></entry>
2954 <entry>y<subscript>7</subscript></entry>
2955 <entry>y<subscript>6</subscript></entry>
2956 <entry>y<subscript>5</subscript></entry>
2957 <entry>y<subscript>4</subscript></entry>
2958 <entry>y<subscript>3</subscript></entry>
2959 <entry>y<subscript>2</subscript></entry>
2960 <entry>y<subscript>1</subscript></entry>
2961 <entry>y<subscript>0</subscript></entry>
2962 </row>
2963 <row>
2964 <entry></entry>
2965 <entry></entry>
2966 <entry></entry>
2967 &dash-ent-16;
2968 <entry>v<subscript>7</subscript></entry>
2969 <entry>v<subscript>6</subscript></entry>
2970 <entry>v<subscript>5</subscript></entry>
2971 <entry>v<subscript>4</subscript></entry>
2972 <entry>v<subscript>3</subscript></entry>
2973 <entry>v<subscript>2</subscript></entry>
2974 <entry>v<subscript>1</subscript></entry>
2975 <entry>v<subscript>0</subscript></entry>
2976 <entry>y<subscript>7</subscript></entry>
2977 <entry>y<subscript>6</subscript></entry>
2978 <entry>y<subscript>5</subscript></entry>
2979 <entry>y<subscript>4</subscript></entry>
2980 <entry>y<subscript>3</subscript></entry>
2981 <entry>y<subscript>2</subscript></entry>
2982 <entry>y<subscript>1</subscript></entry>
2983 <entry>y<subscript>0</subscript></entry>
2984 </row>
2985 <row id="MEDIA-BUS-FMT-VYUY8-1X16">
2986 <entry>MEDIA_BUS_FMT_VYUY8_1X16</entry>
2987 <entry>0x2010</entry>
2988 <entry></entry>
2989 &dash-ent-16;
2990 <entry>v<subscript>7</subscript></entry>
2991 <entry>v<subscript>6</subscript></entry>
2992 <entry>v<subscript>5</subscript></entry>
2993 <entry>v<subscript>4</subscript></entry>
2994 <entry>v<subscript>3</subscript></entry>
2995 <entry>v<subscript>2</subscript></entry>
2996 <entry>v<subscript>1</subscript></entry>
2997 <entry>v<subscript>0</subscript></entry>
2998 <entry>y<subscript>7</subscript></entry>
2999 <entry>y<subscript>6</subscript></entry>
3000 <entry>y<subscript>5</subscript></entry>
3001 <entry>y<subscript>4</subscript></entry>
3002 <entry>y<subscript>3</subscript></entry>
3003 <entry>y<subscript>2</subscript></entry>
3004 <entry>y<subscript>1</subscript></entry>
3005 <entry>y<subscript>0</subscript></entry>
3006 </row>
3007 <row>
3008 <entry></entry>
3009 <entry></entry>
3010 <entry></entry>
3011 &dash-ent-16;
3012 <entry>u<subscript>7</subscript></entry>
3013 <entry>u<subscript>6</subscript></entry>
3014 <entry>u<subscript>5</subscript></entry>
3015 <entry>u<subscript>4</subscript></entry>
3016 <entry>u<subscript>3</subscript></entry>
3017 <entry>u<subscript>2</subscript></entry>
3018 <entry>u<subscript>1</subscript></entry>
3019 <entry>u<subscript>0</subscript></entry>
3020 <entry>y<subscript>7</subscript></entry>
3021 <entry>y<subscript>6</subscript></entry>
3022 <entry>y<subscript>5</subscript></entry>
3023 <entry>y<subscript>4</subscript></entry>
3024 <entry>y<subscript>3</subscript></entry>
3025 <entry>y<subscript>2</subscript></entry>
3026 <entry>y<subscript>1</subscript></entry>
3027 <entry>y<subscript>0</subscript></entry>
3028 </row>
3029 <row id="MEDIA-BUS-FMT-YUYV8-1X16">
3030 <entry>MEDIA_BUS_FMT_YUYV8_1X16</entry>
3031 <entry>0x2011</entry>
3032 <entry></entry>
3033 &dash-ent-16;
3034 <entry>y<subscript>7</subscript></entry>
3035 <entry>y<subscript>6</subscript></entry>
3036 <entry>y<subscript>5</subscript></entry>
3037 <entry>y<subscript>4</subscript></entry>
3038 <entry>y<subscript>3</subscript></entry>
3039 <entry>y<subscript>2</subscript></entry>
3040 <entry>y<subscript>1</subscript></entry>
3041 <entry>y<subscript>0</subscript></entry>
3042 <entry>u<subscript>7</subscript></entry>
3043 <entry>u<subscript>6</subscript></entry>
3044 <entry>u<subscript>5</subscript></entry>
3045 <entry>u<subscript>4</subscript></entry>
3046 <entry>u<subscript>3</subscript></entry>
3047 <entry>u<subscript>2</subscript></entry>
3048 <entry>u<subscript>1</subscript></entry>
3049 <entry>u<subscript>0</subscript></entry>
3050 </row>
3051 <row>
3052 <entry></entry>
3053 <entry></entry>
3054 <entry></entry>
3055 &dash-ent-16;
3056 <entry>y<subscript>7</subscript></entry>
3057 <entry>y<subscript>6</subscript></entry>
3058 <entry>y<subscript>5</subscript></entry>
3059 <entry>y<subscript>4</subscript></entry>
3060 <entry>y<subscript>3</subscript></entry>
3061 <entry>y<subscript>2</subscript></entry>
3062 <entry>y<subscript>1</subscript></entry>
3063 <entry>y<subscript>0</subscript></entry>
3064 <entry>v<subscript>7</subscript></entry>
3065 <entry>v<subscript>6</subscript></entry>
3066 <entry>v<subscript>5</subscript></entry>
3067 <entry>v<subscript>4</subscript></entry>
3068 <entry>v<subscript>3</subscript></entry>
3069 <entry>v<subscript>2</subscript></entry>
3070 <entry>v<subscript>1</subscript></entry>
3071 <entry>v<subscript>0</subscript></entry>
3072 </row>
3073 <row id="MEDIA-BUS-FMT-YVYU8-1X16">
3074 <entry>MEDIA_BUS_FMT_YVYU8_1X16</entry>
3075 <entry>0x2012</entry>
3076 <entry></entry>
3077 &dash-ent-16;
3078 <entry>y<subscript>7</subscript></entry>
3079 <entry>y<subscript>6</subscript></entry>
3080 <entry>y<subscript>5</subscript></entry>
3081 <entry>y<subscript>4</subscript></entry>
3082 <entry>y<subscript>3</subscript></entry>
3083 <entry>y<subscript>2</subscript></entry>
3084 <entry>y<subscript>1</subscript></entry>
3085 <entry>y<subscript>0</subscript></entry>
3086 <entry>v<subscript>7</subscript></entry>
3087 <entry>v<subscript>6</subscript></entry>
3088 <entry>v<subscript>5</subscript></entry>
3089 <entry>v<subscript>4</subscript></entry>
3090 <entry>v<subscript>3</subscript></entry>
3091 <entry>v<subscript>2</subscript></entry>
3092 <entry>v<subscript>1</subscript></entry>
3093 <entry>v<subscript>0</subscript></entry>
3094 </row>
3095 <row>
3096 <entry></entry>
3097 <entry></entry>
3098 <entry></entry>
3099 &dash-ent-16;
3100 <entry>y<subscript>7</subscript></entry>
3101 <entry>y<subscript>6</subscript></entry>
3102 <entry>y<subscript>5</subscript></entry>
3103 <entry>y<subscript>4</subscript></entry>
3104 <entry>y<subscript>3</subscript></entry>
3105 <entry>y<subscript>2</subscript></entry>
3106 <entry>y<subscript>1</subscript></entry>
3107 <entry>y<subscript>0</subscript></entry>
3108 <entry>u<subscript>7</subscript></entry>
3109 <entry>u<subscript>6</subscript></entry>
3110 <entry>u<subscript>5</subscript></entry>
3111 <entry>u<subscript>4</subscript></entry>
3112 <entry>u<subscript>3</subscript></entry>
3113 <entry>u<subscript>2</subscript></entry>
3114 <entry>u<subscript>1</subscript></entry>
3115 <entry>u<subscript>0</subscript></entry>
3116 </row>
3117 <row id="MEDIA-BUS-FMT-YDYUYDYV8-1X16">
3118 <entry>MEDIA_BUS_FMT_YDYUYDYV8_1X16</entry>
3119 <entry>0x2014</entry>
3120 <entry></entry>
3121 &dash-ent-16;
3122 <entry>y<subscript>7</subscript></entry>
3123 <entry>y<subscript>6</subscript></entry>
3124 <entry>y<subscript>5</subscript></entry>
3125 <entry>y<subscript>4</subscript></entry>
3126 <entry>y<subscript>3</subscript></entry>
3127 <entry>y<subscript>2</subscript></entry>
3128 <entry>y<subscript>1</subscript></entry>
3129 <entry>y<subscript>0</subscript></entry>
3130 <entry>d</entry>
3131 <entry>d</entry>
3132 <entry>d</entry>
3133 <entry>d</entry>
3134 <entry>d</entry>
3135 <entry>d</entry>
3136 <entry>d</entry>
3137 <entry>d</entry>
3138 </row>
3139 <row>
3140 <entry></entry>
3141 <entry></entry>
3142 <entry></entry>
3143 &dash-ent-16;
3144 <entry>y<subscript>7</subscript></entry>
3145 <entry>y<subscript>6</subscript></entry>
3146 <entry>y<subscript>5</subscript></entry>
3147 <entry>y<subscript>4</subscript></entry>
3148 <entry>y<subscript>3</subscript></entry>
3149 <entry>y<subscript>2</subscript></entry>
3150 <entry>y<subscript>1</subscript></entry>
3151 <entry>y<subscript>0</subscript></entry>
3152 <entry>u<subscript>7</subscript></entry>
3153 <entry>u<subscript>6</subscript></entry>
3154 <entry>u<subscript>5</subscript></entry>
3155 <entry>u<subscript>4</subscript></entry>
3156 <entry>u<subscript>3</subscript></entry>
3157 <entry>u<subscript>2</subscript></entry>
3158 <entry>u<subscript>1</subscript></entry>
3159 <entry>u<subscript>0</subscript></entry>
3160 </row>
3161 <row>
3162 <entry></entry>
3163 <entry></entry>
3164 <entry></entry>
3165 &dash-ent-16;
3166 <entry>y<subscript>7</subscript></entry>
3167 <entry>y<subscript>6</subscript></entry>
3168 <entry>y<subscript>5</subscript></entry>
3169 <entry>y<subscript>4</subscript></entry>
3170 <entry>y<subscript>3</subscript></entry>
3171 <entry>y<subscript>2</subscript></entry>
3172 <entry>y<subscript>1</subscript></entry>
3173 <entry>y<subscript>0</subscript></entry>
3174 <entry>d</entry>
3175 <entry>d</entry>
3176 <entry>d</entry>
3177 <entry>d</entry>
3178 <entry>d</entry>
3179 <entry>d</entry>
3180 <entry>d</entry>
3181 <entry>d</entry>
3182 </row>
3183 <row>
3184 <entry></entry>
3185 <entry></entry>
3186 <entry></entry>
3187 &dash-ent-16;
3188 <entry>y<subscript>7</subscript></entry>
3189 <entry>y<subscript>6</subscript></entry>
3190 <entry>y<subscript>5</subscript></entry>
3191 <entry>y<subscript>4</subscript></entry>
3192 <entry>y<subscript>3</subscript></entry>
3193 <entry>y<subscript>2</subscript></entry>
3194 <entry>y<subscript>1</subscript></entry>
3195 <entry>y<subscript>0</subscript></entry>
3196 <entry>v<subscript>7</subscript></entry>
3197 <entry>v<subscript>6</subscript></entry>
3198 <entry>v<subscript>5</subscript></entry>
3199 <entry>v<subscript>4</subscript></entry>
3200 <entry>v<subscript>3</subscript></entry>
3201 <entry>v<subscript>2</subscript></entry>
3202 <entry>v<subscript>1</subscript></entry>
3203 <entry>v<subscript>0</subscript></entry>
3204 </row>
3205 <row id="MEDIA-BUS-FMT-UYVY10-1X20">
3206 <entry>MEDIA_BUS_FMT_UYVY10_1X20</entry>
3207 <entry>0x201a</entry>
3208 <entry></entry>
3209 &dash-ent-12;
3210 <entry>u<subscript>9</subscript></entry>
3211 <entry>u<subscript>8</subscript></entry>
3212 <entry>u<subscript>7</subscript></entry>
3213 <entry>u<subscript>6</subscript></entry>
3214 <entry>u<subscript>5</subscript></entry>
3215 <entry>u<subscript>4</subscript></entry>
3216 <entry>u<subscript>3</subscript></entry>
3217 <entry>u<subscript>2</subscript></entry>
3218 <entry>u<subscript>1</subscript></entry>
3219 <entry>u<subscript>0</subscript></entry>
3220 <entry>y<subscript>9</subscript></entry>
3221 <entry>y<subscript>8</subscript></entry>
3222 <entry>y<subscript>7</subscript></entry>
3223 <entry>y<subscript>6</subscript></entry>
3224 <entry>y<subscript>5</subscript></entry>
3225 <entry>y<subscript>4</subscript></entry>
3226 <entry>y<subscript>3</subscript></entry>
3227 <entry>y<subscript>2</subscript></entry>
3228 <entry>y<subscript>1</subscript></entry>
3229 <entry>y<subscript>0</subscript></entry>
3230 </row>
3231 <row>
3232 <entry></entry>
3233 <entry></entry>
3234 <entry></entry>
3235 &dash-ent-12;
3236 <entry>v<subscript>9</subscript></entry>
3237 <entry>v<subscript>8</subscript></entry>
3238 <entry>v<subscript>7</subscript></entry>
3239 <entry>v<subscript>6</subscript></entry>
3240 <entry>v<subscript>5</subscript></entry>
3241 <entry>v<subscript>4</subscript></entry>
3242 <entry>v<subscript>3</subscript></entry>
3243 <entry>v<subscript>2</subscript></entry>
3244 <entry>v<subscript>1</subscript></entry>
3245 <entry>v<subscript>0</subscript></entry>
3246 <entry>y<subscript>9</subscript></entry>
3247 <entry>y<subscript>8</subscript></entry>
3248 <entry>y<subscript>7</subscript></entry>
3249 <entry>y<subscript>6</subscript></entry>
3250 <entry>y<subscript>5</subscript></entry>
3251 <entry>y<subscript>4</subscript></entry>
3252 <entry>y<subscript>3</subscript></entry>
3253 <entry>y<subscript>2</subscript></entry>
3254 <entry>y<subscript>1</subscript></entry>
3255 <entry>y<subscript>0</subscript></entry>
3256 </row>
3257 <row id="MEDIA-BUS-FMT-VYUY10-1X20">
3258 <entry>MEDIA_BUS_FMT_VYUY10_1X20</entry>
3259 <entry>0x201b</entry>
3260 <entry></entry>
3261 &dash-ent-12;
3262 <entry>v<subscript>9</subscript></entry>
3263 <entry>v<subscript>8</subscript></entry>
3264 <entry>v<subscript>7</subscript></entry>
3265 <entry>v<subscript>6</subscript></entry>
3266 <entry>v<subscript>5</subscript></entry>
3267 <entry>v<subscript>4</subscript></entry>
3268 <entry>v<subscript>3</subscript></entry>
3269 <entry>v<subscript>2</subscript></entry>
3270 <entry>v<subscript>1</subscript></entry>
3271 <entry>v<subscript>0</subscript></entry>
3272 <entry>y<subscript>9</subscript></entry>
3273 <entry>y<subscript>8</subscript></entry>
3274 <entry>y<subscript>7</subscript></entry>
3275 <entry>y<subscript>6</subscript></entry>
3276 <entry>y<subscript>5</subscript></entry>
3277 <entry>y<subscript>4</subscript></entry>
3278 <entry>y<subscript>3</subscript></entry>
3279 <entry>y<subscript>2</subscript></entry>
3280 <entry>y<subscript>1</subscript></entry>
3281 <entry>y<subscript>0</subscript></entry>
3282 </row>
3283 <row>
3284 <entry></entry>
3285 <entry></entry>
3286 <entry></entry>
3287 &dash-ent-12;
3288 <entry>u<subscript>9</subscript></entry>
3289 <entry>u<subscript>8</subscript></entry>
3290 <entry>u<subscript>7</subscript></entry>
3291 <entry>u<subscript>6</subscript></entry>
3292 <entry>u<subscript>5</subscript></entry>
3293 <entry>u<subscript>4</subscript></entry>
3294 <entry>u<subscript>3</subscript></entry>
3295 <entry>u<subscript>2</subscript></entry>
3296 <entry>u<subscript>1</subscript></entry>
3297 <entry>u<subscript>0</subscript></entry>
3298 <entry>y<subscript>9</subscript></entry>
3299 <entry>y<subscript>8</subscript></entry>
3300 <entry>y<subscript>7</subscript></entry>
3301 <entry>y<subscript>6</subscript></entry>
3302 <entry>y<subscript>5</subscript></entry>
3303 <entry>y<subscript>4</subscript></entry>
3304 <entry>y<subscript>3</subscript></entry>
3305 <entry>y<subscript>2</subscript></entry>
3306 <entry>y<subscript>1</subscript></entry>
3307 <entry>y<subscript>0</subscript></entry>
3308 </row>
3309 <row id="MEDIA-BUS-FMT-YUYV10-1X20">
3310 <entry>MEDIA_BUS_FMT_YUYV10_1X20</entry>
3311 <entry>0x200d</entry>
3312 <entry></entry>
3313 &dash-ent-12;
3314 <entry>y<subscript>9</subscript></entry>
3315 <entry>y<subscript>8</subscript></entry>
3316 <entry>y<subscript>7</subscript></entry>
3317 <entry>y<subscript>6</subscript></entry>
3318 <entry>y<subscript>5</subscript></entry>
3319 <entry>y<subscript>4</subscript></entry>
3320 <entry>y<subscript>3</subscript></entry>
3321 <entry>y<subscript>2</subscript></entry>
3322 <entry>y<subscript>1</subscript></entry>
3323 <entry>y<subscript>0</subscript></entry>
3324 <entry>u<subscript>9</subscript></entry>
3325 <entry>u<subscript>8</subscript></entry>
3326 <entry>u<subscript>7</subscript></entry>
3327 <entry>u<subscript>6</subscript></entry>
3328 <entry>u<subscript>5</subscript></entry>
3329 <entry>u<subscript>4</subscript></entry>
3330 <entry>u<subscript>3</subscript></entry>
3331 <entry>u<subscript>2</subscript></entry>
3332 <entry>u<subscript>1</subscript></entry>
3333 <entry>u<subscript>0</subscript></entry>
3334 </row>
3335 <row>
3336 <entry></entry>
3337 <entry></entry>
3338 <entry></entry>
3339 &dash-ent-12;
3340 <entry>y<subscript>9</subscript></entry>
3341 <entry>y<subscript>8</subscript></entry>
3342 <entry>y<subscript>7</subscript></entry>
3343 <entry>y<subscript>6</subscript></entry>
3344 <entry>y<subscript>5</subscript></entry>
3345 <entry>y<subscript>4</subscript></entry>
3346 <entry>y<subscript>3</subscript></entry>
3347 <entry>y<subscript>2</subscript></entry>
3348 <entry>y<subscript>1</subscript></entry>
3349 <entry>y<subscript>0</subscript></entry>
3350 <entry>v<subscript>9</subscript></entry>
3351 <entry>v<subscript>8</subscript></entry>
3352 <entry>v<subscript>7</subscript></entry>
3353 <entry>v<subscript>6</subscript></entry>
3354 <entry>v<subscript>5</subscript></entry>
3355 <entry>v<subscript>4</subscript></entry>
3356 <entry>v<subscript>3</subscript></entry>
3357 <entry>v<subscript>2</subscript></entry>
3358 <entry>v<subscript>1</subscript></entry>
3359 <entry>v<subscript>0</subscript></entry>
3360 </row>
3361 <row id="MEDIA-BUS-FMT-YVYU10-1X20">
3362 <entry>MEDIA_BUS_FMT_YVYU10_1X20</entry>
3363 <entry>0x200e</entry>
3364 <entry></entry>
3365 &dash-ent-12;
3366 <entry>y<subscript>9</subscript></entry>
3367 <entry>y<subscript>8</subscript></entry>
3368 <entry>y<subscript>7</subscript></entry>
3369 <entry>y<subscript>6</subscript></entry>
3370 <entry>y<subscript>5</subscript></entry>
3371 <entry>y<subscript>4</subscript></entry>
3372 <entry>y<subscript>3</subscript></entry>
3373 <entry>y<subscript>2</subscript></entry>
3374 <entry>y<subscript>1</subscript></entry>
3375 <entry>y<subscript>0</subscript></entry>
3376 <entry>v<subscript>9</subscript></entry>
3377 <entry>v<subscript>8</subscript></entry>
3378 <entry>v<subscript>7</subscript></entry>
3379 <entry>v<subscript>6</subscript></entry>
3380 <entry>v<subscript>5</subscript></entry>
3381 <entry>v<subscript>4</subscript></entry>
3382 <entry>v<subscript>3</subscript></entry>
3383 <entry>v<subscript>2</subscript></entry>
3384 <entry>v<subscript>1</subscript></entry>
3385 <entry>v<subscript>0</subscript></entry>
3386 </row>
3387 <row>
3388 <entry></entry>
3389 <entry></entry>
3390 <entry></entry>
3391 &dash-ent-12;
3392 <entry>y<subscript>9</subscript></entry>
3393 <entry>y<subscript>8</subscript></entry>
3394 <entry>y<subscript>7</subscript></entry>
3395 <entry>y<subscript>6</subscript></entry>
3396 <entry>y<subscript>5</subscript></entry>
3397 <entry>y<subscript>4</subscript></entry>
3398 <entry>y<subscript>3</subscript></entry>
3399 <entry>y<subscript>2</subscript></entry>
3400 <entry>y<subscript>1</subscript></entry>
3401 <entry>y<subscript>0</subscript></entry>
3402 <entry>u<subscript>9</subscript></entry>
3403 <entry>u<subscript>8</subscript></entry>
3404 <entry>u<subscript>7</subscript></entry>
3405 <entry>u<subscript>6</subscript></entry>
3406 <entry>u<subscript>5</subscript></entry>
3407 <entry>u<subscript>4</subscript></entry>
3408 <entry>u<subscript>3</subscript></entry>
3409 <entry>u<subscript>2</subscript></entry>
3410 <entry>u<subscript>1</subscript></entry>
3411 <entry>u<subscript>0</subscript></entry>
3412 </row>
3413 <row id="MEDIA-BUS-FMT-VUY8-1X24">
3414 <entry>MEDIA_BUS_FMT_VUY8_1X24</entry>
3415 <entry>0x201a</entry>
3416 <entry></entry>
3417 &dash-ent-8;
3418 <entry>v<subscript>7</subscript></entry>
3419 <entry>v<subscript>6</subscript></entry>
3420 <entry>v<subscript>5</subscript></entry>
3421 <entry>v<subscript>4</subscript></entry>
3422 <entry>v<subscript>3</subscript></entry>
3423 <entry>v<subscript>2</subscript></entry>
3424 <entry>v<subscript>1</subscript></entry>
3425 <entry>v<subscript>0</subscript></entry>
3426 <entry>u<subscript>7</subscript></entry>
3427 <entry>u<subscript>6</subscript></entry>
3428 <entry>u<subscript>5</subscript></entry>
3429 <entry>u<subscript>4</subscript></entry>
3430 <entry>u<subscript>3</subscript></entry>
3431 <entry>u<subscript>2</subscript></entry>
3432 <entry>u<subscript>1</subscript></entry>
3433 <entry>u<subscript>0</subscript></entry>
3434 <entry>y<subscript>7</subscript></entry>
3435 <entry>y<subscript>6</subscript></entry>
3436 <entry>y<subscript>5</subscript></entry>
3437 <entry>y<subscript>4</subscript></entry>
3438 <entry>y<subscript>3</subscript></entry>
3439 <entry>y<subscript>2</subscript></entry>
3440 <entry>y<subscript>1</subscript></entry>
3441 <entry>y<subscript>0</subscript></entry>
3442 </row>
3443 <row id="MEDIA-BUS-FMT-YUV8-1X24">
3444 <entry>MEDIA_BUS_FMT_YUV8_1X24</entry>
3445 <entry>0x2025</entry>
3446 <entry></entry>
3447 <entry>-</entry>
3448 <entry>-</entry>
3449 <entry>-</entry>
3450 <entry>-</entry>
3451 <entry>-</entry>
3452 <entry>-</entry>
3453 <entry>-</entry>
3454 <entry>-</entry>
3455 <entry>y<subscript>7</subscript></entry>
3456 <entry>y<subscript>6</subscript></entry>
3457 <entry>y<subscript>5</subscript></entry>
3458 <entry>y<subscript>4</subscript></entry>
3459 <entry>y<subscript>3</subscript></entry>
3460 <entry>y<subscript>2</subscript></entry>
3461 <entry>y<subscript>1</subscript></entry>
3462 <entry>y<subscript>0</subscript></entry>
3463 <entry>u<subscript>7</subscript></entry>
3464 <entry>u<subscript>6</subscript></entry>
3465 <entry>u<subscript>5</subscript></entry>
3466 <entry>u<subscript>4</subscript></entry>
3467 <entry>u<subscript>3</subscript></entry>
3468 <entry>u<subscript>2</subscript></entry>
3469 <entry>u<subscript>1</subscript></entry>
3470 <entry>u<subscript>0</subscript></entry>
3471 <entry>v<subscript>7</subscript></entry>
3472 <entry>v<subscript>6</subscript></entry>
3473 <entry>v<subscript>5</subscript></entry>
3474 <entry>v<subscript>4</subscript></entry>
3475 <entry>v<subscript>3</subscript></entry>
3476 <entry>v<subscript>2</subscript></entry>
3477 <entry>v<subscript>1</subscript></entry>
3478 <entry>v<subscript>0</subscript></entry>
3479 </row>
3480 <row id="MEDIA-BUS-FMT-UYVY12-1X24">
3481 <entry>MEDIA_BUS_FMT_UYVY12_1X24</entry>
3482 <entry>0x2020</entry>
3483 <entry></entry>
3484 &dash-ent-8;
3485 <entry>u<subscript>11</subscript></entry>
3486 <entry>u<subscript>10</subscript></entry>
3487 <entry>u<subscript>9</subscript></entry>
3488 <entry>u<subscript>8</subscript></entry>
3489 <entry>u<subscript>7</subscript></entry>
3490 <entry>u<subscript>6</subscript></entry>
3491 <entry>u<subscript>5</subscript></entry>
3492 <entry>u<subscript>4</subscript></entry>
3493 <entry>u<subscript>3</subscript></entry>
3494 <entry>u<subscript>2</subscript></entry>
3495 <entry>u<subscript>1</subscript></entry>
3496 <entry>u<subscript>0</subscript></entry>
3497 <entry>y<subscript>11</subscript></entry>
3498 <entry>y<subscript>10</subscript></entry>
3499 <entry>y<subscript>9</subscript></entry>
3500 <entry>y<subscript>8</subscript></entry>
3501 <entry>y<subscript>7</subscript></entry>
3502 <entry>y<subscript>6</subscript></entry>
3503 <entry>y<subscript>5</subscript></entry>
3504 <entry>y<subscript>4</subscript></entry>
3505 <entry>y<subscript>3</subscript></entry>
3506 <entry>y<subscript>2</subscript></entry>
3507 <entry>y<subscript>1</subscript></entry>
3508 <entry>y<subscript>0</subscript></entry>
3509 </row>
3510 <row>
3511 <entry></entry>
3512 <entry></entry>
3513 <entry></entry>
3514 &dash-ent-8;
3515 <entry>v<subscript>11</subscript></entry>
3516 <entry>v<subscript>10</subscript></entry>
3517 <entry>v<subscript>9</subscript></entry>
3518 <entry>v<subscript>8</subscript></entry>
3519 <entry>v<subscript>7</subscript></entry>
3520 <entry>v<subscript>6</subscript></entry>
3521 <entry>v<subscript>5</subscript></entry>
3522 <entry>v<subscript>4</subscript></entry>
3523 <entry>v<subscript>3</subscript></entry>
3524 <entry>v<subscript>2</subscript></entry>
3525 <entry>v<subscript>1</subscript></entry>
3526 <entry>v<subscript>0</subscript></entry>
3527 <entry>y<subscript>11</subscript></entry>
3528 <entry>y<subscript>10</subscript></entry>
3529 <entry>y<subscript>9</subscript></entry>
3530 <entry>y<subscript>8</subscript></entry>
3531 <entry>y<subscript>7</subscript></entry>
3532 <entry>y<subscript>6</subscript></entry>
3533 <entry>y<subscript>5</subscript></entry>
3534 <entry>y<subscript>4</subscript></entry>
3535 <entry>y<subscript>3</subscript></entry>
3536 <entry>y<subscript>2</subscript></entry>
3537 <entry>y<subscript>1</subscript></entry>
3538 <entry>y<subscript>0</subscript></entry>
3539 </row>
3540 <row id="MEDIA-BUS-FMT-VYUY12-1X24">
3541 <entry>MEDIA_BUS_FMT_VYUY12_1X24</entry>
3542 <entry>0x2021</entry>
3543 <entry></entry>
3544 &dash-ent-8;
3545 <entry>v<subscript>11</subscript></entry>
3546 <entry>v<subscript>10</subscript></entry>
3547 <entry>v<subscript>9</subscript></entry>
3548 <entry>v<subscript>8</subscript></entry>
3549 <entry>v<subscript>7</subscript></entry>
3550 <entry>v<subscript>6</subscript></entry>
3551 <entry>v<subscript>5</subscript></entry>
3552 <entry>v<subscript>4</subscript></entry>
3553 <entry>v<subscript>3</subscript></entry>
3554 <entry>v<subscript>2</subscript></entry>
3555 <entry>v<subscript>1</subscript></entry>
3556 <entry>v<subscript>0</subscript></entry>
3557 <entry>y<subscript>11</subscript></entry>
3558 <entry>y<subscript>10</subscript></entry>
3559 <entry>y<subscript>9</subscript></entry>
3560 <entry>y<subscript>8</subscript></entry>
3561 <entry>y<subscript>7</subscript></entry>
3562 <entry>y<subscript>6</subscript></entry>
3563 <entry>y<subscript>5</subscript></entry>
3564 <entry>y<subscript>4</subscript></entry>
3565 <entry>y<subscript>3</subscript></entry>
3566 <entry>y<subscript>2</subscript></entry>
3567 <entry>y<subscript>1</subscript></entry>
3568 <entry>y<subscript>0</subscript></entry>
3569 </row>
3570 <row>
3571 <entry></entry>
3572 <entry></entry>
3573 <entry></entry>
3574 &dash-ent-8;
3575 <entry>u<subscript>11</subscript></entry>
3576 <entry>u<subscript>10</subscript></entry>
3577 <entry>u<subscript>9</subscript></entry>
3578 <entry>u<subscript>8</subscript></entry>
3579 <entry>u<subscript>7</subscript></entry>
3580 <entry>u<subscript>6</subscript></entry>
3581 <entry>u<subscript>5</subscript></entry>
3582 <entry>u<subscript>4</subscript></entry>
3583 <entry>u<subscript>3</subscript></entry>
3584 <entry>u<subscript>2</subscript></entry>
3585 <entry>u<subscript>1</subscript></entry>
3586 <entry>u<subscript>0</subscript></entry>
3587 <entry>y<subscript>11</subscript></entry>
3588 <entry>y<subscript>10</subscript></entry>
3589 <entry>y<subscript>9</subscript></entry>
3590 <entry>y<subscript>8</subscript></entry>
3591 <entry>y<subscript>7</subscript></entry>
3592 <entry>y<subscript>6</subscript></entry>
3593 <entry>y<subscript>5</subscript></entry>
3594 <entry>y<subscript>4</subscript></entry>
3595 <entry>y<subscript>3</subscript></entry>
3596 <entry>y<subscript>2</subscript></entry>
3597 <entry>y<subscript>1</subscript></entry>
3598 <entry>y<subscript>0</subscript></entry>
3599 </row>
3600 <row id="MEDIA-BUS-FMT-YUYV12-1X24">
3601 <entry>MEDIA_BUS_FMT_YUYV12_1X24</entry>
3602 <entry>0x2022</entry>
3603 <entry></entry>
3604 &dash-ent-8;
3605 <entry>y<subscript>11</subscript></entry>
3606 <entry>y<subscript>10</subscript></entry>
3607 <entry>y<subscript>9</subscript></entry>
3608 <entry>y<subscript>8</subscript></entry>
3609 <entry>y<subscript>7</subscript></entry>
3610 <entry>y<subscript>6</subscript></entry>
3611 <entry>y<subscript>5</subscript></entry>
3612 <entry>y<subscript>4</subscript></entry>
3613 <entry>y<subscript>3</subscript></entry>
3614 <entry>y<subscript>2</subscript></entry>
3615 <entry>y<subscript>1</subscript></entry>
3616 <entry>y<subscript>0</subscript></entry>
3617 <entry>u<subscript>11</subscript></entry>
3618 <entry>u<subscript>10</subscript></entry>
3619 <entry>u<subscript>9</subscript></entry>
3620 <entry>u<subscript>8</subscript></entry>
3621 <entry>u<subscript>7</subscript></entry>
3622 <entry>u<subscript>6</subscript></entry>
3623 <entry>u<subscript>5</subscript></entry>
3624 <entry>u<subscript>4</subscript></entry>
3625 <entry>u<subscript>3</subscript></entry>
3626 <entry>u<subscript>2</subscript></entry>
3627 <entry>u<subscript>1</subscript></entry>
3628 <entry>u<subscript>0</subscript></entry>
3629 </row>
3630 <row>
3631 <entry></entry>
3632 <entry></entry>
3633 <entry></entry>
3634 &dash-ent-8;
3635 <entry>y<subscript>11</subscript></entry>
3636 <entry>y<subscript>10</subscript></entry>
3637 <entry>y<subscript>9</subscript></entry>
3638 <entry>y<subscript>8</subscript></entry>
3639 <entry>y<subscript>7</subscript></entry>
3640 <entry>y<subscript>6</subscript></entry>
3641 <entry>y<subscript>5</subscript></entry>
3642 <entry>y<subscript>4</subscript></entry>
3643 <entry>y<subscript>3</subscript></entry>
3644 <entry>y<subscript>2</subscript></entry>
3645 <entry>y<subscript>1</subscript></entry>
3646 <entry>y<subscript>0</subscript></entry>
3647 <entry>v<subscript>11</subscript></entry>
3648 <entry>v<subscript>10</subscript></entry>
3649 <entry>v<subscript>9</subscript></entry>
3650 <entry>v<subscript>8</subscript></entry>
3651 <entry>v<subscript>7</subscript></entry>
3652 <entry>v<subscript>6</subscript></entry>
3653 <entry>v<subscript>5</subscript></entry>
3654 <entry>v<subscript>4</subscript></entry>
3655 <entry>v<subscript>3</subscript></entry>
3656 <entry>v<subscript>2</subscript></entry>
3657 <entry>v<subscript>1</subscript></entry>
3658 <entry>v<subscript>0</subscript></entry>
3659 </row>
3660 <row id="MEDIA-BUS-FMT-YVYU12-1X24">
3661 <entry>MEDIA_BUS_FMT_YVYU12_1X24</entry>
3662 <entry>0x2023</entry>
3663 <entry></entry>
3664 &dash-ent-8;
3665 <entry>y<subscript>11</subscript></entry>
3666 <entry>y<subscript>10</subscript></entry>
3667 <entry>y<subscript>9</subscript></entry>
3668 <entry>y<subscript>8</subscript></entry>
3669 <entry>y<subscript>7</subscript></entry>
3670 <entry>y<subscript>6</subscript></entry>
3671 <entry>y<subscript>5</subscript></entry>
3672 <entry>y<subscript>4</subscript></entry>
3673 <entry>y<subscript>3</subscript></entry>
3674 <entry>y<subscript>2</subscript></entry>
3675 <entry>y<subscript>1</subscript></entry>
3676 <entry>y<subscript>0</subscript></entry>
3677 <entry>v<subscript>11</subscript></entry>
3678 <entry>v<subscript>10</subscript></entry>
3679 <entry>v<subscript>9</subscript></entry>
3680 <entry>v<subscript>8</subscript></entry>
3681 <entry>v<subscript>7</subscript></entry>
3682 <entry>v<subscript>6</subscript></entry>
3683 <entry>v<subscript>5</subscript></entry>
3684 <entry>v<subscript>4</subscript></entry>
3685 <entry>v<subscript>3</subscript></entry>
3686 <entry>v<subscript>2</subscript></entry>
3687 <entry>v<subscript>1</subscript></entry>
3688 <entry>v<subscript>0</subscript></entry>
3689 </row>
3690 <row>
3691 <entry></entry>
3692 <entry></entry>
3693 <entry></entry>
3694 &dash-ent-8;
3695 <entry>y<subscript>11</subscript></entry>
3696 <entry>y<subscript>10</subscript></entry>
3697 <entry>y<subscript>9</subscript></entry>
3698 <entry>y<subscript>8</subscript></entry>
3699 <entry>y<subscript>7</subscript></entry>
3700 <entry>y<subscript>6</subscript></entry>
3701 <entry>y<subscript>5</subscript></entry>
3702 <entry>y<subscript>4</subscript></entry>
3703 <entry>y<subscript>3</subscript></entry>
3704 <entry>y<subscript>2</subscript></entry>
3705 <entry>y<subscript>1</subscript></entry>
3706 <entry>y<subscript>0</subscript></entry>
3707 <entry>u<subscript>11</subscript></entry>
3708 <entry>u<subscript>10</subscript></entry>
3709 <entry>u<subscript>9</subscript></entry>
3710 <entry>u<subscript>8</subscript></entry>
3711 <entry>u<subscript>7</subscript></entry>
3712 <entry>u<subscript>6</subscript></entry>
3713 <entry>u<subscript>5</subscript></entry>
3714 <entry>u<subscript>4</subscript></entry>
3715 <entry>u<subscript>3</subscript></entry>
3716 <entry>u<subscript>2</subscript></entry>
3717 <entry>u<subscript>1</subscript></entry>
3718 <entry>u<subscript>0</subscript></entry>
3719 </row>
3720 <row id="MEDIA-BUS-FMT-YUV10-1X30">
3721 <entry>MEDIA_BUS_FMT_YUV10_1X30</entry>
3722 <entry>0x2016</entry>
3723 <entry></entry>
3724 <entry>-</entry>
3725 <entry>-</entry>
3726 <entry>y<subscript>9</subscript></entry>
3727 <entry>y<subscript>8</subscript></entry>
3728 <entry>y<subscript>7</subscript></entry>
3729 <entry>y<subscript>6</subscript></entry>
3730 <entry>y<subscript>5</subscript></entry>
3731 <entry>y<subscript>4</subscript></entry>
3732 <entry>y<subscript>3</subscript></entry>
3733 <entry>y<subscript>2</subscript></entry>
3734 <entry>y<subscript>1</subscript></entry>
3735 <entry>y<subscript>0</subscript></entry>
3736 <entry>u<subscript>9</subscript></entry>
3737 <entry>u<subscript>8</subscript></entry>
3738 <entry>u<subscript>7</subscript></entry>
3739 <entry>u<subscript>6</subscript></entry>
3740 <entry>u<subscript>5</subscript></entry>
3741 <entry>u<subscript>4</subscript></entry>
3742 <entry>u<subscript>3</subscript></entry>
3743 <entry>u<subscript>2</subscript></entry>
3744 <entry>u<subscript>1</subscript></entry>
3745 <entry>u<subscript>0</subscript></entry>
3746 <entry>v<subscript>9</subscript></entry>
3747 <entry>v<subscript>8</subscript></entry>
3748 <entry>v<subscript>7</subscript></entry>
3749 <entry>v<subscript>6</subscript></entry>
3750 <entry>v<subscript>5</subscript></entry>
3751 <entry>v<subscript>4</subscript></entry>
3752 <entry>v<subscript>3</subscript></entry>
3753 <entry>v<subscript>2</subscript></entry>
3754 <entry>v<subscript>1</subscript></entry>
3755 <entry>v<subscript>0</subscript></entry>
3756 </row>
3757 <row id="MEDIA-BUS-FMT-AYUV8-1X32">
3758 <entry>MEDIA_BUS_FMT_AYUV8_1X32</entry>
3759 <entry>0x2017</entry>
3760 <entry></entry>
3761 <entry>a<subscript>7</subscript></entry>
3762 <entry>a<subscript>6</subscript></entry>
3763 <entry>a<subscript>5</subscript></entry>
3764 <entry>a<subscript>4</subscript></entry>
3765 <entry>a<subscript>3</subscript></entry>
3766 <entry>a<subscript>2</subscript></entry>
3767 <entry>a<subscript>1</subscript></entry>
3768 <entry>a<subscript>0</subscript></entry>
3769 <entry>y<subscript>7</subscript></entry>
3770 <entry>y<subscript>6</subscript></entry>
3771 <entry>y<subscript>5</subscript></entry>
3772 <entry>y<subscript>4</subscript></entry>
3773 <entry>y<subscript>3</subscript></entry>
3774 <entry>y<subscript>2</subscript></entry>
3775 <entry>y<subscript>1</subscript></entry>
3776 <entry>y<subscript>0</subscript></entry>
3777 <entry>u<subscript>7</subscript></entry>
3778 <entry>u<subscript>6</subscript></entry>
3779 <entry>u<subscript>5</subscript></entry>
3780 <entry>u<subscript>4</subscript></entry>
3781 <entry>u<subscript>3</subscript></entry>
3782 <entry>u<subscript>2</subscript></entry>
3783 <entry>u<subscript>1</subscript></entry>
3784 <entry>u<subscript>0</subscript></entry>
3785 <entry>v<subscript>7</subscript></entry>
3786 <entry>v<subscript>6</subscript></entry>
3787 <entry>v<subscript>5</subscript></entry>
3788 <entry>v<subscript>4</subscript></entry>
3789 <entry>v<subscript>3</subscript></entry>
3790 <entry>v<subscript>2</subscript></entry>
3791 <entry>v<subscript>1</subscript></entry>
3792 <entry>v<subscript>0</subscript></entry>
3793 </row>
3794 </tbody>
3795 </tgroup>
3796 </table>
3797 </section>
3798
3799 <section>
3800 <title>HSV/HSL Formats</title>
3801
3802 <para>Those formats transfer pixel data as RGB values in a cylindrical-coordinate
3803 system using Hue-Saturation-Value or Hue-Saturation-Lightness components. The
3804 format code is made of the following information.
3805 <itemizedlist>
3806 <listitem><para>The hue, saturation, value or lightness and optional alpha
3807 components order code, as encoded in a pixel sample. The only currently
3808 supported value is AHSV.
3809 </para></listitem>
3810 <listitem><para>The number of bits per component, for each component. The values
3811 can be different for all components. The only currently supported value is 8888.
3812 </para></listitem>
3813 <listitem><para>The number of bus samples per pixel. Pixels that are wider than
3814 the bus width must be transferred in multiple samples. The only currently
3815 supported value is 1.</para></listitem>
3816 <listitem><para>The bus width.</para></listitem>
3817 <listitem><para>For formats where the total number of bits per pixel is smaller
3818 than the number of bus samples per pixel times the bus width, a padding
3819 value stating if the bytes are padded in their most high order bits
3820 (PADHI) or low order bits (PADLO).</para></listitem>
3821 <listitem><para>For formats where the number of bus samples per pixel is larger
3822 than 1, an endianness value stating if the pixel is transferred MSB first
3823 (BE) or LSB first (LE).</para></listitem>
3824 </itemizedlist>
3825 </para>
3826
3827 <para>The following table lists existing HSV/HSL formats.</para>
3828
3829 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-hsv">
3830 <title>HSV/HSL formats</title>
3831 <tgroup cols="27">
3832 <colspec colname="id" align="left" />
3833 <colspec colname="code" align="center"/>
3834 <colspec colname="bit" />
3835 <colspec colnum="4" colname="b31" align="center" />
3836 <colspec colnum="5" colname="b20" align="center" />
3837 <colspec colnum="6" colname="b29" align="center" />
3838 <colspec colnum="7" colname="b28" align="center" />
3839 <colspec colnum="8" colname="b27" align="center" />
3840 <colspec colnum="9" colname="b26" align="center" />
3841 <colspec colnum="10" colname="b25" align="center" />
3842 <colspec colnum="11" colname="b24" align="center" />
3843 <colspec colnum="12" colname="b23" align="center" />
3844 <colspec colnum="13" colname="b22" align="center" />
3845 <colspec colnum="14" colname="b21" align="center" />
3846 <colspec colnum="15" colname="b20" align="center" />
3847 <colspec colnum="16" colname="b19" align="center" />
3848 <colspec colnum="17" colname="b18" align="center" />
3849 <colspec colnum="18" colname="b17" align="center" />
3850 <colspec colnum="19" colname="b16" align="center" />
3851 <colspec colnum="20" colname="b15" align="center" />
3852 <colspec colnum="21" colname="b14" align="center" />
3853 <colspec colnum="22" colname="b13" align="center" />
3854 <colspec colnum="23" colname="b12" align="center" />
3855 <colspec colnum="24" colname="b11" align="center" />
3856 <colspec colnum="25" colname="b10" align="center" />
3857 <colspec colnum="26" colname="b09" align="center" />
3858 <colspec colnum="27" colname="b08" align="center" />
3859 <colspec colnum="28" colname="b07" align="center" />
3860 <colspec colnum="29" colname="b06" align="center" />
3861 <colspec colnum="30" colname="b05" align="center" />
3862 <colspec colnum="31" colname="b04" align="center" />
3863 <colspec colnum="32" colname="b03" align="center" />
3864 <colspec colnum="33" colname="b02" align="center" />
3865 <colspec colnum="34" colname="b01" align="center" />
3866 <colspec colnum="35" colname="b00" align="center" />
3867 <spanspec namest="b31" nameend="b00" spanname="b0" />
3868 <thead>
3869 <row>
3870 <entry>Identifier</entry>
3871 <entry>Code</entry>
3872 <entry></entry>
3873 <entry spanname="b0">Data organization</entry>
3874 </row>
3875 <row>
3876 <entry></entry>
3877 <entry></entry>
3878 <entry>Bit</entry>
3879 <entry>31</entry>
3880 <entry>30</entry>
3881 <entry>29</entry>
3882 <entry>28</entry>
3883 <entry>27</entry>
3884 <entry>26</entry>
3885 <entry>25</entry>
3886 <entry>24</entry>
3887 <entry>23</entry>
3888 <entry>22</entry>
3889 <entry>21</entry>
3890 <entry>20</entry>
3891 <entry>19</entry>
3892 <entry>18</entry>
3893 <entry>17</entry>
3894 <entry>16</entry>
3895 <entry>15</entry>
3896 <entry>14</entry>
3897 <entry>13</entry>
3898 <entry>12</entry>
3899 <entry>11</entry>
3900 <entry>10</entry>
3901 <entry>9</entry>
3902 <entry>8</entry>
3903 <entry>7</entry>
3904 <entry>6</entry>
3905 <entry>5</entry>
3906 <entry>4</entry>
3907 <entry>3</entry>
3908 <entry>2</entry>
3909 <entry>1</entry>
3910 <entry>0</entry>
3911 </row>
3912 </thead>
3913 <tbody valign="top">
3914 <row id="MEDIA-BUS-FMT-AHSV8888-1X32">
3915 <entry>MEDIA_BUS_FMT_AHSV8888_1X32</entry>
3916 <entry>0x6001</entry>
3917 <entry></entry>
3918 <entry>a<subscript>7</subscript></entry>
3919 <entry>a<subscript>6</subscript></entry>
3920 <entry>a<subscript>5</subscript></entry>
3921 <entry>a<subscript>4</subscript></entry>
3922 <entry>a<subscript>3</subscript></entry>
3923 <entry>a<subscript>2</subscript></entry>
3924 <entry>a<subscript>1</subscript></entry>
3925 <entry>a<subscript>0</subscript></entry>
3926 <entry>h<subscript>7</subscript></entry>
3927 <entry>h<subscript>6</subscript></entry>
3928 <entry>h<subscript>5</subscript></entry>
3929 <entry>h<subscript>4</subscript></entry>
3930 <entry>h<subscript>3</subscript></entry>
3931 <entry>h<subscript>2</subscript></entry>
3932 <entry>h<subscript>1</subscript></entry>
3933 <entry>h<subscript>0</subscript></entry>
3934 <entry>s<subscript>7</subscript></entry>
3935 <entry>s<subscript>6</subscript></entry>
3936 <entry>s<subscript>5</subscript></entry>
3937 <entry>s<subscript>4</subscript></entry>
3938 <entry>s<subscript>3</subscript></entry>
3939 <entry>s<subscript>2</subscript></entry>
3940 <entry>s<subscript>1</subscript></entry>
3941 <entry>s<subscript>0</subscript></entry>
3942 <entry>v<subscript>7</subscript></entry>
3943 <entry>v<subscript>6</subscript></entry>
3944 <entry>v<subscript>5</subscript></entry>
3945 <entry>v<subscript>4</subscript></entry>
3946 <entry>v<subscript>3</subscript></entry>
3947 <entry>v<subscript>2</subscript></entry>
3948 <entry>v<subscript>1</subscript></entry>
3949 <entry>v<subscript>0</subscript></entry>
3950 </row>
3951 </tbody>
3952 </tgroup>
3953 </table>
3954 </section>
3955
3956 <section>
3957 <title>JPEG Compressed Formats</title>
3958
3959 <para>Those data formats consist of an ordered sequence of 8-bit bytes
3960 obtained from JPEG compression process. Additionally to the
3961 <constant>_JPEG</constant> postfix the format code is made of
3962 the following information.
3963 <itemizedlist>
3964 <listitem><para>The number of bus samples per entropy encoded byte.</para></listitem>
3965 <listitem><para>The bus width.</para></listitem>
3966 </itemizedlist>
3967 </para>
3968
3969 <para>For instance, for a JPEG baseline process and an 8-bit bus width
3970 the format will be named <constant>MEDIA_BUS_FMT_JPEG_1X8</constant>.
3971 </para>
3972
3973 <para>The following table lists existing JPEG compressed formats.</para>
3974
3975 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-jpeg">
3976 <title>JPEG Formats</title>
3977 <tgroup cols="3">
3978 <colspec colname="id" align="left" />
3979 <colspec colname="code" align="left"/>
3980 <colspec colname="remarks" align="left"/>
3981 <thead>
3982 <row>
3983 <entry>Identifier</entry>
3984 <entry>Code</entry>
3985 <entry>Remarks</entry>
3986 </row>
3987 </thead>
3988 <tbody valign="top">
3989 <row id="MEDIA-BUS-FMT-JPEG-1X8">
3990 <entry>MEDIA_BUS_FMT_JPEG_1X8</entry>
3991 <entry>0x4001</entry>
3992 <entry>Besides of its usage for the parallel bus this format is
3993 recommended for transmission of JPEG data over MIPI CSI bus
3994 using the User Defined 8-bit Data types.
3995 </entry>
3996 </row>
3997 </tbody>
3998 </tgroup>
3999 </table>
4000 </section>
4001
4002 <section id="v4l2-mbus-vendor-spec-fmts">
4003 <title>Vendor and Device Specific Formats</title>
4004
4005 <para>This section lists complex data formats that are either vendor or
4006 device specific.
4007 </para>
4008
4009 <para>The following table lists the existing vendor and device specific
4010 formats.</para>
4011
4012 <table pgwide="0" frame="none" id="v4l2-mbus-pixelcode-vendor-specific">
4013 <title>Vendor and device specific formats</title>
4014 <tgroup cols="3">
4015 <colspec colname="id" align="left" />
4016 <colspec colname="code" align="left"/>
4017 <colspec colname="remarks" align="left"/>
4018 <thead>
4019 <row>
4020 <entry>Identifier</entry>
4021 <entry>Code</entry>
4022 <entry>Comments</entry>
4023 </row>
4024 </thead>
4025 <tbody valign="top">
4026 <row id="MEDIA-BUS-FMT-S5C-UYVY-JPEG-1X8">
4027 <entry>MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8</entry>
4028 <entry>0x5001</entry>
4029 <entry>
4030 Interleaved raw UYVY and JPEG image format with embedded
4031 meta-data used by Samsung S3C73MX camera sensors.
4032 </entry>
4033 </row>
4034 </tbody>
4035 </tgroup>
4036 </table>
4037 </section>
4038
4039 </section>
4040</section>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia
deleted file mode 100644
index e32ba5362e1d..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia
+++ /dev/null
@@ -1,614 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#A4#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.8222000598907471"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.8222000598907471"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.8222000598907471"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.8222000598907471"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="false"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="0.49000000953674316"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true" active="true">
66 <dia:object type="Standard - Box" version="0" id="O0">
67 <dia:attribute name="obj_pos">
68 <dia:point val="-0.4,6.5"/>
69 </dia:attribute>
70 <dia:attribute name="obj_bb">
71 <dia:rectangle val="-0.45,6.45;23.1387,16.2"/>
72 </dia:attribute>
73 <dia:attribute name="elem_corner">
74 <dia:point val="-0.4,6.5"/>
75 </dia:attribute>
76 <dia:attribute name="elem_width">
77 <dia:real val="23.48871579904775"/>
78 </dia:attribute>
79 <dia:attribute name="elem_height">
80 <dia:real val="9.6500000000000004"/>
81 </dia:attribute>
82 <dia:attribute name="border_width">
83 <dia:real val="0.10000000149011612"/>
84 </dia:attribute>
85 <dia:attribute name="show_background">
86 <dia:boolean val="false"/>
87 </dia:attribute>
88 </dia:object>
89 <dia:object type="Standard - Box" version="0" id="O1">
90 <dia:attribute name="obj_pos">
91 <dia:point val="0.225,9.45"/>
92 </dia:attribute>
93 <dia:attribute name="obj_bb">
94 <dia:rectangle val="0.175,9.4;8.225,14.7"/>
95 </dia:attribute>
96 <dia:attribute name="elem_corner">
97 <dia:point val="0.225,9.45"/>
98 </dia:attribute>
99 <dia:attribute name="elem_width">
100 <dia:real val="7.9499999999999975"/>
101 </dia:attribute>
102 <dia:attribute name="elem_height">
103 <dia:real val="5.1999999999999975"/>
104 </dia:attribute>
105 <dia:attribute name="border_width">
106 <dia:real val="0.10000000149011612"/>
107 </dia:attribute>
108 <dia:attribute name="border_color">
109 <dia:color val="#a52a2a"/>
110 </dia:attribute>
111 <dia:attribute name="show_background">
112 <dia:boolean val="true"/>
113 </dia:attribute>
114 </dia:object>
115 <dia:object type="Standard - Box" version="0" id="O2">
116 <dia:attribute name="obj_pos">
117 <dia:point val="3.175,10.55"/>
118 </dia:attribute>
119 <dia:attribute name="obj_bb">
120 <dia:rectangle val="3.125,10.5;7.925,14.45"/>
121 </dia:attribute>
122 <dia:attribute name="elem_corner">
123 <dia:point val="3.175,10.55"/>
124 </dia:attribute>
125 <dia:attribute name="elem_width">
126 <dia:real val="4.6999999999999975"/>
127 </dia:attribute>
128 <dia:attribute name="elem_height">
129 <dia:real val="3.8499999999999979"/>
130 </dia:attribute>
131 <dia:attribute name="border_width">
132 <dia:real val="0.10000000149011612"/>
133 </dia:attribute>
134 <dia:attribute name="border_color">
135 <dia:color val="#0000ff"/>
136 </dia:attribute>
137 <dia:attribute name="show_background">
138 <dia:boolean val="true"/>
139 </dia:attribute>
140 </dia:object>
141 <dia:object type="Standard - Text" version="1" id="O3">
142 <dia:attribute name="obj_pos">
143 <dia:point val="3.725,11.3875"/>
144 </dia:attribute>
145 <dia:attribute name="obj_bb">
146 <dia:rectangle val="3.725,10.7925;6.6025,13.14"/>
147 </dia:attribute>
148 <dia:attribute name="text">
149 <dia:composite type="text">
150 <dia:attribute name="string">
151 <dia:string>#sink
152crop
153selection#</dia:string>
154 </dia:attribute>
155 <dia:attribute name="font">
156 <dia:font family="sans" style="0" name="Helvetica"/>
157 </dia:attribute>
158 <dia:attribute name="height">
159 <dia:real val="0.80000000000000004"/>
160 </dia:attribute>
161 <dia:attribute name="pos">
162 <dia:point val="3.725,11.3875"/>
163 </dia:attribute>
164 <dia:attribute name="color">
165 <dia:color val="#0000ff"/>
166 </dia:attribute>
167 <dia:attribute name="alignment">
168 <dia:enum val="0"/>
169 </dia:attribute>
170 </dia:composite>
171 </dia:attribute>
172 <dia:attribute name="valign">
173 <dia:enum val="3"/>
174 </dia:attribute>
175 </dia:object>
176 <dia:object type="Standard - Text" version="1" id="O4">
177 <dia:attribute name="obj_pos">
178 <dia:point val="1.475,7.9"/>
179 </dia:attribute>
180 <dia:attribute name="obj_bb">
181 <dia:rectangle val="1.475,7.305;1.475,8.0525"/>
182 </dia:attribute>
183 <dia:attribute name="text">
184 <dia:composite type="text">
185 <dia:attribute name="string">
186 <dia:string>##</dia:string>
187 </dia:attribute>
188 <dia:attribute name="font">
189 <dia:font family="sans" style="0" name="Helvetica"/>
190 </dia:attribute>
191 <dia:attribute name="height">
192 <dia:real val="0.80000000000000004"/>
193 </dia:attribute>
194 <dia:attribute name="pos">
195 <dia:point val="1.475,7.9"/>
196 </dia:attribute>
197 <dia:attribute name="color">
198 <dia:color val="#000000"/>
199 </dia:attribute>
200 <dia:attribute name="alignment">
201 <dia:enum val="0"/>
202 </dia:attribute>
203 </dia:composite>
204 </dia:attribute>
205 <dia:attribute name="valign">
206 <dia:enum val="3"/>
207 </dia:attribute>
208 </dia:object>
209 <dia:object type="Standard - Text" version="1" id="O5">
210 <dia:attribute name="obj_pos">
211 <dia:point val="0.426918,7.89569"/>
212 </dia:attribute>
213 <dia:attribute name="obj_bb">
214 <dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/>
215 </dia:attribute>
216 <dia:attribute name="text">
217 <dia:composite type="text">
218 <dia:attribute name="string">
219 <dia:string>#sink media
220bus format#</dia:string>
221 </dia:attribute>
222 <dia:attribute name="font">
223 <dia:font family="sans" style="0" name="Helvetica"/>
224 </dia:attribute>
225 <dia:attribute name="height">
226 <dia:real val="0.80000000000000004"/>
227 </dia:attribute>
228 <dia:attribute name="pos">
229 <dia:point val="0.426918,7.89569"/>
230 </dia:attribute>
231 <dia:attribute name="color">
232 <dia:color val="#a52a2a"/>
233 </dia:attribute>
234 <dia:attribute name="alignment">
235 <dia:enum val="0"/>
236 </dia:attribute>
237 </dia:composite>
238 </dia:attribute>
239 <dia:attribute name="valign">
240 <dia:enum val="3"/>
241 </dia:attribute>
242 </dia:object>
243 <dia:object type="Standard - Text" version="1" id="O6">
244 <dia:attribute name="obj_pos">
245 <dia:point val="17.4887,7.75"/>
246 </dia:attribute>
247 <dia:attribute name="obj_bb">
248 <dia:rectangle val="17.4887,7.155;21.8112,8.7025"/>
249 </dia:attribute>
250 <dia:attribute name="text">
251 <dia:composite type="text">
252 <dia:attribute name="string">
253 <dia:string>#source media
254bus format#</dia:string>
255 </dia:attribute>
256 <dia:attribute name="font">
257 <dia:font family="sans" style="0" name="Helvetica"/>
258 </dia:attribute>
259 <dia:attribute name="height">
260 <dia:real val="0.80000000000000004"/>
261 </dia:attribute>
262 <dia:attribute name="pos">
263 <dia:point val="17.4887,7.75"/>
264 </dia:attribute>
265 <dia:attribute name="color">
266 <dia:color val="#8b6914"/>
267 </dia:attribute>
268 <dia:attribute name="alignment">
269 <dia:enum val="0"/>
270 </dia:attribute>
271 </dia:composite>
272 </dia:attribute>
273 <dia:attribute name="valign">
274 <dia:enum val="3"/>
275 </dia:attribute>
276 </dia:object>
277 <dia:object type="Standard - Box" version="0" id="O7">
278 <dia:attribute name="obj_pos">
279 <dia:point val="17.5244,9.5417"/>
280 </dia:attribute>
281 <dia:attribute name="obj_bb">
282 <dia:rectangle val="17.4744,9.4917;22.2387,13.35"/>
283 </dia:attribute>
284 <dia:attribute name="elem_corner">
285 <dia:point val="17.5244,9.5417"/>
286 </dia:attribute>
287 <dia:attribute name="elem_width">
288 <dia:real val="4.6643157990477508"/>
289 </dia:attribute>
290 <dia:attribute name="elem_height">
291 <dia:real val="3.758300000000002"/>
292 </dia:attribute>
293 <dia:attribute name="border_width">
294 <dia:real val="0.10000000149011612"/>
295 </dia:attribute>
296 <dia:attribute name="border_color">
297 <dia:color val="#8b6914"/>
298 </dia:attribute>
299 <dia:attribute name="show_background">
300 <dia:boolean val="true"/>
301 </dia:attribute>
302 </dia:object>
303 <dia:object type="Standard - Line" version="0" id="O8">
304 <dia:attribute name="obj_pos">
305 <dia:point val="17.5244,13.3"/>
306 </dia:attribute>
307 <dia:attribute name="obj_bb">
308 <dia:rectangle val="3.12132,13.2463;17.5781,14.4537"/>
309 </dia:attribute>
310 <dia:attribute name="conn_endpoints">
311 <dia:point val="17.5244,13.3"/>
312 <dia:point val="3.175,14.4"/>
313 </dia:attribute>
314 <dia:attribute name="numcp">
315 <dia:int val="1"/>
316 </dia:attribute>
317 <dia:attribute name="line_color">
318 <dia:color val="#e60505"/>
319 </dia:attribute>
320 <dia:attribute name="line_style">
321 <dia:enum val="4"/>
322 </dia:attribute>
323 <dia:connections>
324 <dia:connection handle="0" to="O7" connection="5"/>
325 <dia:connection handle="1" to="O2" connection="5"/>
326 </dia:connections>
327 </dia:object>
328 <dia:object type="Standard - Line" version="0" id="O9">
329 <dia:attribute name="obj_pos">
330 <dia:point val="17.5244,9.5417"/>
331 </dia:attribute>
332 <dia:attribute name="obj_bb">
333 <dia:rectangle val="3.12162,9.48832;17.5778,10.6034"/>
334 </dia:attribute>
335 <dia:attribute name="conn_endpoints">
336 <dia:point val="17.5244,9.5417"/>
337 <dia:point val="3.175,10.55"/>
338 </dia:attribute>
339 <dia:attribute name="numcp">
340 <dia:int val="1"/>
341 </dia:attribute>
342 <dia:attribute name="line_color">
343 <dia:color val="#e60505"/>
344 </dia:attribute>
345 <dia:attribute name="line_style">
346 <dia:enum val="4"/>
347 </dia:attribute>
348 <dia:connections>
349 <dia:connection handle="0" to="O7" connection="0"/>
350 <dia:connection handle="1" to="O2" connection="0"/>
351 </dia:connections>
352 </dia:object>
353 <dia:object type="Standard - Line" version="0" id="O10">
354 <dia:attribute name="obj_pos">
355 <dia:point val="22.1887,13.3"/>
356 </dia:attribute>
357 <dia:attribute name="obj_bb">
358 <dia:rectangle val="7.82132,13.2463;22.2424,14.4537"/>
359 </dia:attribute>
360 <dia:attribute name="conn_endpoints">
361 <dia:point val="22.1887,13.3"/>
362 <dia:point val="7.875,14.4"/>
363 </dia:attribute>
364 <dia:attribute name="numcp">
365 <dia:int val="1"/>
366 </dia:attribute>
367 <dia:attribute name="line_color">
368 <dia:color val="#e60505"/>
369 </dia:attribute>
370 <dia:attribute name="line_style">
371 <dia:enum val="4"/>
372 </dia:attribute>
373 <dia:connections>
374 <dia:connection handle="0" to="O7" connection="7"/>
375 <dia:connection handle="1" to="O2" connection="7"/>
376 </dia:connections>
377 </dia:object>
378 <dia:object type="Standard - Line" version="0" id="O11">
379 <dia:attribute name="obj_pos">
380 <dia:point val="22.1887,9.5417"/>
381 </dia:attribute>
382 <dia:attribute name="obj_bb">
383 <dia:rectangle val="7.82161,9.48831;22.2421,10.6034"/>
384 </dia:attribute>
385 <dia:attribute name="conn_endpoints">
386 <dia:point val="22.1887,9.5417"/>
387 <dia:point val="7.875,10.55"/>
388 </dia:attribute>
389 <dia:attribute name="numcp">
390 <dia:int val="1"/>
391 </dia:attribute>
392 <dia:attribute name="line_color">
393 <dia:color val="#e60505"/>
394 </dia:attribute>
395 <dia:attribute name="line_style">
396 <dia:enum val="4"/>
397 </dia:attribute>
398 <dia:connections>
399 <dia:connection handle="0" to="O7" connection="2"/>
400 <dia:connection handle="1" to="O2" connection="2"/>
401 </dia:connections>
402 </dia:object>
403 <dia:object type="Geometric - Perfect Circle" version="1" id="O12">
404 <dia:attribute name="obj_pos">
405 <dia:point val="23.23,10.5742"/>
406 </dia:attribute>
407 <dia:attribute name="obj_bb">
408 <dia:rectangle val="23.18,10.5242;24.13,11.4742"/>
409 </dia:attribute>
410 <dia:attribute name="meta">
411 <dia:composite type="dict"/>
412 </dia:attribute>
413 <dia:attribute name="elem_corner">
414 <dia:point val="23.23,10.5742"/>
415 </dia:attribute>
416 <dia:attribute name="elem_width">
417 <dia:real val="0.84999999999999787"/>
418 </dia:attribute>
419 <dia:attribute name="elem_height">
420 <dia:real val="0.84999999999999787"/>
421 </dia:attribute>
422 <dia:attribute name="line_width">
423 <dia:real val="0.10000000000000001"/>
424 </dia:attribute>
425 <dia:attribute name="line_colour">
426 <dia:color val="#000000"/>
427 </dia:attribute>
428 <dia:attribute name="fill_colour">
429 <dia:color val="#ffffff"/>
430 </dia:attribute>
431 <dia:attribute name="show_background">
432 <dia:boolean val="true"/>
433 </dia:attribute>
434 <dia:attribute name="line_style">
435 <dia:enum val="0"/>
436 <dia:real val="1"/>
437 </dia:attribute>
438 <dia:attribute name="flip_horizontal">
439 <dia:boolean val="false"/>
440 </dia:attribute>
441 <dia:attribute name="flip_vertical">
442 <dia:boolean val="false"/>
443 </dia:attribute>
444 <dia:attribute name="subscale">
445 <dia:real val="1"/>
446 </dia:attribute>
447 </dia:object>
448 <dia:object type="Standard - Line" version="0" id="O13">
449 <dia:attribute name="obj_pos">
450 <dia:point val="24.08,10.9992"/>
451 </dia:attribute>
452 <dia:attribute name="obj_bb">
453 <dia:rectangle val="24.03,10.6388;32.4953,11.3624"/>
454 </dia:attribute>
455 <dia:attribute name="conn_endpoints">
456 <dia:point val="24.08,10.9992"/>
457 <dia:point val="32.3835,11.0007"/>
458 </dia:attribute>
459 <dia:attribute name="numcp">
460 <dia:int val="1"/>
461 </dia:attribute>
462 <dia:attribute name="end_arrow">
463 <dia:enum val="22"/>
464 </dia:attribute>
465 <dia:attribute name="end_arrow_length">
466 <dia:real val="0.5"/>
467 </dia:attribute>
468 <dia:attribute name="end_arrow_width">
469 <dia:real val="0.5"/>
470 </dia:attribute>
471 <dia:connections>
472 <dia:connection handle="0" to="O12" connection="3"/>
473 </dia:connections>
474 </dia:object>
475 <dia:object type="Standard - Text" version="1" id="O14">
476 <dia:attribute name="obj_pos">
477 <dia:point val="25.3454,10.49"/>
478 </dia:attribute>
479 <dia:attribute name="obj_bb">
480 <dia:rectangle val="25.3454,9.895;29.9904,10.6425"/>
481 </dia:attribute>
482 <dia:attribute name="text">
483 <dia:composite type="text">
484 <dia:attribute name="string">
485 <dia:string>#pad 1 (source)#</dia:string>
486 </dia:attribute>
487 <dia:attribute name="font">
488 <dia:font family="sans" style="0" name="Helvetica"/>
489 </dia:attribute>
490 <dia:attribute name="height">
491 <dia:real val="0.80000000000000004"/>
492 </dia:attribute>
493 <dia:attribute name="pos">
494 <dia:point val="25.3454,10.49"/>
495 </dia:attribute>
496 <dia:attribute name="color">
497 <dia:color val="#000000"/>
498 </dia:attribute>
499 <dia:attribute name="alignment">
500 <dia:enum val="0"/>
501 </dia:attribute>
502 </dia:composite>
503 </dia:attribute>
504 <dia:attribute name="valign">
505 <dia:enum val="3"/>
506 </dia:attribute>
507 </dia:object>
508 <dia:object type="Geometric - Perfect Circle" version="1" id="O15">
509 <dia:attribute name="obj_pos">
510 <dia:point val="-1.44491,11.6506"/>
511 </dia:attribute>
512 <dia:attribute name="obj_bb">
513 <dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/>
514 </dia:attribute>
515 <dia:attribute name="meta">
516 <dia:composite type="dict"/>
517 </dia:attribute>
518 <dia:attribute name="elem_corner">
519 <dia:point val="-1.44491,11.6506"/>
520 </dia:attribute>
521 <dia:attribute name="elem_width">
522 <dia:real val="0.84999999999999787"/>
523 </dia:attribute>
524 <dia:attribute name="elem_height">
525 <dia:real val="0.84999999999999787"/>
526 </dia:attribute>
527 <dia:attribute name="line_width">
528 <dia:real val="0.10000000000000001"/>
529 </dia:attribute>
530 <dia:attribute name="line_colour">
531 <dia:color val="#000000"/>
532 </dia:attribute>
533 <dia:attribute name="fill_colour">
534 <dia:color val="#ffffff"/>
535 </dia:attribute>
536 <dia:attribute name="show_background">
537 <dia:boolean val="true"/>
538 </dia:attribute>
539 <dia:attribute name="line_style">
540 <dia:enum val="0"/>
541 <dia:real val="1"/>
542 </dia:attribute>
543 <dia:attribute name="flip_horizontal">
544 <dia:boolean val="false"/>
545 </dia:attribute>
546 <dia:attribute name="flip_vertical">
547 <dia:boolean val="false"/>
548 </dia:attribute>
549 <dia:attribute name="subscale">
550 <dia:real val="1"/>
551 </dia:attribute>
552 </dia:object>
553 <dia:object type="Standard - Line" version="0" id="O16">
554 <dia:attribute name="obj_pos">
555 <dia:point val="-9.61991,12.09"/>
556 </dia:attribute>
557 <dia:attribute name="obj_bb">
558 <dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/>
559 </dia:attribute>
560 <dia:attribute name="conn_endpoints">
561 <dia:point val="-9.61991,12.09"/>
562 <dia:point val="-1.44491,12.0756"/>
563 </dia:attribute>
564 <dia:attribute name="numcp">
565 <dia:int val="1"/>
566 </dia:attribute>
567 <dia:attribute name="end_arrow">
568 <dia:enum val="22"/>
569 </dia:attribute>
570 <dia:attribute name="end_arrow_length">
571 <dia:real val="0.5"/>
572 </dia:attribute>
573 <dia:attribute name="end_arrow_width">
574 <dia:real val="0.5"/>
575 </dia:attribute>
576 <dia:connections>
577 <dia:connection handle="1" to="O15" connection="2"/>
578 </dia:connections>
579 </dia:object>
580 <dia:object type="Standard - Text" version="1" id="O17">
581 <dia:attribute name="obj_pos">
582 <dia:point val="-7.39291,11.49"/>
583 </dia:attribute>
584 <dia:attribute name="obj_bb">
585 <dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/>
586 </dia:attribute>
587 <dia:attribute name="text">
588 <dia:composite type="text">
589 <dia:attribute name="string">
590 <dia:string>#pad 0 (sink)#</dia:string>
591 </dia:attribute>
592 <dia:attribute name="font">
593 <dia:font family="sans" style="0" name="Helvetica"/>
594 </dia:attribute>
595 <dia:attribute name="height">
596 <dia:real val="0.80000000000000004"/>
597 </dia:attribute>
598 <dia:attribute name="pos">
599 <dia:point val="-7.39291,11.49"/>
600 </dia:attribute>
601 <dia:attribute name="color">
602 <dia:color val="#000000"/>
603 </dia:attribute>
604 <dia:attribute name="alignment">
605 <dia:enum val="0"/>
606 </dia:attribute>
607 </dia:composite>
608 </dia:attribute>
609 <dia:attribute name="valign">
610 <dia:enum val="3"/>
611 </dia:attribute>
612 </dia:object>
613 </dia:layer>
614</dia:diagram>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg
deleted file mode 100644
index 18b0f5de9ed2..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg
+++ /dev/null
@@ -1,63 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
3<svg width="43cm" height="10cm" viewBox="-194 128 844 196" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="469.774" height="193"/>
5 <g>
6 <rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/>
7 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/>
8 </g>
9 <g>
10 <rect style="fill: #ffffff" x="63.5" y="211" width="94" height="77"/>
11 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="63.5" y="211" width="94" height="77"/>
12 </g>
13 <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="74.5" y="227.75">
14 <tspan x="74.5" y="227.75">sink</tspan>
15 <tspan x="74.5" y="243.75">crop</tspan>
16 <tspan x="74.5" y="259.75">selection</tspan>
17 </text>
18 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158">
19 <tspan x="29.5" y="158"></tspan>
20 </text>
21 <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914">
22 <tspan x="8.53836" y="157.914">sink media</tspan>
23 <tspan x="8.53836" y="173.914">bus format</tspan>
24 </text>
25 <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="349.774" y="155">
26 <tspan x="349.774" y="155">source media</tspan>
27 <tspan x="349.774" y="171">bus format</tspan>
28 </text>
29 <g>
30 <rect style="fill: #ffffff" x="350.488" y="190.834" width="93.2863" height="75.166"/>
31 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="350.488" y="190.834" width="93.2863" height="75.166"/>
32 </g>
33 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="266" x2="63.5" y2="288"/>
34 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="350.488" y1="190.834" x2="63.5" y2="211"/>
35 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="266" x2="157.5" y2="288"/>
36 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="443.774" y1="190.834" x2="157.5" y2="211"/>
37 <g>
38 <ellipse style="fill: #ffffff" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
39 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
40 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="473.1" cy="219.984" rx="8.5" ry="8.5"/>
41 </g>
42 <g>
43 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="481.6" y1="219.984" x2="637.934" y2="220.012"/>
44 <polygon style="fill: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/>
45 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="645.434,220.014 635.433,225.012 637.934,220.012 635.435,215.012 "/>
46 </g>
47 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="506.908" y="209.8">
48 <tspan x="506.908" y="209.8">pad 1 (source)</tspan>
49 </text>
50 <g>
51 <ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
52 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
53 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
54 </g>
55 <g>
56 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/>
57 <polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
58 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
59 </g>
60 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8">
61 <tspan x="-147.858" y="229.8">pad 0 (sink)</tspan>
62 </text>
63</svg>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia
deleted file mode 100644
index a0d782927840..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia
+++ /dev/null
@@ -1,1588 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#A4#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.8222000598907471"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.8222000598907471"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.8222000598907471"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.8222000598907471"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="false"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="0.49000000953674316"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true" active="true">
66 <dia:object type="Standard - Box" version="0" id="O0">
67 <dia:attribute name="obj_pos">
68 <dia:point val="15.945,6.45"/>
69 </dia:attribute>
70 <dia:attribute name="obj_bb">
71 <dia:rectangle val="15.895,6.4;26.4,18.95"/>
72 </dia:attribute>
73 <dia:attribute name="elem_corner">
74 <dia:point val="15.945,6.45"/>
75 </dia:attribute>
76 <dia:attribute name="elem_width">
77 <dia:real val="10.404999999254942"/>
78 </dia:attribute>
79 <dia:attribute name="elem_height">
80 <dia:real val="12.449999999999992"/>
81 </dia:attribute>
82 <dia:attribute name="border_width">
83 <dia:real val="0.10000000149011612"/>
84 </dia:attribute>
85 <dia:attribute name="border_color">
86 <dia:color val="#ff765a"/>
87 </dia:attribute>
88 <dia:attribute name="show_background">
89 <dia:boolean val="true"/>
90 </dia:attribute>
91 </dia:object>
92 <dia:object type="Standard - Box" version="0" id="O1">
93 <dia:attribute name="obj_pos">
94 <dia:point val="-0.1,3.65"/>
95 </dia:attribute>
96 <dia:attribute name="obj_bb">
97 <dia:rectangle val="-0.15,3.6;40.25,20.85"/>
98 </dia:attribute>
99 <dia:attribute name="elem_corner">
100 <dia:point val="-0.1,3.65"/>
101 </dia:attribute>
102 <dia:attribute name="elem_width">
103 <dia:real val="40.300000000000004"/>
104 </dia:attribute>
105 <dia:attribute name="elem_height">
106 <dia:real val="17.149999999999999"/>
107 </dia:attribute>
108 <dia:attribute name="border_width">
109 <dia:real val="0.10000000149011612"/>
110 </dia:attribute>
111 <dia:attribute name="show_background">
112 <dia:boolean val="false"/>
113 </dia:attribute>
114 </dia:object>
115 <dia:object type="Geometric - Perfect Circle" version="1" id="O2">
116 <dia:attribute name="obj_pos">
117 <dia:point val="-1.05,7.9106"/>
118 </dia:attribute>
119 <dia:attribute name="obj_bb">
120 <dia:rectangle val="-1.1,7.8606;-0.15,8.8106"/>
121 </dia:attribute>
122 <dia:attribute name="meta">
123 <dia:composite type="dict"/>
124 </dia:attribute>
125 <dia:attribute name="elem_corner">
126 <dia:point val="-1.05,7.9106"/>
127 </dia:attribute>
128 <dia:attribute name="elem_width">
129 <dia:real val="0.84999999999999787"/>
130 </dia:attribute>
131 <dia:attribute name="elem_height">
132 <dia:real val="0.84999999999999787"/>
133 </dia:attribute>
134 <dia:attribute name="line_width">
135 <dia:real val="0.10000000000000001"/>
136 </dia:attribute>
137 <dia:attribute name="line_colour">
138 <dia:color val="#000000"/>
139 </dia:attribute>
140 <dia:attribute name="fill_colour">
141 <dia:color val="#ffffff"/>
142 </dia:attribute>
143 <dia:attribute name="show_background">
144 <dia:boolean val="true"/>
145 </dia:attribute>
146 <dia:attribute name="line_style">
147 <dia:enum val="0"/>
148 <dia:real val="1"/>
149 </dia:attribute>
150 <dia:attribute name="flip_horizontal">
151 <dia:boolean val="false"/>
152 </dia:attribute>
153 <dia:attribute name="flip_vertical">
154 <dia:boolean val="false"/>
155 </dia:attribute>
156 <dia:attribute name="subscale">
157 <dia:real val="1"/>
158 </dia:attribute>
159 </dia:object>
160 <dia:object type="Geometric - Perfect Circle" version="1" id="O3">
161 <dia:attribute name="obj_pos">
162 <dia:point val="40.3366,9.8342"/>
163 </dia:attribute>
164 <dia:attribute name="obj_bb">
165 <dia:rectangle val="40.2866,9.7842;41.2366,10.7342"/>
166 </dia:attribute>
167 <dia:attribute name="meta">
168 <dia:composite type="dict"/>
169 </dia:attribute>
170 <dia:attribute name="elem_corner">
171 <dia:point val="40.3366,9.8342"/>
172 </dia:attribute>
173 <dia:attribute name="elem_width">
174 <dia:real val="0.84999999999999787"/>
175 </dia:attribute>
176 <dia:attribute name="elem_height">
177 <dia:real val="0.84999999999999787"/>
178 </dia:attribute>
179 <dia:attribute name="line_width">
180 <dia:real val="0.10000000000000001"/>
181 </dia:attribute>
182 <dia:attribute name="line_colour">
183 <dia:color val="#000000"/>
184 </dia:attribute>
185 <dia:attribute name="fill_colour">
186 <dia:color val="#ffffff"/>
187 </dia:attribute>
188 <dia:attribute name="show_background">
189 <dia:boolean val="true"/>
190 </dia:attribute>
191 <dia:attribute name="line_style">
192 <dia:enum val="0"/>
193 <dia:real val="1"/>
194 </dia:attribute>
195 <dia:attribute name="flip_horizontal">
196 <dia:boolean val="false"/>
197 </dia:attribute>
198 <dia:attribute name="flip_vertical">
199 <dia:boolean val="false"/>
200 </dia:attribute>
201 <dia:attribute name="subscale">
202 <dia:real val="1"/>
203 </dia:attribute>
204 </dia:object>
205 <dia:object type="Standard - Line" version="0" id="O4">
206 <dia:attribute name="obj_pos">
207 <dia:point val="-9.225,8.35"/>
208 </dia:attribute>
209 <dia:attribute name="obj_bb">
210 <dia:rectangle val="-9.27509,7.97487;-0.938197,8.69848"/>
211 </dia:attribute>
212 <dia:attribute name="conn_endpoints">
213 <dia:point val="-9.225,8.35"/>
214 <dia:point val="-1.05,8.3356"/>
215 </dia:attribute>
216 <dia:attribute name="numcp">
217 <dia:int val="1"/>
218 </dia:attribute>
219 <dia:attribute name="end_arrow">
220 <dia:enum val="22"/>
221 </dia:attribute>
222 <dia:attribute name="end_arrow_length">
223 <dia:real val="0.5"/>
224 </dia:attribute>
225 <dia:attribute name="end_arrow_width">
226 <dia:real val="0.5"/>
227 </dia:attribute>
228 <dia:connections>
229 <dia:connection handle="1" to="O2" connection="2"/>
230 </dia:connections>
231 </dia:object>
232 <dia:object type="Standard - Line" version="0" id="O5">
233 <dia:attribute name="obj_pos">
234 <dia:point val="41.1866,10.2592"/>
235 </dia:attribute>
236 <dia:attribute name="obj_bb">
237 <dia:rectangle val="41.1366,9.89879;49.6019,10.6224"/>
238 </dia:attribute>
239 <dia:attribute name="conn_endpoints">
240 <dia:point val="41.1866,10.2592"/>
241 <dia:point val="49.4901,10.2607"/>
242 </dia:attribute>
243 <dia:attribute name="numcp">
244 <dia:int val="1"/>
245 </dia:attribute>
246 <dia:attribute name="end_arrow">
247 <dia:enum val="22"/>
248 </dia:attribute>
249 <dia:attribute name="end_arrow_length">
250 <dia:real val="0.5"/>
251 </dia:attribute>
252 <dia:attribute name="end_arrow_width">
253 <dia:real val="0.5"/>
254 </dia:attribute>
255 <dia:connections>
256 <dia:connection handle="0" to="O3" connection="3"/>
257 </dia:connections>
258 </dia:object>
259 <dia:object type="Standard - Text" version="1" id="O6">
260 <dia:attribute name="obj_pos">
261 <dia:point val="-6.998,7.75"/>
262 </dia:attribute>
263 <dia:attribute name="obj_bb">
264 <dia:rectangle val="-6.998,7.155;-3.193,7.9025"/>
265 </dia:attribute>
266 <dia:attribute name="text">
267 <dia:composite type="text">
268 <dia:attribute name="string">
269 <dia:string>#pad 0 (sink)#</dia:string>
270 </dia:attribute>
271 <dia:attribute name="font">
272 <dia:font family="sans" style="0" name="Helvetica"/>
273 </dia:attribute>
274 <dia:attribute name="height">
275 <dia:real val="0.80000000000000004"/>
276 </dia:attribute>
277 <dia:attribute name="pos">
278 <dia:point val="-6.998,7.75"/>
279 </dia:attribute>
280 <dia:attribute name="color">
281 <dia:color val="#000000"/>
282 </dia:attribute>
283 <dia:attribute name="alignment">
284 <dia:enum val="0"/>
285 </dia:attribute>
286 </dia:composite>
287 </dia:attribute>
288 <dia:attribute name="valign">
289 <dia:enum val="3"/>
290 </dia:attribute>
291 </dia:object>
292 <dia:object type="Standard - Text" version="1" id="O7">
293 <dia:attribute name="obj_pos">
294 <dia:point val="42.452,9.75"/>
295 </dia:attribute>
296 <dia:attribute name="obj_bb">
297 <dia:rectangle val="42.452,9.155;47.097,9.9025"/>
298 </dia:attribute>
299 <dia:attribute name="text">
300 <dia:composite type="text">
301 <dia:attribute name="string">
302 <dia:string>#pad 2 (source)#</dia:string>
303 </dia:attribute>
304 <dia:attribute name="font">
305 <dia:font family="sans" style="0" name="Helvetica"/>
306 </dia:attribute>
307 <dia:attribute name="height">
308 <dia:real val="0.80000000000000004"/>
309 </dia:attribute>
310 <dia:attribute name="pos">
311 <dia:point val="42.452,9.75"/>
312 </dia:attribute>
313 <dia:attribute name="color">
314 <dia:color val="#000000"/>
315 </dia:attribute>
316 <dia:attribute name="alignment">
317 <dia:enum val="0"/>
318 </dia:attribute>
319 </dia:composite>
320 </dia:attribute>
321 <dia:attribute name="valign">
322 <dia:enum val="3"/>
323 </dia:attribute>
324 </dia:object>
325 <dia:object type="Standard - Box" version="0" id="O8">
326 <dia:attribute name="obj_pos">
327 <dia:point val="0.275,6"/>
328 </dia:attribute>
329 <dia:attribute name="obj_bb">
330 <dia:rectangle val="0.225,5.95;8.275,11.25"/>
331 </dia:attribute>
332 <dia:attribute name="elem_corner">
333 <dia:point val="0.275,6"/>
334 </dia:attribute>
335 <dia:attribute name="elem_width">
336 <dia:real val="7.9499999999999975"/>
337 </dia:attribute>
338 <dia:attribute name="elem_height">
339 <dia:real val="5.1999999999999975"/>
340 </dia:attribute>
341 <dia:attribute name="border_width">
342 <dia:real val="0.10000000149011612"/>
343 </dia:attribute>
344 <dia:attribute name="border_color">
345 <dia:color val="#a52a2a"/>
346 </dia:attribute>
347 <dia:attribute name="show_background">
348 <dia:boolean val="true"/>
349 </dia:attribute>
350 </dia:object>
351 <dia:object type="Standard - Box" version="0" id="O9">
352 <dia:attribute name="obj_pos">
353 <dia:point val="3.125,6.8"/>
354 </dia:attribute>
355 <dia:attribute name="obj_bb">
356 <dia:rectangle val="3.075,6.75;7.875,10.7"/>
357 </dia:attribute>
358 <dia:attribute name="elem_corner">
359 <dia:point val="3.125,6.8"/>
360 </dia:attribute>
361 <dia:attribute name="elem_width">
362 <dia:real val="4.6999999999999975"/>
363 </dia:attribute>
364 <dia:attribute name="elem_height">
365 <dia:real val="3.8499999999999979"/>
366 </dia:attribute>
367 <dia:attribute name="border_width">
368 <dia:real val="0.10000000149011612"/>
369 </dia:attribute>
370 <dia:attribute name="border_color">
371 <dia:color val="#0000ff"/>
372 </dia:attribute>
373 <dia:attribute name="show_background">
374 <dia:boolean val="true"/>
375 </dia:attribute>
376 </dia:object>
377 <dia:object type="Standard - Text" version="1" id="O10">
378 <dia:attribute name="obj_pos">
379 <dia:point val="1.525,4.45"/>
380 </dia:attribute>
381 <dia:attribute name="obj_bb">
382 <dia:rectangle val="1.525,3.855;1.525,4.6025"/>
383 </dia:attribute>
384 <dia:attribute name="text">
385 <dia:composite type="text">
386 <dia:attribute name="string">
387 <dia:string>##</dia:string>
388 </dia:attribute>
389 <dia:attribute name="font">
390 <dia:font family="sans" style="0" name="Helvetica"/>
391 </dia:attribute>
392 <dia:attribute name="height">
393 <dia:real val="0.80000000000000004"/>
394 </dia:attribute>
395 <dia:attribute name="pos">
396 <dia:point val="1.525,4.45"/>
397 </dia:attribute>
398 <dia:attribute name="color">
399 <dia:color val="#000000"/>
400 </dia:attribute>
401 <dia:attribute name="alignment">
402 <dia:enum val="0"/>
403 </dia:attribute>
404 </dia:composite>
405 </dia:attribute>
406 <dia:attribute name="valign">
407 <dia:enum val="3"/>
408 </dia:attribute>
409 </dia:object>
410 <dia:object type="Standard - Text" version="1" id="O11">
411 <dia:attribute name="obj_pos">
412 <dia:point val="0.476918,4.44569"/>
413 </dia:attribute>
414 <dia:attribute name="obj_bb">
415 <dia:rectangle val="0.476918,3.85069;3.95942,5.39819"/>
416 </dia:attribute>
417 <dia:attribute name="text">
418 <dia:composite type="text">
419 <dia:attribute name="string">
420 <dia:string>#sink media
421bus format#</dia:string>
422 </dia:attribute>
423 <dia:attribute name="font">
424 <dia:font family="sans" style="0" name="Helvetica"/>
425 </dia:attribute>
426 <dia:attribute name="height">
427 <dia:real val="0.80000000000000004"/>
428 </dia:attribute>
429 <dia:attribute name="pos">
430 <dia:point val="0.476918,4.44569"/>
431 </dia:attribute>
432 <dia:attribute name="color">
433 <dia:color val="#a52a2a"/>
434 </dia:attribute>
435 <dia:attribute name="alignment">
436 <dia:enum val="0"/>
437 </dia:attribute>
438 </dia:composite>
439 </dia:attribute>
440 <dia:attribute name="valign">
441 <dia:enum val="3"/>
442 </dia:attribute>
443 </dia:object>
444 <dia:object type="Standard - Box" version="0" id="O12">
445 <dia:attribute name="obj_pos">
446 <dia:point val="16.6822,9.28251"/>
447 </dia:attribute>
448 <dia:attribute name="obj_bb">
449 <dia:rectangle val="16.6322,9.23251;24.9922,17.9564"/>
450 </dia:attribute>
451 <dia:attribute name="elem_corner">
452 <dia:point val="16.6822,9.28251"/>
453 </dia:attribute>
454 <dia:attribute name="elem_width">
455 <dia:real val="8.2600228398861297"/>
456 </dia:attribute>
457 <dia:attribute name="elem_height">
458 <dia:real val="8.6238900617957164"/>
459 </dia:attribute>
460 <dia:attribute name="border_width">
461 <dia:real val="0.10000000149011612"/>
462 </dia:attribute>
463 <dia:attribute name="border_color">
464 <dia:color val="#00ff00"/>
465 </dia:attribute>
466 <dia:attribute name="show_background">
467 <dia:boolean val="true"/>
468 </dia:attribute>
469 </dia:object>
470 <dia:object type="Standard - Line" version="0" id="O13">
471 <dia:attribute name="obj_pos">
472 <dia:point val="16.6822,17.9064"/>
473 </dia:attribute>
474 <dia:attribute name="obj_bb">
475 <dia:rectangle val="3.05732,10.5823;16.7499,17.9741"/>
476 </dia:attribute>
477 <dia:attribute name="conn_endpoints">
478 <dia:point val="16.6822,17.9064"/>
479 <dia:point val="3.125,10.65"/>
480 </dia:attribute>
481 <dia:attribute name="numcp">
482 <dia:int val="1"/>
483 </dia:attribute>
484 <dia:attribute name="line_color">
485 <dia:color val="#e60505"/>
486 </dia:attribute>
487 <dia:attribute name="line_style">
488 <dia:enum val="4"/>
489 </dia:attribute>
490 <dia:connections>
491 <dia:connection handle="0" to="O12" connection="5"/>
492 <dia:connection handle="1" to="O9" connection="5"/>
493 </dia:connections>
494 </dia:object>
495 <dia:object type="Standard - Line" version="0" id="O14">
496 <dia:attribute name="obj_pos">
497 <dia:point val="16.6822,9.28251"/>
498 </dia:attribute>
499 <dia:attribute name="obj_bb">
500 <dia:rectangle val="3.06681,6.74181;16.7404,9.3407"/>
501 </dia:attribute>
502 <dia:attribute name="conn_endpoints">
503 <dia:point val="16.6822,9.28251"/>
504 <dia:point val="3.125,6.8"/>
505 </dia:attribute>
506 <dia:attribute name="numcp">
507 <dia:int val="1"/>
508 </dia:attribute>
509 <dia:attribute name="line_color">
510 <dia:color val="#e60505"/>
511 </dia:attribute>
512 <dia:attribute name="line_style">
513 <dia:enum val="4"/>
514 </dia:attribute>
515 <dia:connections>
516 <dia:connection handle="0" to="O12" connection="0"/>
517 <dia:connection handle="1" to="O9" connection="0"/>
518 </dia:connections>
519 </dia:object>
520 <dia:object type="Standard - Line" version="0" id="O15">
521 <dia:attribute name="obj_pos">
522 <dia:point val="24.9422,17.9064"/>
523 </dia:attribute>
524 <dia:attribute name="obj_bb">
525 <dia:rectangle val="7.75945,10.5845;25.0077,17.9719"/>
526 </dia:attribute>
527 <dia:attribute name="conn_endpoints">
528 <dia:point val="24.9422,17.9064"/>
529 <dia:point val="7.825,10.65"/>
530 </dia:attribute>
531 <dia:attribute name="numcp">
532 <dia:int val="1"/>
533 </dia:attribute>
534 <dia:attribute name="line_color">
535 <dia:color val="#e60505"/>
536 </dia:attribute>
537 <dia:attribute name="line_style">
538 <dia:enum val="4"/>
539 </dia:attribute>
540 <dia:connections>
541 <dia:connection handle="0" to="O12" connection="7"/>
542 <dia:connection handle="1" to="O9" connection="7"/>
543 </dia:connections>
544 </dia:object>
545 <dia:object type="Standard - Line" version="0" id="O16">
546 <dia:attribute name="obj_pos">
547 <dia:point val="24.9422,9.28251"/>
548 </dia:attribute>
549 <dia:attribute name="obj_bb">
550 <dia:rectangle val="7.76834,6.74334;24.9989,9.33917"/>
551 </dia:attribute>
552 <dia:attribute name="conn_endpoints">
553 <dia:point val="24.9422,9.28251"/>
554 <dia:point val="7.825,6.8"/>
555 </dia:attribute>
556 <dia:attribute name="numcp">
557 <dia:int val="1"/>
558 </dia:attribute>
559 <dia:attribute name="line_color">
560 <dia:color val="#e60505"/>
561 </dia:attribute>
562 <dia:attribute name="line_style">
563 <dia:enum val="4"/>
564 </dia:attribute>
565 <dia:connections>
566 <dia:connection handle="0" to="O12" connection="2"/>
567 <dia:connection handle="1" to="O9" connection="2"/>
568 </dia:connections>
569 </dia:object>
570 <dia:object type="Standard - Text" version="1" id="O17">
571 <dia:attribute name="obj_pos">
572 <dia:point val="16.7352,7.47209"/>
573 </dia:attribute>
574 <dia:attribute name="obj_bb">
575 <dia:rectangle val="16.7352,6.87709;22.5602,8.42459"/>
576 </dia:attribute>
577 <dia:attribute name="text">
578 <dia:composite type="text">
579 <dia:attribute name="string">
580 <dia:string>#sink compose
581selection (scaling)#</dia:string>
582 </dia:attribute>
583 <dia:attribute name="font">
584 <dia:font family="sans" style="0" name="Helvetica"/>
585 </dia:attribute>
586 <dia:attribute name="height">
587 <dia:real val="0.80000000000000004"/>
588 </dia:attribute>
589 <dia:attribute name="pos">
590 <dia:point val="16.7352,7.47209"/>
591 </dia:attribute>
592 <dia:attribute name="color">
593 <dia:color val="#00ff00"/>
594 </dia:attribute>
595 <dia:attribute name="alignment">
596 <dia:enum val="0"/>
597 </dia:attribute>
598 </dia:composite>
599 </dia:attribute>
600 <dia:attribute name="valign">
601 <dia:enum val="3"/>
602 </dia:attribute>
603 </dia:object>
604 <dia:object type="Standard - Box" version="0" id="O18">
605 <dia:attribute name="obj_pos">
606 <dia:point val="20.4661,9.72825"/>
607 </dia:attribute>
608 <dia:attribute name="obj_bb">
609 <dia:rectangle val="20.4161,9.67825;25.5254,13.3509"/>
610 </dia:attribute>
611 <dia:attribute name="elem_corner">
612 <dia:point val="20.4661,9.72825"/>
613 </dia:attribute>
614 <dia:attribute name="elem_width">
615 <dia:real val="5.009308462554376"/>
616 </dia:attribute>
617 <dia:attribute name="elem_height">
618 <dia:real val="3.5726155970598077"/>
619 </dia:attribute>
620 <dia:attribute name="border_width">
621 <dia:real val="0.10000000149011612"/>
622 </dia:attribute>
623 <dia:attribute name="border_color">
624 <dia:color val="#a020f0"/>
625 </dia:attribute>
626 <dia:attribute name="show_background">
627 <dia:boolean val="true"/>
628 </dia:attribute>
629 </dia:object>
630 <dia:object type="Standard - Text" version="1" id="O19">
631 <dia:attribute name="obj_pos">
632 <dia:point val="34.475,5.2564"/>
633 </dia:attribute>
634 <dia:attribute name="obj_bb">
635 <dia:rectangle val="34.475,4.6614;38.7975,6.2089"/>
636 </dia:attribute>
637 <dia:attribute name="text">
638 <dia:composite type="text">
639 <dia:attribute name="string">
640 <dia:string>#source media
641bus format#</dia:string>
642 </dia:attribute>
643 <dia:attribute name="font">
644 <dia:font family="sans" style="0" name="Helvetica"/>
645 </dia:attribute>
646 <dia:attribute name="height">
647 <dia:real val="0.80000000000000004"/>
648 </dia:attribute>
649 <dia:attribute name="pos">
650 <dia:point val="34.475,5.2564"/>
651 </dia:attribute>
652 <dia:attribute name="color">
653 <dia:color val="#8b6914"/>
654 </dia:attribute>
655 <dia:attribute name="alignment">
656 <dia:enum val="0"/>
657 </dia:attribute>
658 </dia:composite>
659 </dia:attribute>
660 <dia:attribute name="valign">
661 <dia:enum val="3"/>
662 </dia:attribute>
663 </dia:object>
664 <dia:object type="Standard - Box" version="0" id="O20">
665 <dia:attribute name="obj_pos">
666 <dia:point val="34.4244,8.6917"/>
667 </dia:attribute>
668 <dia:attribute name="obj_bb">
669 <dia:rectangle val="34.3744,8.6417;39.4837,12.3143"/>
670 </dia:attribute>
671 <dia:attribute name="elem_corner">
672 <dia:point val="34.4244,8.6917"/>
673 </dia:attribute>
674 <dia:attribute name="elem_width">
675 <dia:real val="5.009308462554376"/>
676 </dia:attribute>
677 <dia:attribute name="elem_height">
678 <dia:real val="3.5726155970598077"/>
679 </dia:attribute>
680 <dia:attribute name="border_width">
681 <dia:real val="0.10000000149011612"/>
682 </dia:attribute>
683 <dia:attribute name="border_color">
684 <dia:color val="#8b6914"/>
685 </dia:attribute>
686 <dia:attribute name="show_background">
687 <dia:boolean val="true"/>
688 </dia:attribute>
689 </dia:object>
690 <dia:object type="Standard - Line" version="0" id="O21">
691 <dia:attribute name="obj_pos">
692 <dia:point val="34.4244,12.2643"/>
693 </dia:attribute>
694 <dia:attribute name="obj_bb">
695 <dia:rectangle val="20.4125,12.2107;34.478,13.3545"/>
696 </dia:attribute>
697 <dia:attribute name="conn_endpoints">
698 <dia:point val="34.4244,12.2643"/>
699 <dia:point val="20.4661,13.3009"/>
700 </dia:attribute>
701 <dia:attribute name="numcp">
702 <dia:int val="1"/>
703 </dia:attribute>
704 <dia:attribute name="line_color">
705 <dia:color val="#e60505"/>
706 </dia:attribute>
707 <dia:attribute name="line_style">
708 <dia:enum val="4"/>
709 </dia:attribute>
710 <dia:connections>
711 <dia:connection handle="0" to="O20" connection="5"/>
712 <dia:connection handle="1" to="O18" connection="5"/>
713 </dia:connections>
714 </dia:object>
715 <dia:object type="Standard - Line" version="0" id="O22">
716 <dia:attribute name="obj_pos">
717 <dia:point val="34.4244,8.6917"/>
718 </dia:attribute>
719 <dia:attribute name="obj_bb">
720 <dia:rectangle val="20.4125,8.63813;34.478,9.78182"/>
721 </dia:attribute>
722 <dia:attribute name="conn_endpoints">
723 <dia:point val="34.4244,8.6917"/>
724 <dia:point val="20.4661,9.72825"/>
725 </dia:attribute>
726 <dia:attribute name="numcp">
727 <dia:int val="1"/>
728 </dia:attribute>
729 <dia:attribute name="line_color">
730 <dia:color val="#e60505"/>
731 </dia:attribute>
732 <dia:attribute name="line_style">
733 <dia:enum val="4"/>
734 </dia:attribute>
735 <dia:connections>
736 <dia:connection handle="0" to="O20" connection="0"/>
737 <dia:connection handle="1" to="O18" connection="0"/>
738 </dia:connections>
739 </dia:object>
740 <dia:object type="Standard - Line" version="0" id="O23">
741 <dia:attribute name="obj_pos">
742 <dia:point val="39.4337,12.2643"/>
743 </dia:attribute>
744 <dia:attribute name="obj_bb">
745 <dia:rectangle val="25.4218,12.2107;39.4873,13.3545"/>
746 </dia:attribute>
747 <dia:attribute name="conn_endpoints">
748 <dia:point val="39.4337,12.2643"/>
749 <dia:point val="25.4754,13.3009"/>
750 </dia:attribute>
751 <dia:attribute name="numcp">
752 <dia:int val="1"/>
753 </dia:attribute>
754 <dia:attribute name="line_color">
755 <dia:color val="#e60505"/>
756 </dia:attribute>
757 <dia:attribute name="line_style">
758 <dia:enum val="4"/>
759 </dia:attribute>
760 <dia:connections>
761 <dia:connection handle="0" to="O20" connection="7"/>
762 <dia:connection handle="1" to="O18" connection="7"/>
763 </dia:connections>
764 </dia:object>
765 <dia:object type="Standard - Line" version="0" id="O24">
766 <dia:attribute name="obj_pos">
767 <dia:point val="39.4337,8.6917"/>
768 </dia:attribute>
769 <dia:attribute name="obj_bb">
770 <dia:rectangle val="25.4218,8.63813;39.4873,9.78182"/>
771 </dia:attribute>
772 <dia:attribute name="conn_endpoints">
773 <dia:point val="39.4337,8.6917"/>
774 <dia:point val="25.4754,9.72825"/>
775 </dia:attribute>
776 <dia:attribute name="numcp">
777 <dia:int val="1"/>
778 </dia:attribute>
779 <dia:attribute name="line_color">
780 <dia:color val="#e60505"/>
781 </dia:attribute>
782 <dia:attribute name="line_style">
783 <dia:enum val="4"/>
784 </dia:attribute>
785 <dia:connections>
786 <dia:connection handle="0" to="O20" connection="2"/>
787 <dia:connection handle="1" to="O18" connection="2"/>
788 </dia:connections>
789 </dia:object>
790 <dia:object type="Standard - Text" version="1" id="O25">
791 <dia:attribute name="obj_pos">
792 <dia:point val="16.25,5.15"/>
793 </dia:attribute>
794 <dia:attribute name="obj_bb">
795 <dia:rectangle val="16.25,4.555;21.68,6.1025"/>
796 </dia:attribute>
797 <dia:attribute name="text">
798 <dia:composite type="text">
799 <dia:attribute name="string">
800 <dia:string>#sink compose
801bounds selection#</dia:string>
802 </dia:attribute>
803 <dia:attribute name="font">
804 <dia:font family="sans" style="0" name="Helvetica"/>
805 </dia:attribute>
806 <dia:attribute name="height">
807 <dia:real val="0.80000000000000004"/>
808 </dia:attribute>
809 <dia:attribute name="pos">
810 <dia:point val="16.25,5.15"/>
811 </dia:attribute>
812 <dia:attribute name="color">
813 <dia:color val="#ff765a"/>
814 </dia:attribute>
815 <dia:attribute name="alignment">
816 <dia:enum val="0"/>
817 </dia:attribute>
818 </dia:composite>
819 </dia:attribute>
820 <dia:attribute name="valign">
821 <dia:enum val="3"/>
822 </dia:attribute>
823 </dia:object>
824 <dia:object type="Geometric - Perfect Circle" version="1" id="O26">
825 <dia:attribute name="obj_pos">
826 <dia:point val="-1.02991,16.6506"/>
827 </dia:attribute>
828 <dia:attribute name="obj_bb">
829 <dia:rectangle val="-1.07991,16.6006;-0.12991,17.5506"/>
830 </dia:attribute>
831 <dia:attribute name="meta">
832 <dia:composite type="dict"/>
833 </dia:attribute>
834 <dia:attribute name="elem_corner">
835 <dia:point val="-1.02991,16.6506"/>
836 </dia:attribute>
837 <dia:attribute name="elem_width">
838 <dia:real val="0.84999999999999787"/>
839 </dia:attribute>
840 <dia:attribute name="elem_height">
841 <dia:real val="0.84999999999999787"/>
842 </dia:attribute>
843 <dia:attribute name="line_width">
844 <dia:real val="0.10000000000000001"/>
845 </dia:attribute>
846 <dia:attribute name="line_colour">
847 <dia:color val="#000000"/>
848 </dia:attribute>
849 <dia:attribute name="fill_colour">
850 <dia:color val="#ffffff"/>
851 </dia:attribute>
852 <dia:attribute name="show_background">
853 <dia:boolean val="true"/>
854 </dia:attribute>
855 <dia:attribute name="line_style">
856 <dia:enum val="0"/>
857 <dia:real val="1"/>
858 </dia:attribute>
859 <dia:attribute name="flip_horizontal">
860 <dia:boolean val="false"/>
861 </dia:attribute>
862 <dia:attribute name="flip_vertical">
863 <dia:boolean val="false"/>
864 </dia:attribute>
865 <dia:attribute name="subscale">
866 <dia:real val="1"/>
867 </dia:attribute>
868 </dia:object>
869 <dia:object type="Standard - Line" version="0" id="O27">
870 <dia:attribute name="obj_pos">
871 <dia:point val="-9.20491,17.09"/>
872 </dia:attribute>
873 <dia:attribute name="obj_bb">
874 <dia:rectangle val="-9.255,16.7149;-0.918107,17.4385"/>
875 </dia:attribute>
876 <dia:attribute name="conn_endpoints">
877 <dia:point val="-9.20491,17.09"/>
878 <dia:point val="-1.02991,17.0756"/>
879 </dia:attribute>
880 <dia:attribute name="numcp">
881 <dia:int val="1"/>
882 </dia:attribute>
883 <dia:attribute name="end_arrow">
884 <dia:enum val="22"/>
885 </dia:attribute>
886 <dia:attribute name="end_arrow_length">
887 <dia:real val="0.5"/>
888 </dia:attribute>
889 <dia:attribute name="end_arrow_width">
890 <dia:real val="0.5"/>
891 </dia:attribute>
892 <dia:connections>
893 <dia:connection handle="1" to="O26" connection="2"/>
894 </dia:connections>
895 </dia:object>
896 <dia:object type="Standard - Text" version="1" id="O28">
897 <dia:attribute name="obj_pos">
898 <dia:point val="-6.95,16.45"/>
899 </dia:attribute>
900 <dia:attribute name="obj_bb">
901 <dia:rectangle val="-6.95,15.855;-3.145,16.6025"/>
902 </dia:attribute>
903 <dia:attribute name="text">
904 <dia:composite type="text">
905 <dia:attribute name="string">
906 <dia:string>#pad 1 (sink)#</dia:string>
907 </dia:attribute>
908 <dia:attribute name="font">
909 <dia:font family="sans" style="0" name="Helvetica"/>
910 </dia:attribute>
911 <dia:attribute name="height">
912 <dia:real val="0.80000000000000004"/>
913 </dia:attribute>
914 <dia:attribute name="pos">
915 <dia:point val="-6.95,16.45"/>
916 </dia:attribute>
917 <dia:attribute name="color">
918 <dia:color val="#000000"/>
919 </dia:attribute>
920 <dia:attribute name="alignment">
921 <dia:enum val="0"/>
922 </dia:attribute>
923 </dia:composite>
924 </dia:attribute>
925 <dia:attribute name="valign">
926 <dia:enum val="3"/>
927 </dia:attribute>
928 </dia:object>
929 <dia:object type="Standard - Box" version="0" id="O29">
930 <dia:attribute name="obj_pos">
931 <dia:point val="0.390412,14.64"/>
932 </dia:attribute>
933 <dia:attribute name="obj_bb">
934 <dia:rectangle val="0.340412,14.59;6.045,18.8"/>
935 </dia:attribute>
936 <dia:attribute name="elem_corner">
937 <dia:point val="0.390412,14.64"/>
938 </dia:attribute>
939 <dia:attribute name="elem_width">
940 <dia:real val="5.604587512785236"/>
941 </dia:attribute>
942 <dia:attribute name="elem_height">
943 <dia:real val="4.1099999999999994"/>
944 </dia:attribute>
945 <dia:attribute name="border_width">
946 <dia:real val="0.10000000149011612"/>
947 </dia:attribute>
948 <dia:attribute name="border_color">
949 <dia:color val="#a52a2a"/>
950 </dia:attribute>
951 <dia:attribute name="show_background">
952 <dia:boolean val="true"/>
953 </dia:attribute>
954 </dia:object>
955 <dia:object type="Standard - Box" version="0" id="O30">
956 <dia:attribute name="obj_pos">
957 <dia:point val="2.645,15.74"/>
958 </dia:attribute>
959 <dia:attribute name="obj_bb">
960 <dia:rectangle val="2.595,15.69;5.6,18.3"/>
961 </dia:attribute>
962 <dia:attribute name="elem_corner">
963 <dia:point val="2.645,15.74"/>
964 </dia:attribute>
965 <dia:attribute name="elem_width">
966 <dia:real val="2.904999999254942"/>
967 </dia:attribute>
968 <dia:attribute name="elem_height">
969 <dia:real val="2.5100000000000016"/>
970 </dia:attribute>
971 <dia:attribute name="border_width">
972 <dia:real val="0.10000000149011612"/>
973 </dia:attribute>
974 <dia:attribute name="border_color">
975 <dia:color val="#0000ff"/>
976 </dia:attribute>
977 <dia:attribute name="show_background">
978 <dia:boolean val="true"/>
979 </dia:attribute>
980 </dia:object>
981 <dia:object type="Standard - Text" version="1" id="O31">
982 <dia:attribute name="obj_pos">
983 <dia:point val="1.595,12.99"/>
984 </dia:attribute>
985 <dia:attribute name="obj_bb">
986 <dia:rectangle val="1.595,12.395;1.595,13.1425"/>
987 </dia:attribute>
988 <dia:attribute name="text">
989 <dia:composite type="text">
990 <dia:attribute name="string">
991 <dia:string>##</dia:string>
992 </dia:attribute>
993 <dia:attribute name="font">
994 <dia:font family="sans" style="0" name="Helvetica"/>
995 </dia:attribute>
996 <dia:attribute name="height">
997 <dia:real val="0.80000000000000004"/>
998 </dia:attribute>
999 <dia:attribute name="pos">
1000 <dia:point val="1.595,12.99"/>
1001 </dia:attribute>
1002 <dia:attribute name="color">
1003 <dia:color val="#000000"/>
1004 </dia:attribute>
1005 <dia:attribute name="alignment">
1006 <dia:enum val="0"/>
1007 </dia:attribute>
1008 </dia:composite>
1009 </dia:attribute>
1010 <dia:attribute name="valign">
1011 <dia:enum val="3"/>
1012 </dia:attribute>
1013 </dia:object>
1014 <dia:object type="Standard - Line" version="0" id="O32">
1015 <dia:attribute name="obj_pos">
1016 <dia:point val="17.945,12.595"/>
1017 </dia:attribute>
1018 <dia:attribute name="obj_bb">
1019 <dia:rectangle val="2.58596,12.536;18.004,15.799"/>
1020 </dia:attribute>
1021 <dia:attribute name="conn_endpoints">
1022 <dia:point val="17.945,12.595"/>
1023 <dia:point val="2.645,15.74"/>
1024 </dia:attribute>
1025 <dia:attribute name="numcp">
1026 <dia:int val="1"/>
1027 </dia:attribute>
1028 <dia:attribute name="line_color">
1029 <dia:color val="#e60505"/>
1030 </dia:attribute>
1031 <dia:attribute name="line_style">
1032 <dia:enum val="4"/>
1033 </dia:attribute>
1034 <dia:connections>
1035 <dia:connection handle="0" to="O36" connection="0"/>
1036 <dia:connection handle="1" to="O30" connection="0"/>
1037 </dia:connections>
1038 </dia:object>
1039 <dia:object type="Standard - Line" version="0" id="O33">
1040 <dia:attribute name="obj_pos">
1041 <dia:point val="17.945,15.8"/>
1042 </dia:attribute>
1043 <dia:attribute name="obj_bb">
1044 <dia:rectangle val="2.58772,15.7427;18.0023,18.3073"/>
1045 </dia:attribute>
1046 <dia:attribute name="conn_endpoints">
1047 <dia:point val="17.945,15.8"/>
1048 <dia:point val="2.645,18.25"/>
1049 </dia:attribute>
1050 <dia:attribute name="numcp">
1051 <dia:int val="1"/>
1052 </dia:attribute>
1053 <dia:attribute name="line_color">
1054 <dia:color val="#e60505"/>
1055 </dia:attribute>
1056 <dia:attribute name="line_style">
1057 <dia:enum val="4"/>
1058 </dia:attribute>
1059 <dia:connections>
1060 <dia:connection handle="0" to="O36" connection="5"/>
1061 <dia:connection handle="1" to="O30" connection="5"/>
1062 </dia:connections>
1063 </dia:object>
1064 <dia:object type="Standard - Line" version="0" id="O34">
1065 <dia:attribute name="obj_pos">
1066 <dia:point val="21.7,15.8"/>
1067 </dia:attribute>
1068 <dia:attribute name="obj_bb">
1069 <dia:rectangle val="5.49307,15.7431;21.7569,18.3069"/>
1070 </dia:attribute>
1071 <dia:attribute name="conn_endpoints">
1072 <dia:point val="21.7,15.8"/>
1073 <dia:point val="5.55,18.25"/>
1074 </dia:attribute>
1075 <dia:attribute name="numcp">
1076 <dia:int val="1"/>
1077 </dia:attribute>
1078 <dia:attribute name="line_color">
1079 <dia:color val="#e60505"/>
1080 </dia:attribute>
1081 <dia:attribute name="line_style">
1082 <dia:enum val="4"/>
1083 </dia:attribute>
1084 <dia:connections>
1085 <dia:connection handle="0" to="O36" connection="7"/>
1086 <dia:connection handle="1" to="O30" connection="7"/>
1087 </dia:connections>
1088 </dia:object>
1089 <dia:object type="Standard - Line" version="0" id="O35">
1090 <dia:attribute name="obj_pos">
1091 <dia:point val="21.7,12.595"/>
1092 </dia:attribute>
1093 <dia:attribute name="obj_bb">
1094 <dia:rectangle val="5.49136,12.5364;21.7586,15.7986"/>
1095 </dia:attribute>
1096 <dia:attribute name="conn_endpoints">
1097 <dia:point val="21.7,12.595"/>
1098 <dia:point val="5.55,15.74"/>
1099 </dia:attribute>
1100 <dia:attribute name="numcp">
1101 <dia:int val="1"/>
1102 </dia:attribute>
1103 <dia:attribute name="line_color">
1104 <dia:color val="#e60505"/>
1105 </dia:attribute>
1106 <dia:attribute name="line_style">
1107 <dia:enum val="4"/>
1108 </dia:attribute>
1109 <dia:connections>
1110 <dia:connection handle="0" to="O36" connection="2"/>
1111 <dia:connection handle="1" to="O30" connection="2"/>
1112 </dia:connections>
1113 </dia:object>
1114 <dia:object type="Standard - Box" version="0" id="O36">
1115 <dia:attribute name="obj_pos">
1116 <dia:point val="17.945,12.595"/>
1117 </dia:attribute>
1118 <dia:attribute name="obj_bb">
1119 <dia:rectangle val="17.895,12.545;21.75,15.85"/>
1120 </dia:attribute>
1121 <dia:attribute name="elem_corner">
1122 <dia:point val="17.945,12.595"/>
1123 </dia:attribute>
1124 <dia:attribute name="elem_width">
1125 <dia:real val="3.7549999992549452"/>
1126 </dia:attribute>
1127 <dia:attribute name="elem_height">
1128 <dia:real val="3.2049999992549427"/>
1129 </dia:attribute>
1130 <dia:attribute name="border_width">
1131 <dia:real val="0.10000000149011612"/>
1132 </dia:attribute>
1133 <dia:attribute name="border_color">
1134 <dia:color val="#00ff00"/>
1135 </dia:attribute>
1136 <dia:attribute name="show_background">
1137 <dia:boolean val="false"/>
1138 </dia:attribute>
1139 </dia:object>
1140 <dia:object type="Standard - Box" version="0" id="O37">
1141 <dia:attribute name="obj_pos">
1142 <dia:point val="22.1631,14.2233"/>
1143 </dia:attribute>
1144 <dia:attribute name="obj_bb">
1145 <dia:rectangle val="22.1131,14.1733;25.45,16.7"/>
1146 </dia:attribute>
1147 <dia:attribute name="elem_corner">
1148 <dia:point val="22.1631,14.2233"/>
1149 </dia:attribute>
1150 <dia:attribute name="elem_width">
1151 <dia:real val="3.2369000000000021"/>
1152 </dia:attribute>
1153 <dia:attribute name="elem_height">
1154 <dia:real val="2.4267000000000003"/>
1155 </dia:attribute>
1156 <dia:attribute name="border_width">
1157 <dia:real val="0.10000000149011612"/>
1158 </dia:attribute>
1159 <dia:attribute name="border_color">
1160 <dia:color val="#a020f0"/>
1161 </dia:attribute>
1162 <dia:attribute name="show_background">
1163 <dia:boolean val="false"/>
1164 </dia:attribute>
1165 </dia:object>
1166 <dia:object type="Standard - Box" version="0" id="O38">
1167 <dia:attribute name="obj_pos">
1168 <dia:point val="34.6714,16.2367"/>
1169 </dia:attribute>
1170 <dia:attribute name="obj_bb">
1171 <dia:rectangle val="34.6214,16.1867;37.9,18.75"/>
1172 </dia:attribute>
1173 <dia:attribute name="elem_corner">
1174 <dia:point val="34.6714,16.2367"/>
1175 </dia:attribute>
1176 <dia:attribute name="elem_width">
1177 <dia:real val="3.178600000000003"/>
1178 </dia:attribute>
1179 <dia:attribute name="elem_height">
1180 <dia:real val="2.4632999999999967"/>
1181 </dia:attribute>
1182 <dia:attribute name="border_width">
1183 <dia:real val="0.10000000149011612"/>
1184 </dia:attribute>
1185 <dia:attribute name="border_color">
1186 <dia:color val="#8b6914"/>
1187 </dia:attribute>
1188 <dia:attribute name="show_background">
1189 <dia:boolean val="true"/>
1190 </dia:attribute>
1191 </dia:object>
1192 <dia:object type="Standard - Line" version="0" id="O39">
1193 <dia:attribute name="obj_pos">
1194 <dia:point val="34.6714,18.7"/>
1195 </dia:attribute>
1196 <dia:attribute name="obj_bb">
1197 <dia:rectangle val="22.1057,16.5926;34.7288,18.7574"/>
1198 </dia:attribute>
1199 <dia:attribute name="conn_endpoints">
1200 <dia:point val="34.6714,18.7"/>
1201 <dia:point val="22.1631,16.65"/>
1202 </dia:attribute>
1203 <dia:attribute name="numcp">
1204 <dia:int val="1"/>
1205 </dia:attribute>
1206 <dia:attribute name="line_color">
1207 <dia:color val="#e60505"/>
1208 </dia:attribute>
1209 <dia:attribute name="line_style">
1210 <dia:enum val="4"/>
1211 </dia:attribute>
1212 <dia:connections>
1213 <dia:connection handle="0" to="O38" connection="5"/>
1214 <dia:connection handle="1" to="O37" connection="5"/>
1215 </dia:connections>
1216 </dia:object>
1217 <dia:object type="Standard - Line" version="0" id="O40">
1218 <dia:attribute name="obj_pos">
1219 <dia:point val="34.6714,16.2367"/>
1220 </dia:attribute>
1221 <dia:attribute name="obj_bb">
1222 <dia:rectangle val="22.1058,14.166;34.7287,16.294"/>
1223 </dia:attribute>
1224 <dia:attribute name="conn_endpoints">
1225 <dia:point val="34.6714,16.2367"/>
1226 <dia:point val="22.1631,14.2233"/>
1227 </dia:attribute>
1228 <dia:attribute name="numcp">
1229 <dia:int val="1"/>
1230 </dia:attribute>
1231 <dia:attribute name="line_color">
1232 <dia:color val="#e60505"/>
1233 </dia:attribute>
1234 <dia:attribute name="line_style">
1235 <dia:enum val="4"/>
1236 </dia:attribute>
1237 <dia:connections>
1238 <dia:connection handle="0" to="O38" connection="0"/>
1239 <dia:connection handle="1" to="O37" connection="0"/>
1240 </dia:connections>
1241 </dia:object>
1242 <dia:object type="Standard - Line" version="0" id="O41">
1243 <dia:attribute name="obj_pos">
1244 <dia:point val="37.85,18.7"/>
1245 </dia:attribute>
1246 <dia:attribute name="obj_bb">
1247 <dia:rectangle val="25.3425,16.5925;37.9075,18.7575"/>
1248 </dia:attribute>
1249 <dia:attribute name="conn_endpoints">
1250 <dia:point val="37.85,18.7"/>
1251 <dia:point val="25.4,16.65"/>
1252 </dia:attribute>
1253 <dia:attribute name="numcp">
1254 <dia:int val="1"/>
1255 </dia:attribute>
1256 <dia:attribute name="line_color">
1257 <dia:color val="#e60505"/>
1258 </dia:attribute>
1259 <dia:attribute name="line_style">
1260 <dia:enum val="4"/>
1261 </dia:attribute>
1262 <dia:connections>
1263 <dia:connection handle="0" to="O38" connection="7"/>
1264 <dia:connection handle="1" to="O37" connection="7"/>
1265 </dia:connections>
1266 </dia:object>
1267 <dia:object type="Standard - Line" version="0" id="O42">
1268 <dia:attribute name="obj_pos">
1269 <dia:point val="37.85,16.2367"/>
1270 </dia:attribute>
1271 <dia:attribute name="obj_bb">
1272 <dia:rectangle val="25.3427,14.166;37.9073,16.294"/>
1273 </dia:attribute>
1274 <dia:attribute name="conn_endpoints">
1275 <dia:point val="37.85,16.2367"/>
1276 <dia:point val="25.4,14.2233"/>
1277 </dia:attribute>
1278 <dia:attribute name="numcp">
1279 <dia:int val="1"/>
1280 </dia:attribute>
1281 <dia:attribute name="line_color">
1282 <dia:color val="#e60505"/>
1283 </dia:attribute>
1284 <dia:attribute name="line_style">
1285 <dia:enum val="4"/>
1286 </dia:attribute>
1287 <dia:connections>
1288 <dia:connection handle="0" to="O38" connection="2"/>
1289 <dia:connection handle="1" to="O37" connection="2"/>
1290 </dia:connections>
1291 </dia:object>
1292 <dia:object type="Geometric - Perfect Circle" version="1" id="O43">
1293 <dia:attribute name="obj_pos">
1294 <dia:point val="40.347,16.7742"/>
1295 </dia:attribute>
1296 <dia:attribute name="obj_bb">
1297 <dia:rectangle val="40.297,16.7242;41.247,17.6742"/>
1298 </dia:attribute>
1299 <dia:attribute name="meta">
1300 <dia:composite type="dict"/>
1301 </dia:attribute>
1302 <dia:attribute name="elem_corner">
1303 <dia:point val="40.347,16.7742"/>
1304 </dia:attribute>
1305 <dia:attribute name="elem_width">
1306 <dia:real val="0.84999999999999787"/>
1307 </dia:attribute>
1308 <dia:attribute name="elem_height">
1309 <dia:real val="0.84999999999999787"/>
1310 </dia:attribute>
1311 <dia:attribute name="line_width">
1312 <dia:real val="0.10000000000000001"/>
1313 </dia:attribute>
1314 <dia:attribute name="line_colour">
1315 <dia:color val="#000000"/>
1316 </dia:attribute>
1317 <dia:attribute name="fill_colour">
1318 <dia:color val="#ffffff"/>
1319 </dia:attribute>
1320 <dia:attribute name="show_background">
1321 <dia:boolean val="true"/>
1322 </dia:attribute>
1323 <dia:attribute name="line_style">
1324 <dia:enum val="0"/>
1325 <dia:real val="1"/>
1326 </dia:attribute>
1327 <dia:attribute name="flip_horizontal">
1328 <dia:boolean val="false"/>
1329 </dia:attribute>
1330 <dia:attribute name="flip_vertical">
1331 <dia:boolean val="false"/>
1332 </dia:attribute>
1333 <dia:attribute name="subscale">
1334 <dia:real val="1"/>
1335 </dia:attribute>
1336 </dia:object>
1337 <dia:object type="Standard - Line" version="0" id="O44">
1338 <dia:attribute name="obj_pos">
1339 <dia:point val="41.197,17.1992"/>
1340 </dia:attribute>
1341 <dia:attribute name="obj_bb">
1342 <dia:rectangle val="41.147,16.8388;49.6123,17.5624"/>
1343 </dia:attribute>
1344 <dia:attribute name="conn_endpoints">
1345 <dia:point val="41.197,17.1992"/>
1346 <dia:point val="49.5005,17.2007"/>
1347 </dia:attribute>
1348 <dia:attribute name="numcp">
1349 <dia:int val="1"/>
1350 </dia:attribute>
1351 <dia:attribute name="end_arrow">
1352 <dia:enum val="22"/>
1353 </dia:attribute>
1354 <dia:attribute name="end_arrow_length">
1355 <dia:real val="0.5"/>
1356 </dia:attribute>
1357 <dia:attribute name="end_arrow_width">
1358 <dia:real val="0.5"/>
1359 </dia:attribute>
1360 <dia:connections>
1361 <dia:connection handle="0" to="O43" connection="3"/>
1362 </dia:connections>
1363 </dia:object>
1364 <dia:object type="Standard - Text" version="1" id="O45">
1365 <dia:attribute name="obj_pos">
1366 <dia:point val="42.4624,16.69"/>
1367 </dia:attribute>
1368 <dia:attribute name="obj_bb">
1369 <dia:rectangle val="42.4624,16.095;47.1074,16.8425"/>
1370 </dia:attribute>
1371 <dia:attribute name="text">
1372 <dia:composite type="text">
1373 <dia:attribute name="string">
1374 <dia:string>#pad 3 (source)#</dia:string>
1375 </dia:attribute>
1376 <dia:attribute name="font">
1377 <dia:font family="sans" style="0" name="Helvetica"/>
1378 </dia:attribute>
1379 <dia:attribute name="height">
1380 <dia:real val="0.80000000000000004"/>
1381 </dia:attribute>
1382 <dia:attribute name="pos">
1383 <dia:point val="42.4624,16.69"/>
1384 </dia:attribute>
1385 <dia:attribute name="color">
1386 <dia:color val="#000000"/>
1387 </dia:attribute>
1388 <dia:attribute name="alignment">
1389 <dia:enum val="0"/>
1390 </dia:attribute>
1391 </dia:composite>
1392 </dia:attribute>
1393 <dia:attribute name="valign">
1394 <dia:enum val="3"/>
1395 </dia:attribute>
1396 </dia:object>
1397 <dia:object type="Standard - Text" version="1" id="O46">
1398 <dia:attribute name="obj_pos">
1399 <dia:point val="9.85,4.55"/>
1400 </dia:attribute>
1401 <dia:attribute name="obj_bb">
1402 <dia:rectangle val="9.85,3.955;12.7275,6.3025"/>
1403 </dia:attribute>
1404 <dia:attribute name="text">
1405 <dia:composite type="text">
1406 <dia:attribute name="string">
1407 <dia:string>#sink
1408crop
1409selection#</dia:string>
1410 </dia:attribute>
1411 <dia:attribute name="font">
1412 <dia:font family="sans" style="0" name="Helvetica"/>
1413 </dia:attribute>
1414 <dia:attribute name="height">
1415 <dia:real val="0.80000000000000004"/>
1416 </dia:attribute>
1417 <dia:attribute name="pos">
1418 <dia:point val="9.85,4.55"/>
1419 </dia:attribute>
1420 <dia:attribute name="color">
1421 <dia:color val="#0000ff"/>
1422 </dia:attribute>
1423 <dia:attribute name="alignment">
1424 <dia:enum val="0"/>
1425 </dia:attribute>
1426 </dia:composite>
1427 </dia:attribute>
1428 <dia:attribute name="valign">
1429 <dia:enum val="3"/>
1430 </dia:attribute>
1431 </dia:object>
1432 <dia:object type="Standard - Text" version="1" id="O47">
1433 <dia:attribute name="obj_pos">
1434 <dia:point val="27.65,4.75"/>
1435 </dia:attribute>
1436 <dia:attribute name="obj_bb">
1437 <dia:rectangle val="27.65,4.155;30.5275,6.5025"/>
1438 </dia:attribute>
1439 <dia:attribute name="text">
1440 <dia:composite type="text">
1441 <dia:attribute name="string">
1442 <dia:string>#source
1443crop
1444selection#</dia:string>
1445 </dia:attribute>
1446 <dia:attribute name="font">
1447 <dia:font family="sans" style="0" name="Helvetica"/>
1448 </dia:attribute>
1449 <dia:attribute name="height">
1450 <dia:real val="0.80000000000000004"/>
1451 </dia:attribute>
1452 <dia:attribute name="pos">
1453 <dia:point val="27.65,4.75"/>
1454 </dia:attribute>
1455 <dia:attribute name="color">
1456 <dia:color val="#a020f0"/>
1457 </dia:attribute>
1458 <dia:attribute name="alignment">
1459 <dia:enum val="0"/>
1460 </dia:attribute>
1461 </dia:composite>
1462 </dia:attribute>
1463 <dia:attribute name="valign">
1464 <dia:enum val="3"/>
1465 </dia:attribute>
1466 </dia:object>
1467 <dia:object type="Standard - Line" version="0" id="O48">
1468 <dia:attribute name="obj_pos">
1469 <dia:point val="10.55,6.6"/>
1470 </dia:attribute>
1471 <dia:attribute name="obj_bb">
1472 <dia:rectangle val="7.7135,6.39438;10.6035,7.11605"/>
1473 </dia:attribute>
1474 <dia:attribute name="conn_endpoints">
1475 <dia:point val="10.55,6.6"/>
1476 <dia:point val="7.825,6.8"/>
1477 </dia:attribute>
1478 <dia:attribute name="numcp">
1479 <dia:int val="1"/>
1480 </dia:attribute>
1481 <dia:attribute name="line_color">
1482 <dia:color val="#0000ff"/>
1483 </dia:attribute>
1484 <dia:attribute name="end_arrow">
1485 <dia:enum val="22"/>
1486 </dia:attribute>
1487 <dia:attribute name="end_arrow_length">
1488 <dia:real val="0.5"/>
1489 </dia:attribute>
1490 <dia:attribute name="end_arrow_width">
1491 <dia:real val="0.5"/>
1492 </dia:attribute>
1493 <dia:connections>
1494 <dia:connection handle="1" to="O9" connection="2"/>
1495 </dia:connections>
1496 </dia:object>
1497 <dia:object type="Standard - Line" version="0" id="O49">
1498 <dia:attribute name="obj_pos">
1499 <dia:point val="10.45,6.55"/>
1500 </dia:attribute>
1501 <dia:attribute name="obj_bb">
1502 <dia:rectangle val="5.48029,6.48236;10.5176,15.8387"/>
1503 </dia:attribute>
1504 <dia:attribute name="conn_endpoints">
1505 <dia:point val="10.45,6.55"/>
1506 <dia:point val="5.55,15.74"/>
1507 </dia:attribute>
1508 <dia:attribute name="numcp">
1509 <dia:int val="1"/>
1510 </dia:attribute>
1511 <dia:attribute name="line_color">
1512 <dia:color val="#0000ff"/>
1513 </dia:attribute>
1514 <dia:attribute name="end_arrow">
1515 <dia:enum val="22"/>
1516 </dia:attribute>
1517 <dia:attribute name="end_arrow_length">
1518 <dia:real val="0.5"/>
1519 </dia:attribute>
1520 <dia:attribute name="end_arrow_width">
1521 <dia:real val="0.5"/>
1522 </dia:attribute>
1523 <dia:connections>
1524 <dia:connection handle="1" to="O30" connection="2"/>
1525 </dia:connections>
1526 </dia:object>
1527 <dia:object type="Standard - Line" version="0" id="O50">
1528 <dia:attribute name="obj_pos">
1529 <dia:point val="27.5246,6.66071"/>
1530 </dia:attribute>
1531 <dia:attribute name="obj_bb">
1532 <dia:rectangle val="25.406,6.59136;27.594,9.82122"/>
1533 </dia:attribute>
1534 <dia:attribute name="conn_endpoints">
1535 <dia:point val="27.5246,6.66071"/>
1536 <dia:point val="25.4754,9.72825"/>
1537 </dia:attribute>
1538 <dia:attribute name="numcp">
1539 <dia:int val="1"/>
1540 </dia:attribute>
1541 <dia:attribute name="line_color">
1542 <dia:color val="#a020f0"/>
1543 </dia:attribute>
1544 <dia:attribute name="end_arrow">
1545 <dia:enum val="22"/>
1546 </dia:attribute>
1547 <dia:attribute name="end_arrow_length">
1548 <dia:real val="0.5"/>
1549 </dia:attribute>
1550 <dia:attribute name="end_arrow_width">
1551 <dia:real val="0.5"/>
1552 </dia:attribute>
1553 <dia:connections>
1554 <dia:connection handle="1" to="O18" connection="2"/>
1555 </dia:connections>
1556 </dia:object>
1557 <dia:object type="Standard - Line" version="0" id="O51">
1558 <dia:attribute name="obj_pos">
1559 <dia:point val="27.5036,6.68935"/>
1560 </dia:attribute>
1561 <dia:attribute name="obj_bb">
1562 <dia:rectangle val="25.2161,6.62775;27.5652,14.331"/>
1563 </dia:attribute>
1564 <dia:attribute name="conn_endpoints">
1565 <dia:point val="27.5036,6.68935"/>
1566 <dia:point val="25.4,14.2233"/>
1567 </dia:attribute>
1568 <dia:attribute name="numcp">
1569 <dia:int val="1"/>
1570 </dia:attribute>
1571 <dia:attribute name="line_color">
1572 <dia:color val="#a020f0"/>
1573 </dia:attribute>
1574 <dia:attribute name="end_arrow">
1575 <dia:enum val="22"/>
1576 </dia:attribute>
1577 <dia:attribute name="end_arrow_length">
1578 <dia:real val="0.5"/>
1579 </dia:attribute>
1580 <dia:attribute name="end_arrow_width">
1581 <dia:real val="0.5"/>
1582 </dia:attribute>
1583 <dia:connections>
1584 <dia:connection handle="1" to="O37" connection="2"/>
1585 </dia:connections>
1586 </dia:object>
1587 </dia:layer>
1588</dia:diagram>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg
deleted file mode 100644
index 3322cf4c0093..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg
+++ /dev/null
@@ -1,163 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
3<svg width="59cm" height="18cm" viewBox="-186 71 1178 346" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4 <g>
5 <rect style="fill: #ffffff" x="318.9" y="129" width="208.1" height="249"/>
6 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #ff765a" x="318.9" y="129" width="208.1" height="249"/>
7 </g>
8 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-2" y="73" width="806" height="343"/>
9 <g>
10 <ellipse style="fill: #ffffff" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
11 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
12 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.5" cy="166.712" rx="8.5" ry="8.5"/>
13 </g>
14 <g>
15 <ellipse style="fill: #ffffff" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
16 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
17 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.232" cy="205.184" rx="8.5" ry="8.5"/>
18 </g>
19 <g>
20 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.5" y1="167" x2="-30.7361" y2="166.729"/>
21 <polygon style="fill: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/>
22 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-23.2361,166.716 -33.2272,171.734 -30.7361,166.729 -33.2449,161.734 "/>
23 </g>
24 <g>
25 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.732" y1="205.184" x2="980.066" y2="205.212"/>
26 <polygon style="fill: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/>
27 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.566,205.214 977.565,210.212 980.066,205.212 977.567,200.212 "/>
28 </g>
29 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139.96" y="155">
30 <tspan x="-139.96" y="155">pad 0 (sink)</tspan>
31 </text>
32 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.04" y="195">
33 <tspan x="849.04" y="195">pad 2 (source)</tspan>
34 </text>
35 <g>
36 <rect style="fill: #ffffff" x="5.5" y="120" width="159" height="104"/>
37 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="5.5" y="120" width="159" height="104"/>
38 </g>
39 <g>
40 <rect style="fill: #ffffff" x="62.5" y="136" width="94" height="77"/>
41 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="62.5" y="136" width="94" height="77"/>
42 </g>
43 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="30.5" y="89">
44 <tspan x="30.5" y="89"></tspan>
45 </text>
46 <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="9.53836" y="88.9138">
47 <tspan x="9.53836" y="88.9138">sink media</tspan>
48 <tspan x="9.53836" y="104.914">bus format</tspan>
49 </text>
50 <g>
51 <rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/>
52 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/>
53 </g>
54 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="62.5" y2="213"/>
55 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="62.5" y2="136"/>
56 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="156.5" y2="213"/>
57 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="156.5" y2="136"/>
58 <text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442">
59 <tspan x="334.704" y="149.442">sink compose</tspan>
60 <tspan x="334.704" y="165.442">selection (scaling)</tspan>
61 </text>
62 <g>
63 <rect style="fill: #ffffff" x="409.322" y="194.565" width="100.186" height="71.4523"/>
64 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="409.322" y="194.565" width="100.186" height="71.4523"/>
65 </g>
66 <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="689.5" y="105.128">
67 <tspan x="689.5" y="105.128">source media</tspan>
68 <tspan x="689.5" y="121.128">bus format</tspan>
69 </text>
70 <g>
71 <rect style="fill: #ffffff" x="688.488" y="173.834" width="100.186" height="71.4523"/>
72 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="688.488" y="173.834" width="100.186" height="71.4523"/>
73 </g>
74 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="245.286" x2="409.322" y2="266.018"/>
75 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="688.488" y1="173.834" x2="409.322" y2="194.565"/>
76 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="245.286" x2="509.508" y2="266.018"/>
77 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="788.674" y1="173.834" x2="509.508" y2="194.565"/>
78 <text style="fill: #ff765a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="325" y="103">
79 <tspan x="325" y="103">sink compose</tspan>
80 <tspan x="325" y="119">bounds selection</tspan>
81 </text>
82 <g>
83 <ellipse style="fill: #ffffff" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
84 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
85 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-12.0982" cy="341.512" rx="8.5" ry="8.5"/>
86 </g>
87 <g>
88 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-184.098" y1="341.8" x2="-30.3343" y2="341.529"/>
89 <polygon style="fill: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/>
90 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-22.8343,341.516 -32.8254,346.534 -30.3343,341.529 -32.8431,336.534 "/>
91 </g>
92 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-139" y="329">
93 <tspan x="-139" y="329">pad 1 (sink)</tspan>
94 </text>
95 <g>
96 <rect style="fill: #ffffff" x="7.80824" y="292.8" width="112.092" height="82.2"/>
97 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="7.80824" y="292.8" width="112.092" height="82.2"/>
98 </g>
99 <g>
100 <rect style="fill: #ffffff" x="52.9" y="314.8" width="58.1" height="50.2"/>
101 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="52.9" y="314.8" width="58.1" height="50.2"/>
102 </g>
103 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="31.9" y="259.8">
104 <tspan x="31.9" y="259.8"></tspan>
105 </text>
106 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="251.9" x2="52.9" y2="314.8"/>
107 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="358.9" y1="316" x2="52.9" y2="365"/>
108 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="316" x2="111" y2="365"/>
109 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="434" y1="251.9" x2="111" y2="314.8"/>
110 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="358.9" y="251.9" width="75.1" height="64.1"/>
111 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="443.262" y="284.466" width="64.738" height="48.534"/>
112 <g>
113 <rect style="fill: #ffffff" x="693.428" y="324.734" width="63.572" height="49.266"/>
114 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="693.428" y="324.734" width="63.572" height="49.266"/>
115 </g>
116 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="374" x2="443.262" y2="333"/>
117 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="693.428" y1="324.734" x2="443.262" y2="284.466"/>
118 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="374" x2="508" y2="333"/>
119 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="757" y1="324.734" x2="508" y2="284.466"/>
120 <g>
121 <ellipse style="fill: #ffffff" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
122 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
123 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="815.44" cy="343.984" rx="8.5" ry="8.5"/>
124 </g>
125 <g>
126 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="823.94" y1="343.984" x2="980.274" y2="344.012"/>
127 <polygon style="fill: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/>
128 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="987.774,344.014 977.773,349.012 980.274,344.012 977.775,339.012 "/>
129 </g>
130 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="849.248" y="333.8">
131 <tspan x="849.248" y="333.8">pad 3 (source)</tspan>
132 </text>
133 <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="197" y="91">
134 <tspan x="197" y="91">sink</tspan>
135 <tspan x="197" y="107">crop</tspan>
136 <tspan x="197" y="123">selection</tspan>
137 </text>
138 <text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="553" y="95">
139 <tspan x="553" y="95">source</tspan>
140 <tspan x="553" y="111">crop</tspan>
141 <tspan x="553" y="127">selection</tspan>
142 </text>
143 <g>
144 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="211" y1="132" x2="166.21" y2="135.287"/>
145 <polygon style="fill: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/>
146 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="158.73,135.836 168.337,130.118 166.21,135.287 169.069,140.091 "/>
147 </g>
148 <g>
149 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x1="209" y1="131" x2="115.581" y2="306.209"/>
150 <polygon style="fill: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/>
151 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" points="112.052,312.827 112.345,301.65 115.581,306.209 121.169,306.355 "/>
152 </g>
153 <g>
154 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.492" y1="133.214" x2="514.916" y2="186.469"/>
155 <polygon style="fill: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/>
156 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="510.75,192.706 512.147,181.613 514.916,186.469 520.463,187.168 "/>
157 </g>
158 <g>
159 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="550.072" y1="133.787" x2="510.618" y2="275.089"/>
160 <polygon style="fill: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/>
161 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="508.601,282.312 506.475,271.336 510.618,275.089 516.106,274.025 "/>
162 </g>
163</svg>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia
deleted file mode 100644
index 0cd50a7bda80..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia
+++ /dev/null
@@ -1,1152 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<dia:diagram xmlns:dia="http://www.lysator.liu.se/~alla/dia/">
3 <dia:diagramdata>
4 <dia:attribute name="background">
5 <dia:color val="#ffffff"/>
6 </dia:attribute>
7 <dia:attribute name="pagebreak">
8 <dia:color val="#000099"/>
9 </dia:attribute>
10 <dia:attribute name="paper">
11 <dia:composite type="paper">
12 <dia:attribute name="name">
13 <dia:string>#A4#</dia:string>
14 </dia:attribute>
15 <dia:attribute name="tmargin">
16 <dia:real val="2.8222000598907471"/>
17 </dia:attribute>
18 <dia:attribute name="bmargin">
19 <dia:real val="2.8222000598907471"/>
20 </dia:attribute>
21 <dia:attribute name="lmargin">
22 <dia:real val="2.8222000598907471"/>
23 </dia:attribute>
24 <dia:attribute name="rmargin">
25 <dia:real val="2.8222000598907471"/>
26 </dia:attribute>
27 <dia:attribute name="is_portrait">
28 <dia:boolean val="false"/>
29 </dia:attribute>
30 <dia:attribute name="scaling">
31 <dia:real val="0.49000000953674316"/>
32 </dia:attribute>
33 <dia:attribute name="fitto">
34 <dia:boolean val="false"/>
35 </dia:attribute>
36 </dia:composite>
37 </dia:attribute>
38 <dia:attribute name="grid">
39 <dia:composite type="grid">
40 <dia:attribute name="width_x">
41 <dia:real val="1"/>
42 </dia:attribute>
43 <dia:attribute name="width_y">
44 <dia:real val="1"/>
45 </dia:attribute>
46 <dia:attribute name="visible_x">
47 <dia:int val="1"/>
48 </dia:attribute>
49 <dia:attribute name="visible_y">
50 <dia:int val="1"/>
51 </dia:attribute>
52 <dia:composite type="color"/>
53 </dia:composite>
54 </dia:attribute>
55 <dia:attribute name="color">
56 <dia:color val="#d8e5e5"/>
57 </dia:attribute>
58 <dia:attribute name="guides">
59 <dia:composite type="guides">
60 <dia:attribute name="hguides"/>
61 <dia:attribute name="vguides"/>
62 </dia:composite>
63 </dia:attribute>
64 </dia:diagramdata>
65 <dia:layer name="Background" visible="true" active="true">
66 <dia:object type="Standard - Box" version="0" id="O0">
67 <dia:attribute name="obj_pos">
68 <dia:point val="-0.4,6.5"/>
69 </dia:attribute>
70 <dia:attribute name="obj_bb">
71 <dia:rectangle val="-0.45,6.45;39.95,22.9"/>
72 </dia:attribute>
73 <dia:attribute name="elem_corner">
74 <dia:point val="-0.4,6.5"/>
75 </dia:attribute>
76 <dia:attribute name="elem_width">
77 <dia:real val="40.299999999999997"/>
78 </dia:attribute>
79 <dia:attribute name="elem_height">
80 <dia:real val="16.349999999999998"/>
81 </dia:attribute>
82 <dia:attribute name="border_width">
83 <dia:real val="0.10000000149011612"/>
84 </dia:attribute>
85 <dia:attribute name="show_background">
86 <dia:boolean val="false"/>
87 </dia:attribute>
88 </dia:object>
89 <dia:object type="Standard - Box" version="0" id="O1">
90 <dia:attribute name="obj_pos">
91 <dia:point val="0.225,9.45"/>
92 </dia:attribute>
93 <dia:attribute name="obj_bb">
94 <dia:rectangle val="0.175,9.4;8.225,14.7"/>
95 </dia:attribute>
96 <dia:attribute name="elem_corner">
97 <dia:point val="0.225,9.45"/>
98 </dia:attribute>
99 <dia:attribute name="elem_width">
100 <dia:real val="7.9499999999999975"/>
101 </dia:attribute>
102 <dia:attribute name="elem_height">
103 <dia:real val="5.1999999999999975"/>
104 </dia:attribute>
105 <dia:attribute name="border_width">
106 <dia:real val="0.10000000149011612"/>
107 </dia:attribute>
108 <dia:attribute name="border_color">
109 <dia:color val="#a52a2a"/>
110 </dia:attribute>
111 <dia:attribute name="show_background">
112 <dia:boolean val="true"/>
113 </dia:attribute>
114 </dia:object>
115 <dia:object type="Standard - Box" version="0" id="O2">
116 <dia:attribute name="obj_pos">
117 <dia:point val="2.475,10.2"/>
118 </dia:attribute>
119 <dia:attribute name="obj_bb">
120 <dia:rectangle val="2.425,10.15;7.225,14.1"/>
121 </dia:attribute>
122 <dia:attribute name="elem_corner">
123 <dia:point val="2.475,10.2"/>
124 </dia:attribute>
125 <dia:attribute name="elem_width">
126 <dia:real val="4.6999999999999975"/>
127 </dia:attribute>
128 <dia:attribute name="elem_height">
129 <dia:real val="3.8499999999999979"/>
130 </dia:attribute>
131 <dia:attribute name="border_width">
132 <dia:real val="0.10000000149011612"/>
133 </dia:attribute>
134 <dia:attribute name="border_color">
135 <dia:color val="#0000ff"/>
136 </dia:attribute>
137 <dia:attribute name="show_background">
138 <dia:boolean val="true"/>
139 </dia:attribute>
140 </dia:object>
141 <dia:object type="Standard - Text" version="1" id="O3">
142 <dia:attribute name="obj_pos">
143 <dia:point val="3,11.2"/>
144 </dia:attribute>
145 <dia:attribute name="obj_bb">
146 <dia:rectangle val="3,10.605;5.8775,12.9525"/>
147 </dia:attribute>
148 <dia:attribute name="text">
149 <dia:composite type="text">
150 <dia:attribute name="string">
151 <dia:string>#sink
152crop
153selection#</dia:string>
154 </dia:attribute>
155 <dia:attribute name="font">
156 <dia:font family="sans" style="0" name="Helvetica"/>
157 </dia:attribute>
158 <dia:attribute name="height">
159 <dia:real val="0.80000000000000004"/>
160 </dia:attribute>
161 <dia:attribute name="pos">
162 <dia:point val="3,11.2"/>
163 </dia:attribute>
164 <dia:attribute name="color">
165 <dia:color val="#0000ff"/>
166 </dia:attribute>
167 <dia:attribute name="alignment">
168 <dia:enum val="0"/>
169 </dia:attribute>
170 </dia:composite>
171 </dia:attribute>
172 <dia:attribute name="valign">
173 <dia:enum val="3"/>
174 </dia:attribute>
175 </dia:object>
176 <dia:object type="Standard - Text" version="1" id="O4">
177 <dia:attribute name="obj_pos">
178 <dia:point val="1.475,7.9"/>
179 </dia:attribute>
180 <dia:attribute name="obj_bb">
181 <dia:rectangle val="1.475,7.305;1.475,8.0525"/>
182 </dia:attribute>
183 <dia:attribute name="text">
184 <dia:composite type="text">
185 <dia:attribute name="string">
186 <dia:string>##</dia:string>
187 </dia:attribute>
188 <dia:attribute name="font">
189 <dia:font family="sans" style="0" name="Helvetica"/>
190 </dia:attribute>
191 <dia:attribute name="height">
192 <dia:real val="0.80000000000000004"/>
193 </dia:attribute>
194 <dia:attribute name="pos">
195 <dia:point val="1.475,7.9"/>
196 </dia:attribute>
197 <dia:attribute name="color">
198 <dia:color val="#000000"/>
199 </dia:attribute>
200 <dia:attribute name="alignment">
201 <dia:enum val="0"/>
202 </dia:attribute>
203 </dia:composite>
204 </dia:attribute>
205 <dia:attribute name="valign">
206 <dia:enum val="3"/>
207 </dia:attribute>
208 </dia:object>
209 <dia:object type="Standard - Text" version="1" id="O5">
210 <dia:attribute name="obj_pos">
211 <dia:point val="0.426918,7.89569"/>
212 </dia:attribute>
213 <dia:attribute name="obj_bb">
214 <dia:rectangle val="0.426918,7.30069;3.90942,8.84819"/>
215 </dia:attribute>
216 <dia:attribute name="text">
217 <dia:composite type="text">
218 <dia:attribute name="string">
219 <dia:string>#sink media
220bus format#</dia:string>
221 </dia:attribute>
222 <dia:attribute name="font">
223 <dia:font family="sans" style="0" name="Helvetica"/>
224 </dia:attribute>
225 <dia:attribute name="height">
226 <dia:real val="0.80000000000000004"/>
227 </dia:attribute>
228 <dia:attribute name="pos">
229 <dia:point val="0.426918,7.89569"/>
230 </dia:attribute>
231 <dia:attribute name="color">
232 <dia:color val="#a52a2a"/>
233 </dia:attribute>
234 <dia:attribute name="alignment">
235 <dia:enum val="0"/>
236 </dia:attribute>
237 </dia:composite>
238 </dia:attribute>
239 <dia:attribute name="valign">
240 <dia:enum val="3"/>
241 </dia:attribute>
242 </dia:object>
243 <dia:object type="Standard - Box" version="0" id="O6">
244 <dia:attribute name="obj_pos">
245 <dia:point val="16.6822,9.28251"/>
246 </dia:attribute>
247 <dia:attribute name="obj_bb">
248 <dia:rectangle val="16.6322,9.23251;24.9922,17.9564"/>
249 </dia:attribute>
250 <dia:attribute name="elem_corner">
251 <dia:point val="16.6822,9.28251"/>
252 </dia:attribute>
253 <dia:attribute name="elem_width">
254 <dia:real val="8.2600228398861297"/>
255 </dia:attribute>
256 <dia:attribute name="elem_height">
257 <dia:real val="8.6238900617957164"/>
258 </dia:attribute>
259 <dia:attribute name="border_width">
260 <dia:real val="0.10000000149011612"/>
261 </dia:attribute>
262 <dia:attribute name="border_color">
263 <dia:color val="#00ff00"/>
264 </dia:attribute>
265 <dia:attribute name="show_background">
266 <dia:boolean val="true"/>
267 </dia:attribute>
268 </dia:object>
269 <dia:object type="Standard - Line" version="0" id="O7">
270 <dia:attribute name="obj_pos">
271 <dia:point val="16.6822,17.9064"/>
272 </dia:attribute>
273 <dia:attribute name="obj_bb">
274 <dia:rectangle val="2.41365,13.9886;16.7436,17.9678"/>
275 </dia:attribute>
276 <dia:attribute name="conn_endpoints">
277 <dia:point val="16.6822,17.9064"/>
278 <dia:point val="2.475,14.05"/>
279 </dia:attribute>
280 <dia:attribute name="numcp">
281 <dia:int val="1"/>
282 </dia:attribute>
283 <dia:attribute name="line_color">
284 <dia:color val="#e60505"/>
285 </dia:attribute>
286 <dia:attribute name="line_style">
287 <dia:enum val="4"/>
288 </dia:attribute>
289 <dia:connections>
290 <dia:connection handle="0" to="O6" connection="5"/>
291 <dia:connection handle="1" to="O2" connection="5"/>
292 </dia:connections>
293 </dia:object>
294 <dia:object type="Standard - Line" version="0" id="O8">
295 <dia:attribute name="obj_pos">
296 <dia:point val="16.6822,9.28251"/>
297 </dia:attribute>
298 <dia:attribute name="obj_bb">
299 <dia:rectangle val="2.42188,9.22939;16.7353,10.2531"/>
300 </dia:attribute>
301 <dia:attribute name="conn_endpoints">
302 <dia:point val="16.6822,9.28251"/>
303 <dia:point val="2.475,10.2"/>
304 </dia:attribute>
305 <dia:attribute name="numcp">
306 <dia:int val="1"/>
307 </dia:attribute>
308 <dia:attribute name="line_color">
309 <dia:color val="#e60505"/>
310 </dia:attribute>
311 <dia:attribute name="line_style">
312 <dia:enum val="4"/>
313 </dia:attribute>
314 <dia:connections>
315 <dia:connection handle="0" to="O6" connection="0"/>
316 <dia:connection handle="1" to="O2" connection="0"/>
317 </dia:connections>
318 </dia:object>
319 <dia:object type="Standard - Line" version="0" id="O9">
320 <dia:attribute name="obj_pos">
321 <dia:point val="24.9422,17.9064"/>
322 </dia:attribute>
323 <dia:attribute name="obj_bb">
324 <dia:rectangle val="7.11553,13.9905;25.0017,17.9659"/>
325 </dia:attribute>
326 <dia:attribute name="conn_endpoints">
327 <dia:point val="24.9422,17.9064"/>
328 <dia:point val="7.175,14.05"/>
329 </dia:attribute>
330 <dia:attribute name="numcp">
331 <dia:int val="1"/>
332 </dia:attribute>
333 <dia:attribute name="line_color">
334 <dia:color val="#e60505"/>
335 </dia:attribute>
336 <dia:attribute name="line_style">
337 <dia:enum val="4"/>
338 </dia:attribute>
339 <dia:connections>
340 <dia:connection handle="0" to="O6" connection="7"/>
341 <dia:connection handle="1" to="O2" connection="7"/>
342 </dia:connections>
343 </dia:object>
344 <dia:object type="Standard - Line" version="0" id="O10">
345 <dia:attribute name="obj_pos">
346 <dia:point val="24.9422,9.28251"/>
347 </dia:attribute>
348 <dia:attribute name="obj_bb">
349 <dia:rectangle val="7.12249,9.23;24.9947,10.2525"/>
350 </dia:attribute>
351 <dia:attribute name="conn_endpoints">
352 <dia:point val="24.9422,9.28251"/>
353 <dia:point val="7.175,10.2"/>
354 </dia:attribute>
355 <dia:attribute name="numcp">
356 <dia:int val="1"/>
357 </dia:attribute>
358 <dia:attribute name="line_color">
359 <dia:color val="#e60505"/>
360 </dia:attribute>
361 <dia:attribute name="line_style">
362 <dia:enum val="4"/>
363 </dia:attribute>
364 <dia:connections>
365 <dia:connection handle="0" to="O6" connection="2"/>
366 <dia:connection handle="1" to="O2" connection="2"/>
367 </dia:connections>
368 </dia:object>
369 <dia:object type="Standard - Text" version="1" id="O11">
370 <dia:attribute name="obj_pos">
371 <dia:point val="16.7352,7.47209"/>
372 </dia:attribute>
373 <dia:attribute name="obj_bb">
374 <dia:rectangle val="16.7352,6.87709;22.5602,8.42459"/>
375 </dia:attribute>
376 <dia:attribute name="text">
377 <dia:composite type="text">
378 <dia:attribute name="string">
379 <dia:string>#sink compose
380selection (scaling)#</dia:string>
381 </dia:attribute>
382 <dia:attribute name="font">
383 <dia:font family="sans" style="0" name="Helvetica"/>
384 </dia:attribute>
385 <dia:attribute name="height">
386 <dia:real val="0.80000000000000004"/>
387 </dia:attribute>
388 <dia:attribute name="pos">
389 <dia:point val="16.7352,7.47209"/>
390 </dia:attribute>
391 <dia:attribute name="color">
392 <dia:color val="#00ff00"/>
393 </dia:attribute>
394 <dia:attribute name="alignment">
395 <dia:enum val="0"/>
396 </dia:attribute>
397 </dia:composite>
398 </dia:attribute>
399 <dia:attribute name="valign">
400 <dia:enum val="3"/>
401 </dia:attribute>
402 </dia:object>
403 <dia:object type="Standard - Box" version="0" id="O12">
404 <dia:attribute name="obj_pos">
405 <dia:point val="19.1161,9.97825"/>
406 </dia:attribute>
407 <dia:attribute name="obj_bb">
408 <dia:rectangle val="19.0661,9.92825;24.1754,13.6009"/>
409 </dia:attribute>
410 <dia:attribute name="elem_corner">
411 <dia:point val="19.1161,9.97825"/>
412 </dia:attribute>
413 <dia:attribute name="elem_width">
414 <dia:real val="5.009308462554376"/>
415 </dia:attribute>
416 <dia:attribute name="elem_height">
417 <dia:real val="3.5726155970598077"/>
418 </dia:attribute>
419 <dia:attribute name="border_width">
420 <dia:real val="0.10000000149011612"/>
421 </dia:attribute>
422 <dia:attribute name="border_color">
423 <dia:color val="#a020f0"/>
424 </dia:attribute>
425 <dia:attribute name="show_background">
426 <dia:boolean val="true"/>
427 </dia:attribute>
428 </dia:object>
429 <dia:object type="Standard - Text" version="1" id="O13">
430 <dia:attribute name="obj_pos">
431 <dia:point val="27.1661,7.47209"/>
432 </dia:attribute>
433 <dia:attribute name="obj_bb">
434 <dia:rectangle val="27.1661,6.87709;30.0436,9.22459"/>
435 </dia:attribute>
436 <dia:attribute name="text">
437 <dia:composite type="text">
438 <dia:attribute name="string">
439 <dia:string>#source
440crop
441selection#</dia:string>
442 </dia:attribute>
443 <dia:attribute name="font">
444 <dia:font family="sans" style="0" name="Helvetica"/>
445 </dia:attribute>
446 <dia:attribute name="height">
447 <dia:real val="0.80000000000000004"/>
448 </dia:attribute>
449 <dia:attribute name="pos">
450 <dia:point val="27.1661,7.47209"/>
451 </dia:attribute>
452 <dia:attribute name="color">
453 <dia:color val="#a020f0"/>
454 </dia:attribute>
455 <dia:attribute name="alignment">
456 <dia:enum val="0"/>
457 </dia:attribute>
458 </dia:composite>
459 </dia:attribute>
460 <dia:attribute name="valign">
461 <dia:enum val="3"/>
462 </dia:attribute>
463 </dia:object>
464 <dia:object type="Standard - Text" version="1" id="O14">
465 <dia:attribute name="obj_pos">
466 <dia:point val="34.575,7.8564"/>
467 </dia:attribute>
468 <dia:attribute name="obj_bb">
469 <dia:rectangle val="34.575,7.2614;38.8975,8.8089"/>
470 </dia:attribute>
471 <dia:attribute name="text">
472 <dia:composite type="text">
473 <dia:attribute name="string">
474 <dia:string>#source media
475bus format#</dia:string>
476 </dia:attribute>
477 <dia:attribute name="font">
478 <dia:font family="sans" style="0" name="Helvetica"/>
479 </dia:attribute>
480 <dia:attribute name="height">
481 <dia:real val="0.80000000000000004"/>
482 </dia:attribute>
483 <dia:attribute name="pos">
484 <dia:point val="34.575,7.8564"/>
485 </dia:attribute>
486 <dia:attribute name="color">
487 <dia:color val="#8b6914"/>
488 </dia:attribute>
489 <dia:attribute name="alignment">
490 <dia:enum val="0"/>
491 </dia:attribute>
492 </dia:composite>
493 </dia:attribute>
494 <dia:attribute name="valign">
495 <dia:enum val="3"/>
496 </dia:attribute>
497 </dia:object>
498 <dia:object type="Standard - Box" version="0" id="O15">
499 <dia:attribute name="obj_pos">
500 <dia:point val="34.5244,11.2917"/>
501 </dia:attribute>
502 <dia:attribute name="obj_bb">
503 <dia:rectangle val="34.4744,11.2417;39.5837,14.9143"/>
504 </dia:attribute>
505 <dia:attribute name="elem_corner">
506 <dia:point val="34.5244,11.2917"/>
507 </dia:attribute>
508 <dia:attribute name="elem_width">
509 <dia:real val="5.009308462554376"/>
510 </dia:attribute>
511 <dia:attribute name="elem_height">
512 <dia:real val="3.5726155970598077"/>
513 </dia:attribute>
514 <dia:attribute name="border_width">
515 <dia:real val="0.10000000149011612"/>
516 </dia:attribute>
517 <dia:attribute name="border_color">
518 <dia:color val="#8b6914"/>
519 </dia:attribute>
520 <dia:attribute name="show_background">
521 <dia:boolean val="true"/>
522 </dia:attribute>
523 </dia:object>
524 <dia:object type="Standard - Line" version="0" id="O16">
525 <dia:attribute name="obj_pos">
526 <dia:point val="34.5244,14.8643"/>
527 </dia:attribute>
528 <dia:attribute name="obj_bb">
529 <dia:rectangle val="19.062,13.4968;34.5785,14.9184"/>
530 </dia:attribute>
531 <dia:attribute name="conn_endpoints">
532 <dia:point val="34.5244,14.8643"/>
533 <dia:point val="19.1161,13.5509"/>
534 </dia:attribute>
535 <dia:attribute name="numcp">
536 <dia:int val="1"/>
537 </dia:attribute>
538 <dia:attribute name="line_color">
539 <dia:color val="#e60505"/>
540 </dia:attribute>
541 <dia:attribute name="line_style">
542 <dia:enum val="4"/>
543 </dia:attribute>
544 <dia:connections>
545 <dia:connection handle="0" to="O15" connection="5"/>
546 <dia:connection handle="1" to="O12" connection="5"/>
547 </dia:connections>
548 </dia:object>
549 <dia:object type="Standard - Line" version="0" id="O17">
550 <dia:attribute name="obj_pos">
551 <dia:point val="34.5244,11.2917"/>
552 </dia:attribute>
553 <dia:attribute name="obj_bb">
554 <dia:rectangle val="19.062,9.92418;34.5785,11.3458"/>
555 </dia:attribute>
556 <dia:attribute name="conn_endpoints">
557 <dia:point val="34.5244,11.2917"/>
558 <dia:point val="19.1161,9.97825"/>
559 </dia:attribute>
560 <dia:attribute name="numcp">
561 <dia:int val="1"/>
562 </dia:attribute>
563 <dia:attribute name="line_color">
564 <dia:color val="#e60505"/>
565 </dia:attribute>
566 <dia:attribute name="line_style">
567 <dia:enum val="4"/>
568 </dia:attribute>
569 <dia:connections>
570 <dia:connection handle="0" to="O15" connection="0"/>
571 <dia:connection handle="1" to="O12" connection="0"/>
572 </dia:connections>
573 </dia:object>
574 <dia:object type="Standard - Line" version="0" id="O18">
575 <dia:attribute name="obj_pos">
576 <dia:point val="39.5337,14.8643"/>
577 </dia:attribute>
578 <dia:attribute name="obj_bb">
579 <dia:rectangle val="24.0713,13.4968;39.5878,14.9184"/>
580 </dia:attribute>
581 <dia:attribute name="conn_endpoints">
582 <dia:point val="39.5337,14.8643"/>
583 <dia:point val="24.1254,13.5509"/>
584 </dia:attribute>
585 <dia:attribute name="numcp">
586 <dia:int val="1"/>
587 </dia:attribute>
588 <dia:attribute name="line_color">
589 <dia:color val="#e60505"/>
590 </dia:attribute>
591 <dia:attribute name="line_style">
592 <dia:enum val="4"/>
593 </dia:attribute>
594 <dia:connections>
595 <dia:connection handle="0" to="O15" connection="7"/>
596 <dia:connection handle="1" to="O12" connection="7"/>
597 </dia:connections>
598 </dia:object>
599 <dia:object type="Standard - Line" version="0" id="O19">
600 <dia:attribute name="obj_pos">
601 <dia:point val="39.5337,11.2917"/>
602 </dia:attribute>
603 <dia:attribute name="obj_bb">
604 <dia:rectangle val="24.0713,9.92418;39.5878,11.3458"/>
605 </dia:attribute>
606 <dia:attribute name="conn_endpoints">
607 <dia:point val="39.5337,11.2917"/>
608 <dia:point val="24.1254,9.97825"/>
609 </dia:attribute>
610 <dia:attribute name="numcp">
611 <dia:int val="1"/>
612 </dia:attribute>
613 <dia:attribute name="line_color">
614 <dia:color val="#e60505"/>
615 </dia:attribute>
616 <dia:attribute name="line_style">
617 <dia:enum val="4"/>
618 </dia:attribute>
619 <dia:connections>
620 <dia:connection handle="0" to="O15" connection="2"/>
621 <dia:connection handle="1" to="O12" connection="2"/>
622 </dia:connections>
623 </dia:object>
624 <dia:object type="Geometric - Perfect Circle" version="1" id="O20">
625 <dia:attribute name="obj_pos">
626 <dia:point val="39.98,12.0742"/>
627 </dia:attribute>
628 <dia:attribute name="obj_bb">
629 <dia:rectangle val="39.93,12.0242;40.88,12.9742"/>
630 </dia:attribute>
631 <dia:attribute name="meta">
632 <dia:composite type="dict"/>
633 </dia:attribute>
634 <dia:attribute name="elem_corner">
635 <dia:point val="39.98,12.0742"/>
636 </dia:attribute>
637 <dia:attribute name="elem_width">
638 <dia:real val="0.84999999999999787"/>
639 </dia:attribute>
640 <dia:attribute name="elem_height">
641 <dia:real val="0.84999999999999787"/>
642 </dia:attribute>
643 <dia:attribute name="line_width">
644 <dia:real val="0.10000000000000001"/>
645 </dia:attribute>
646 <dia:attribute name="line_colour">
647 <dia:color val="#000000"/>
648 </dia:attribute>
649 <dia:attribute name="fill_colour">
650 <dia:color val="#ffffff"/>
651 </dia:attribute>
652 <dia:attribute name="show_background">
653 <dia:boolean val="true"/>
654 </dia:attribute>
655 <dia:attribute name="line_style">
656 <dia:enum val="0"/>
657 <dia:real val="1"/>
658 </dia:attribute>
659 <dia:attribute name="flip_horizontal">
660 <dia:boolean val="false"/>
661 </dia:attribute>
662 <dia:attribute name="flip_vertical">
663 <dia:boolean val="false"/>
664 </dia:attribute>
665 <dia:attribute name="subscale">
666 <dia:real val="1"/>
667 </dia:attribute>
668 </dia:object>
669 <dia:object type="Standard - Line" version="0" id="O21">
670 <dia:attribute name="obj_pos">
671 <dia:point val="40.83,12.4992"/>
672 </dia:attribute>
673 <dia:attribute name="obj_bb">
674 <dia:rectangle val="40.78,12.1388;49.2453,12.8624"/>
675 </dia:attribute>
676 <dia:attribute name="conn_endpoints">
677 <dia:point val="40.83,12.4992"/>
678 <dia:point val="49.1335,12.5007"/>
679 </dia:attribute>
680 <dia:attribute name="numcp">
681 <dia:int val="1"/>
682 </dia:attribute>
683 <dia:attribute name="end_arrow">
684 <dia:enum val="22"/>
685 </dia:attribute>
686 <dia:attribute name="end_arrow_length">
687 <dia:real val="0.5"/>
688 </dia:attribute>
689 <dia:attribute name="end_arrow_width">
690 <dia:real val="0.5"/>
691 </dia:attribute>
692 <dia:connections>
693 <dia:connection handle="0" to="O20" connection="3"/>
694 </dia:connections>
695 </dia:object>
696 <dia:object type="Standard - Text" version="1" id="O22">
697 <dia:attribute name="obj_pos">
698 <dia:point val="42.0954,11.99"/>
699 </dia:attribute>
700 <dia:attribute name="obj_bb">
701 <dia:rectangle val="42.0954,11.395;46.7404,12.1425"/>
702 </dia:attribute>
703 <dia:attribute name="text">
704 <dia:composite type="text">
705 <dia:attribute name="string">
706 <dia:string>#pad 1 (source)#</dia:string>
707 </dia:attribute>
708 <dia:attribute name="font">
709 <dia:font family="sans" style="0" name="Helvetica"/>
710 </dia:attribute>
711 <dia:attribute name="height">
712 <dia:real val="0.80000000000000004"/>
713 </dia:attribute>
714 <dia:attribute name="pos">
715 <dia:point val="42.0954,11.99"/>
716 </dia:attribute>
717 <dia:attribute name="color">
718 <dia:color val="#000000"/>
719 </dia:attribute>
720 <dia:attribute name="alignment">
721 <dia:enum val="0"/>
722 </dia:attribute>
723 </dia:composite>
724 </dia:attribute>
725 <dia:attribute name="valign">
726 <dia:enum val="3"/>
727 </dia:attribute>
728 </dia:object>
729 <dia:object type="Geometric - Perfect Circle" version="1" id="O23">
730 <dia:attribute name="obj_pos">
731 <dia:point val="-1.44491,11.6506"/>
732 </dia:attribute>
733 <dia:attribute name="obj_bb">
734 <dia:rectangle val="-1.49491,11.6006;-0.54491,12.5506"/>
735 </dia:attribute>
736 <dia:attribute name="meta">
737 <dia:composite type="dict"/>
738 </dia:attribute>
739 <dia:attribute name="elem_corner">
740 <dia:point val="-1.44491,11.6506"/>
741 </dia:attribute>
742 <dia:attribute name="elem_width">
743 <dia:real val="0.84999999999999787"/>
744 </dia:attribute>
745 <dia:attribute name="elem_height">
746 <dia:real val="0.84999999999999787"/>
747 </dia:attribute>
748 <dia:attribute name="line_width">
749 <dia:real val="0.10000000000000001"/>
750 </dia:attribute>
751 <dia:attribute name="line_colour">
752 <dia:color val="#000000"/>
753 </dia:attribute>
754 <dia:attribute name="fill_colour">
755 <dia:color val="#ffffff"/>
756 </dia:attribute>
757 <dia:attribute name="show_background">
758 <dia:boolean val="true"/>
759 </dia:attribute>
760 <dia:attribute name="line_style">
761 <dia:enum val="0"/>
762 <dia:real val="1"/>
763 </dia:attribute>
764 <dia:attribute name="flip_horizontal">
765 <dia:boolean val="false"/>
766 </dia:attribute>
767 <dia:attribute name="flip_vertical">
768 <dia:boolean val="false"/>
769 </dia:attribute>
770 <dia:attribute name="subscale">
771 <dia:real val="1"/>
772 </dia:attribute>
773 </dia:object>
774 <dia:object type="Standard - Line" version="0" id="O24">
775 <dia:attribute name="obj_pos">
776 <dia:point val="-9.61991,12.09"/>
777 </dia:attribute>
778 <dia:attribute name="obj_bb">
779 <dia:rectangle val="-9.67,11.7149;-1.33311,12.4385"/>
780 </dia:attribute>
781 <dia:attribute name="conn_endpoints">
782 <dia:point val="-9.61991,12.09"/>
783 <dia:point val="-1.44491,12.0756"/>
784 </dia:attribute>
785 <dia:attribute name="numcp">
786 <dia:int val="1"/>
787 </dia:attribute>
788 <dia:attribute name="end_arrow">
789 <dia:enum val="22"/>
790 </dia:attribute>
791 <dia:attribute name="end_arrow_length">
792 <dia:real val="0.5"/>
793 </dia:attribute>
794 <dia:attribute name="end_arrow_width">
795 <dia:real val="0.5"/>
796 </dia:attribute>
797 <dia:connections>
798 <dia:connection handle="1" to="O23" connection="2"/>
799 </dia:connections>
800 </dia:object>
801 <dia:object type="Standard - Text" version="1" id="O25">
802 <dia:attribute name="obj_pos">
803 <dia:point val="-7.39291,11.49"/>
804 </dia:attribute>
805 <dia:attribute name="obj_bb">
806 <dia:rectangle val="-7.39291,10.895;-3.58791,11.6425"/>
807 </dia:attribute>
808 <dia:attribute name="text">
809 <dia:composite type="text">
810 <dia:attribute name="string">
811 <dia:string>#pad 0 (sink)#</dia:string>
812 </dia:attribute>
813 <dia:attribute name="font">
814 <dia:font family="sans" style="0" name="Helvetica"/>
815 </dia:attribute>
816 <dia:attribute name="height">
817 <dia:real val="0.80000000000000004"/>
818 </dia:attribute>
819 <dia:attribute name="pos">
820 <dia:point val="-7.39291,11.49"/>
821 </dia:attribute>
822 <dia:attribute name="color">
823 <dia:color val="#000000"/>
824 </dia:attribute>
825 <dia:attribute name="alignment">
826 <dia:enum val="0"/>
827 </dia:attribute>
828 </dia:composite>
829 </dia:attribute>
830 <dia:attribute name="valign">
831 <dia:enum val="3"/>
832 </dia:attribute>
833 </dia:object>
834 <dia:object type="Standard - Box" version="0" id="O26">
835 <dia:attribute name="obj_pos">
836 <dia:point val="19.4911,13.8333"/>
837 </dia:attribute>
838 <dia:attribute name="obj_bb">
839 <dia:rectangle val="19.4411,13.7833;24.5504,17.4559"/>
840 </dia:attribute>
841 <dia:attribute name="elem_corner">
842 <dia:point val="19.4911,13.8333"/>
843 </dia:attribute>
844 <dia:attribute name="elem_width">
845 <dia:real val="5.009308462554376"/>
846 </dia:attribute>
847 <dia:attribute name="elem_height">
848 <dia:real val="3.5726155970598077"/>
849 </dia:attribute>
850 <dia:attribute name="border_width">
851 <dia:real val="0.10000000149011612"/>
852 </dia:attribute>
853 <dia:attribute name="border_color">
854 <dia:color val="#a020f0"/>
855 </dia:attribute>
856 <dia:attribute name="show_background">
857 <dia:boolean val="false"/>
858 </dia:attribute>
859 </dia:object>
860 <dia:object type="Standard - Box" version="0" id="O27">
861 <dia:attribute name="obj_pos">
862 <dia:point val="34.4994,17.2967"/>
863 </dia:attribute>
864 <dia:attribute name="obj_bb">
865 <dia:rectangle val="34.4494,17.2467;39.5587,20.9193"/>
866 </dia:attribute>
867 <dia:attribute name="elem_corner">
868 <dia:point val="34.4994,17.2967"/>
869 </dia:attribute>
870 <dia:attribute name="elem_width">
871 <dia:real val="5.009308462554376"/>
872 </dia:attribute>
873 <dia:attribute name="elem_height">
874 <dia:real val="3.5726155970598077"/>
875 </dia:attribute>
876 <dia:attribute name="border_width">
877 <dia:real val="0.10000000149011612"/>
878 </dia:attribute>
879 <dia:attribute name="border_color">
880 <dia:color val="#8b6914"/>
881 </dia:attribute>
882 <dia:attribute name="show_background">
883 <dia:boolean val="true"/>
884 </dia:attribute>
885 </dia:object>
886 <dia:object type="Standard - Line" version="0" id="O28">
887 <dia:attribute name="obj_pos">
888 <dia:point val="34.4994,20.8693"/>
889 </dia:attribute>
890 <dia:attribute name="obj_bb">
891 <dia:rectangle val="19.4311,17.3459;34.5594,20.9293"/>
892 </dia:attribute>
893 <dia:attribute name="conn_endpoints">
894 <dia:point val="34.4994,20.8693"/>
895 <dia:point val="19.4911,17.4059"/>
896 </dia:attribute>
897 <dia:attribute name="numcp">
898 <dia:int val="1"/>
899 </dia:attribute>
900 <dia:attribute name="line_color">
901 <dia:color val="#e60505"/>
902 </dia:attribute>
903 <dia:attribute name="line_style">
904 <dia:enum val="4"/>
905 </dia:attribute>
906 <dia:connections>
907 <dia:connection handle="0" to="O27" connection="5"/>
908 <dia:connection handle="1" to="O26" connection="5"/>
909 </dia:connections>
910 </dia:object>
911 <dia:object type="Standard - Line" version="0" id="O29">
912 <dia:attribute name="obj_pos">
913 <dia:point val="34.4994,17.2967"/>
914 </dia:attribute>
915 <dia:attribute name="obj_bb">
916 <dia:rectangle val="19.4311,13.7733;34.5594,17.3567"/>
917 </dia:attribute>
918 <dia:attribute name="conn_endpoints">
919 <dia:point val="34.4994,17.2967"/>
920 <dia:point val="19.4911,13.8333"/>
921 </dia:attribute>
922 <dia:attribute name="numcp">
923 <dia:int val="1"/>
924 </dia:attribute>
925 <dia:attribute name="line_color">
926 <dia:color val="#e60505"/>
927 </dia:attribute>
928 <dia:attribute name="line_style">
929 <dia:enum val="4"/>
930 </dia:attribute>
931 <dia:connections>
932 <dia:connection handle="0" to="O27" connection="0"/>
933 <dia:connection handle="1" to="O26" connection="0"/>
934 </dia:connections>
935 </dia:object>
936 <dia:object type="Standard - Line" version="0" id="O30">
937 <dia:attribute name="obj_pos">
938 <dia:point val="39.5087,20.8693"/>
939 </dia:attribute>
940 <dia:attribute name="obj_bb">
941 <dia:rectangle val="24.4404,17.3459;39.5687,20.9293"/>
942 </dia:attribute>
943 <dia:attribute name="conn_endpoints">
944 <dia:point val="39.5087,20.8693"/>
945 <dia:point val="24.5004,17.4059"/>
946 </dia:attribute>
947 <dia:attribute name="numcp">
948 <dia:int val="1"/>
949 </dia:attribute>
950 <dia:attribute name="line_color">
951 <dia:color val="#e60505"/>
952 </dia:attribute>
953 <dia:attribute name="line_style">
954 <dia:enum val="4"/>
955 </dia:attribute>
956 <dia:connections>
957 <dia:connection handle="0" to="O27" connection="7"/>
958 <dia:connection handle="1" to="O26" connection="7"/>
959 </dia:connections>
960 </dia:object>
961 <dia:object type="Standard - Line" version="0" id="O31">
962 <dia:attribute name="obj_pos">
963 <dia:point val="39.5087,17.2967"/>
964 </dia:attribute>
965 <dia:attribute name="obj_bb">
966 <dia:rectangle val="24.4404,13.7733;39.5687,17.3567"/>
967 </dia:attribute>
968 <dia:attribute name="conn_endpoints">
969 <dia:point val="39.5087,17.2967"/>
970 <dia:point val="24.5004,13.8333"/>
971 </dia:attribute>
972 <dia:attribute name="numcp">
973 <dia:int val="1"/>
974 </dia:attribute>
975 <dia:attribute name="line_color">
976 <dia:color val="#e60505"/>
977 </dia:attribute>
978 <dia:attribute name="line_style">
979 <dia:enum val="4"/>
980 </dia:attribute>
981 <dia:connections>
982 <dia:connection handle="0" to="O27" connection="2"/>
983 <dia:connection handle="1" to="O26" connection="2"/>
984 </dia:connections>
985 </dia:object>
986 <dia:object type="Geometric - Perfect Circle" version="1" id="O32">
987 <dia:attribute name="obj_pos">
988 <dia:point val="39.855,18.7792"/>
989 </dia:attribute>
990 <dia:attribute name="obj_bb">
991 <dia:rectangle val="39.805,18.7292;40.755,19.6792"/>
992 </dia:attribute>
993 <dia:attribute name="meta">
994 <dia:composite type="dict"/>
995 </dia:attribute>
996 <dia:attribute name="elem_corner">
997 <dia:point val="39.855,18.7792"/>
998 </dia:attribute>
999 <dia:attribute name="elem_width">
1000 <dia:real val="0.84999999999999787"/>
1001 </dia:attribute>
1002 <dia:attribute name="elem_height">
1003 <dia:real val="0.84999999999999787"/>
1004 </dia:attribute>
1005 <dia:attribute name="line_width">
1006 <dia:real val="0.10000000000000001"/>
1007 </dia:attribute>
1008 <dia:attribute name="line_colour">
1009 <dia:color val="#000000"/>
1010 </dia:attribute>
1011 <dia:attribute name="fill_colour">
1012 <dia:color val="#ffffff"/>
1013 </dia:attribute>
1014 <dia:attribute name="show_background">
1015 <dia:boolean val="true"/>
1016 </dia:attribute>
1017 <dia:attribute name="line_style">
1018 <dia:enum val="0"/>
1019 <dia:real val="1"/>
1020 </dia:attribute>
1021 <dia:attribute name="flip_horizontal">
1022 <dia:boolean val="false"/>
1023 </dia:attribute>
1024 <dia:attribute name="flip_vertical">
1025 <dia:boolean val="false"/>
1026 </dia:attribute>
1027 <dia:attribute name="subscale">
1028 <dia:real val="1"/>
1029 </dia:attribute>
1030 </dia:object>
1031 <dia:object type="Standard - Line" version="0" id="O33">
1032 <dia:attribute name="obj_pos">
1033 <dia:point val="40.705,19.2042"/>
1034 </dia:attribute>
1035 <dia:attribute name="obj_bb">
1036 <dia:rectangle val="40.655,18.8438;49.1203,19.5674"/>
1037 </dia:attribute>
1038 <dia:attribute name="conn_endpoints">
1039 <dia:point val="40.705,19.2042"/>
1040 <dia:point val="49.0085,19.2057"/>
1041 </dia:attribute>
1042 <dia:attribute name="numcp">
1043 <dia:int val="1"/>
1044 </dia:attribute>
1045 <dia:attribute name="end_arrow">
1046 <dia:enum val="22"/>
1047 </dia:attribute>
1048 <dia:attribute name="end_arrow_length">
1049 <dia:real val="0.5"/>
1050 </dia:attribute>
1051 <dia:attribute name="end_arrow_width">
1052 <dia:real val="0.5"/>
1053 </dia:attribute>
1054 <dia:connections>
1055 <dia:connection handle="0" to="O32" connection="3"/>
1056 </dia:connections>
1057 </dia:object>
1058 <dia:object type="Standard - Text" version="1" id="O34">
1059 <dia:attribute name="obj_pos">
1060 <dia:point val="41.9704,18.695"/>
1061 </dia:attribute>
1062 <dia:attribute name="obj_bb">
1063 <dia:rectangle val="41.9704,18.1;46.6154,18.8475"/>
1064 </dia:attribute>
1065 <dia:attribute name="text">
1066 <dia:composite type="text">
1067 <dia:attribute name="string">
1068 <dia:string>#pad 2 (source)#</dia:string>
1069 </dia:attribute>
1070 <dia:attribute name="font">
1071 <dia:font family="sans" style="0" name="Helvetica"/>
1072 </dia:attribute>
1073 <dia:attribute name="height">
1074 <dia:real val="0.80000000000000004"/>
1075 </dia:attribute>
1076 <dia:attribute name="pos">
1077 <dia:point val="41.9704,18.695"/>
1078 </dia:attribute>
1079 <dia:attribute name="color">
1080 <dia:color val="#000000"/>
1081 </dia:attribute>
1082 <dia:attribute name="alignment">
1083 <dia:enum val="0"/>
1084 </dia:attribute>
1085 </dia:composite>
1086 </dia:attribute>
1087 <dia:attribute name="valign">
1088 <dia:enum val="3"/>
1089 </dia:attribute>
1090 </dia:object>
1091 <dia:object type="Standard - Line" version="0" id="O35">
1092 <dia:attribute name="obj_pos">
1093 <dia:point val="27.3,9.55"/>
1094 </dia:attribute>
1095 <dia:attribute name="obj_bb">
1096 <dia:rectangle val="24.0146,9.49376;27.3562,10.255"/>
1097 </dia:attribute>
1098 <dia:attribute name="conn_endpoints">
1099 <dia:point val="27.3,9.55"/>
1100 <dia:point val="24.1254,9.97825"/>
1101 </dia:attribute>
1102 <dia:attribute name="numcp">
1103 <dia:int val="1"/>
1104 </dia:attribute>
1105 <dia:attribute name="line_color">
1106 <dia:color val="#a020f0"/>
1107 </dia:attribute>
1108 <dia:attribute name="end_arrow">
1109 <dia:enum val="22"/>
1110 </dia:attribute>
1111 <dia:attribute name="end_arrow_length">
1112 <dia:real val="0.5"/>
1113 </dia:attribute>
1114 <dia:attribute name="end_arrow_width">
1115 <dia:real val="0.5"/>
1116 </dia:attribute>
1117 <dia:connections>
1118 <dia:connection handle="1" to="O12" connection="2"/>
1119 </dia:connections>
1120 </dia:object>
1121 <dia:object type="Standard - Line" version="0" id="O36">
1122 <dia:attribute name="obj_pos">
1123 <dia:point val="27.3454,9.53624"/>
1124 </dia:attribute>
1125 <dia:attribute name="obj_bb">
1126 <dia:rectangle val="24.4311,9.46695;27.4147,13.9265"/>
1127 </dia:attribute>
1128 <dia:attribute name="conn_endpoints">
1129 <dia:point val="27.3454,9.53624"/>
1130 <dia:point val="24.5004,13.8333"/>
1131 </dia:attribute>
1132 <dia:attribute name="numcp">
1133 <dia:int val="1"/>
1134 </dia:attribute>
1135 <dia:attribute name="line_color">
1136 <dia:color val="#a020f0"/>
1137 </dia:attribute>
1138 <dia:attribute name="end_arrow">
1139 <dia:enum val="22"/>
1140 </dia:attribute>
1141 <dia:attribute name="end_arrow_length">
1142 <dia:real val="0.5"/>
1143 </dia:attribute>
1144 <dia:attribute name="end_arrow_width">
1145 <dia:real val="0.5"/>
1146 </dia:attribute>
1147 <dia:connections>
1148 <dia:connection handle="1" to="O26" connection="2"/>
1149 </dia:connections>
1150 </dia:object>
1151 </dia:layer>
1152</dia:diagram>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg
deleted file mode 100644
index 2340c0f8bc92..000000000000
--- a/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg
+++ /dev/null
@@ -1,116 +0,0 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
3<svg width="59cm" height="17cm" viewBox="-194 128 1179 330" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
4 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="-8" y="130" width="806" height="327"/>
5 <g>
6 <rect style="fill: #ffffff" x="4.5" y="189" width="159" height="104"/>
7 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a52a2a" x="4.5" y="189" width="159" height="104"/>
8 </g>
9 <g>
10 <rect style="fill: #ffffff" x="49.5" y="204" width="94" height="77"/>
11 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #0000ff" x="49.5" y="204" width="94" height="77"/>
12 </g>
13 <text style="fill: #0000ff;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="60" y="224">
14 <tspan x="60" y="224">sink</tspan>
15 <tspan x="60" y="240">crop</tspan>
16 <tspan x="60" y="256">selection</tspan>
17 </text>
18 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="29.5" y="158">
19 <tspan x="29.5" y="158"></tspan>
20 </text>
21 <text style="fill: #a52a2a;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="8.53836" y="157.914">
22 <tspan x="8.53836" y="157.914">sink media</tspan>
23 <tspan x="8.53836" y="173.914">bus format</tspan>
24 </text>
25 <g>
26 <rect style="fill: #ffffff" x="333.644" y="185.65" width="165.2" height="172.478"/>
27 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #00ff00" x="333.644" y="185.65" width="165.2" height="172.478"/>
28 </g>
29 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="358.128" x2="49.5" y2="281"/>
30 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="333.644" y1="185.65" x2="49.5" y2="204"/>
31 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="358.128" x2="143.5" y2="281"/>
32 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="498.844" y1="185.65" x2="143.5" y2="204"/>
33 <text style="fill: #00ff00;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="334.704" y="149.442">
34 <tspan x="334.704" y="149.442">sink compose</tspan>
35 <tspan x="334.704" y="165.442">selection (scaling)</tspan>
36 </text>
37 <g>
38 <rect style="fill: #ffffff" x="382.322" y="199.565" width="100.186" height="71.4523"/>
39 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="382.322" y="199.565" width="100.186" height="71.4523"/>
40 </g>
41 <text style="fill: #a020f0;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="543.322" y="149.442">
42 <tspan x="543.322" y="149.442">source</tspan>
43 <tspan x="543.322" y="165.442">crop</tspan>
44 <tspan x="543.322" y="181.442">selection</tspan>
45 </text>
46 <text style="fill: #8b6914;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="691.5" y="157.128">
47 <tspan x="691.5" y="157.128">source media</tspan>
48 <tspan x="691.5" y="173.128">bus format</tspan>
49 </text>
50 <g>
51 <rect style="fill: #ffffff" x="690.488" y="225.834" width="100.186" height="71.4523"/>
52 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="690.488" y="225.834" width="100.186" height="71.4523"/>
53 </g>
54 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="297.286" x2="382.322" y2="271.018"/>
55 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="690.488" y1="225.834" x2="382.322" y2="199.565"/>
56 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="297.286" x2="482.508" y2="271.018"/>
57 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.674" y1="225.834" x2="482.508" y2="199.565"/>
58 <g>
59 <ellipse style="fill: #ffffff" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
60 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
61 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="808.1" cy="249.984" rx="8.5" ry="8.5"/>
62 </g>
63 <g>
64 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="816.6" y1="249.984" x2="972.934" y2="250.012"/>
65 <polygon style="fill: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/>
66 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="980.434,250.014 970.433,255.012 972.934,250.012 970.435,245.012 "/>
67 </g>
68 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="841.908" y="239.8">
69 <tspan x="841.908" y="239.8">pad 1 (source)</tspan>
70 </text>
71 <g>
72 <ellipse style="fill: #ffffff" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
73 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
74 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="-20.3982" cy="241.512" rx="8.5" ry="8.5"/>
75 </g>
76 <g>
77 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="-192.398" y1="241.8" x2="-38.6343" y2="241.529"/>
78 <polygon style="fill: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
79 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="-31.1343,241.516 -41.1254,246.534 -38.6343,241.529 -41.1431,236.534 "/>
80 </g>
81 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="-147.858" y="229.8">
82 <tspan x="-147.858" y="229.8">pad 0 (sink)</tspan>
83 </text>
84 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x="389.822" y="276.666" width="100.186" height="71.4523"/>
85 <g>
86 <rect style="fill: #ffffff" x="689.988" y="345.934" width="100.186" height="71.4523"/>
87 <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #8b6914" x="689.988" y="345.934" width="100.186" height="71.4523"/>
88 </g>
89 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="417.386" x2="389.822" y2="348.118"/>
90 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="689.988" y1="345.934" x2="389.822" y2="276.666"/>
91 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="417.386" x2="490.008" y2="348.118"/>
92 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke-dasharray: 4; stroke: #e60505" x1="790.174" y1="345.934" x2="490.008" y2="276.666"/>
93 <g>
94 <ellipse style="fill: #ffffff" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
95 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
96 <ellipse style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" cx="805.6" cy="384.084" rx="8.5" ry="8.5"/>
97 </g>
98 <g>
99 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="814.1" y1="384.084" x2="970.434" y2="384.112"/>
100 <polygon style="fill: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/>
101 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="977.934,384.114 967.933,389.112 970.434,384.112 967.935,379.112 "/>
102 </g>
103 <text style="fill: #000000;text-anchor:start;font-size:12.8;font-family:sanserif;font-style:normal;font-weight:normal" x="839.408" y="373.9">
104 <tspan x="839.408" y="373.9">pad 2 (source)</tspan>
105 </text>
106 <g>
107 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546" y1="191" x2="492.157" y2="198.263"/>
108 <polygon style="fill: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/>
109 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="484.724,199.266 493.966,192.974 492.157,198.263 495.303,202.884 "/>
110 </g>
111 <g>
112 <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" x1="546.908" y1="190.725" x2="495.383" y2="268.548"/>
113 <polygon style="fill: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/>
114 <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #a020f0" points="491.242,274.802 492.594,263.703 495.383,268.548 500.932,269.224 "/>
115 </g>
116</svg>
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml b/Documentation/DocBook/media/v4l/v4l2.xml
deleted file mode 100644
index 42e626d6c936..000000000000
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ /dev/null
@@ -1,728 +0,0 @@
1 <partinfo>
2 <authorgroup>
3 <author>
4 <firstname>Michael</firstname>
5 <surname>Schimek</surname>
6 <othername role="mi">H</othername>
7 <affiliation>
8 <address>
9 <email>mschimek@gmx.at</email>
10 </address>
11 </affiliation>
12 </author>
13
14 <author>
15 <firstname>Bill</firstname>
16 <surname>Dirks</surname>
17 <!-- Commented until Bill opts in to be spammed.
18 <affiliation>
19 <address>
20 <email>bill@thedirks.org</email>
21 </address>
22 </affiliation> -->
23 <contrib>Original author of the V4L2 API and
24documentation.</contrib>
25 </author>
26
27 <author>
28 <firstname>Hans</firstname>
29 <surname>Verkuil</surname>
30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl,
31the extended control ioctls, major parts of the sliced VBI API, the
32MPEG encoder and decoder APIs and the DV Timings API.</contrib>
33 <affiliation>
34 <address>
35 <email>hverkuil@xs4all.nl</email>
36 </address>
37 </affiliation>
38 </author>
39
40 <author>
41 <firstname>Martin</firstname>
42 <surname>Rubli</surname>
43 <!--
44 <affiliation>
45 <address>
46 <email>martin_rubli@logitech.com</email>
47 </address>
48 </affiliation> -->
49 <contrib>Designed and documented the VIDIOC_ENUM_FRAMESIZES
50and VIDIOC_ENUM_FRAMEINTERVALS ioctls.</contrib>
51 </author>
52
53 <author>
54 <firstname>Andy</firstname>
55 <surname>Walls</surname>
56 <contrib>Documented the fielded V4L2_MPEG_STREAM_VBI_FMT_IVTV
57MPEG stream embedded, sliced VBI data format in this specification.
58</contrib>
59 <affiliation>
60 <address>
61 <email>awalls@md.metrocast.net</email>
62 </address>
63 </affiliation>
64 </author>
65
66 <author>
67 <firstname>Mauro</firstname>
68 <surname>Carvalho Chehab</surname>
69 <contrib>Documented libv4l, designed and added v4l2grab example,
70Remote Controller chapter.</contrib>
71 <affiliation>
72 <address>
73 <email>m.chehab@samsung.com</email>
74 </address>
75 </affiliation>
76 </author>
77
78 <author>
79 <firstname>Muralidharan</firstname>
80 <surname>Karicheri</surname>
81 <contrib>Documented the Digital Video timings API.</contrib>
82 <affiliation>
83 <address>
84 <email>m-karicheri2@ti.com</email>
85 </address>
86 </affiliation>
87 </author>
88
89 <author>
90 <firstname>Pawel</firstname>
91 <surname>Osciak</surname>
92 <contrib>Designed and documented the multi-planar API.</contrib>
93 <affiliation>
94 <address>
95 <email>pawel AT osciak.com</email>
96 </address>
97 </affiliation>
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>
110 <author>
111 <firstname>Antti</firstname>
112 <surname>Palosaari</surname>
113 <contrib>SDR API.</contrib>
114 <affiliation>
115 <address>
116 <email>crope@iki.fi</email>
117 </address>
118 </affiliation>
119 </author>
120 </authorgroup>
121
122 <copyright>
123 <year>1999</year>
124 <year>2000</year>
125 <year>2001</year>
126 <year>2002</year>
127 <year>2003</year>
128 <year>2004</year>
129 <year>2005</year>
130 <year>2006</year>
131 <year>2007</year>
132 <year>2008</year>
133 <year>2009</year>
134 <year>2010</year>
135 <year>2011</year>
136 <year>2012</year>
137 <year>2013</year>
138 <year>2014</year>
139 <year>2015</year>
140 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
141Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
142 Pawel Osciak</holder>
143 </copyright>
144 <legalnotice>
145 <para>Except when explicitly stated as GPL, programming examples within
146 this part can be used and distributed without restrictions.</para>
147 </legalnotice>
148 <revhistory>
149 <!-- Put document revisions here, newest first. -->
150 <!-- API revisions (changes and additions of defines, enums,
151structs, ioctls) must be noted in more detail in the history chapter
152(compat.xml), along with the possible impact on existing drivers and
153applications. -->
154 <revision>
155 <revnumber>4.5</revnumber>
156 <date>2015-10-29</date>
157 <authorinitials>rr</authorinitials>
158 <revremark>Extend vidioc-g-ext-ctrls;. Replace ctrl_class with a new
159union with ctrl_class and which. Which is used to select the current value of
160the control or the default value.
161 </revremark>
162 </revision>
163
164 <revision>
165 <revnumber>4.4</revnumber>
166 <date>2015-05-26</date>
167 <authorinitials>ap</authorinitials>
168 <revremark>Renamed V4L2_TUNER_ADC to V4L2_TUNER_SDR.
169Added V4L2_CID_RF_TUNER_RF_GAIN control.
170Added transmitter support for Software Defined Radio (SDR) Interface.
171 </revremark>
172 </revision>
173
174 <revision>
175 <revnumber>4.1</revnumber>
176 <date>2015-02-13</date>
177 <authorinitials>mcc</authorinitials>
178 <revremark>Fix documentation for media controller device nodes and add support for DVB device nodes.
179Add support for Tuner sub-device.
180 </revremark>
181 </revision>
182 <revision>
183 <revnumber>3.19</revnumber>
184 <date>2014-12-05</date>
185 <authorinitials>hv</authorinitials>
186 <revremark>Rewrote Colorspace chapter, added new &v4l2-ycbcr-encoding; and &v4l2-quantization; fields
187to &v4l2-pix-format;, &v4l2-pix-format-mplane; and &v4l2-mbus-framefmt;.
188 </revremark>
189 </revision>
190
191 <revision>
192 <revnumber>3.17</revnumber>
193 <date>2014-08-04</date>
194 <authorinitials>lp, hv</authorinitials>
195 <revremark>Extended &v4l2-pix-format;. Added format flags. Added compound control types
196and VIDIOC_QUERY_EXT_CTRL.
197 </revremark>
198 </revision>
199
200 <revision>
201 <revnumber>3.15</revnumber>
202 <date>2014-02-03</date>
203 <authorinitials>hv, ap</authorinitials>
204 <revremark>Update several sections of "Common API Elements": "Opening and Closing Devices"
205"Querying Capabilities", "Application Priority", "Video Inputs and Outputs", "Audio Inputs and Outputs"
206"Tuners and Modulators", "Video Standards" and "Digital Video (DV) Timings". Added SDR API.
207 </revremark>
208 </revision>
209
210 <revision>
211 <revnumber>3.14</revnumber>
212 <date>2013-11-25</date>
213 <authorinitials>rr</authorinitials>
214 <revremark>Set width and height as unsigned on v4l2_rect.
215 </revremark>
216 </revision>
217
218 <revision>
219 <revnumber>3.11</revnumber>
220 <date>2013-05-26</date>
221 <authorinitials>hv</authorinitials>
222 <revremark>Remove obsolete VIDIOC_DBG_G_CHIP_IDENT ioctl.
223 </revremark>
224 </revision>
225
226 <revision>
227 <revnumber>3.10</revnumber>
228 <date>2013-03-25</date>
229 <authorinitials>hv</authorinitials>
230 <revremark>Remove obsolete and unused DV_PRESET ioctls:
231 VIDIOC_G_DV_PRESET, VIDIOC_S_DV_PRESET, VIDIOC_QUERY_DV_PRESET and
232 VIDIOC_ENUM_DV_PRESET. Remove the related v4l2_input/output capability
233 flags V4L2_IN_CAP_PRESETS and V4L2_OUT_CAP_PRESETS. Added VIDIOC_DBG_G_CHIP_INFO.
234 </revremark>
235 </revision>
236
237 <revision>
238 <revnumber>3.9</revnumber>
239 <date>2012-12-03</date>
240 <authorinitials>sa, sn</authorinitials>
241 <revremark>Added timestamp types to v4l2_buffer.
242 Added V4L2_EVENT_CTRL_CH_RANGE control event changes flag.
243 </revremark>
244 </revision>
245
246 <revision>
247 <revnumber>3.6</revnumber>
248 <date>2012-07-02</date>
249 <authorinitials>hv</authorinitials>
250 <revremark>Added VIDIOC_ENUM_FREQ_BANDS.
251 </revremark>
252 </revision>
253
254 <revision>
255 <revnumber>3.5</revnumber>
256 <date>2012-05-07</date>
257 <authorinitials>sa, sn, hv</authorinitials>
258 <revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev
259 selections API. Improved the description of V4L2_CID_COLORFX
260 control, added V4L2_CID_COLORFX_CBCR control.
261 Added camera controls V4L2_CID_AUTO_EXPOSURE_BIAS,
262 V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, V4L2_CID_IMAGE_STABILIZATION,
263 V4L2_CID_ISO_SENSITIVITY, V4L2_CID_ISO_SENSITIVITY_AUTO,
264 V4L2_CID_EXPOSURE_METERING, V4L2_CID_SCENE_MODE,
265 V4L2_CID_3A_LOCK, V4L2_CID_AUTO_FOCUS_START,
266 V4L2_CID_AUTO_FOCUS_STOP, V4L2_CID_AUTO_FOCUS_STATUS
267 and V4L2_CID_AUTO_FOCUS_RANGE.
268 Added VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and
269 VIDIOC_DV_TIMINGS_CAP.
270 </revremark>
271 </revision>
272
273 <revision>
274 <revnumber>3.4</revnumber>
275 <date>2012-01-25</date>
276 <authorinitials>sn</authorinitials>
277 <revremark>Added <link linkend="jpeg-controls">JPEG compression
278 control class.</link>
279 </revremark>
280 </revision>
281
282 <revision>
283 <revnumber>3.3</revnumber>
284 <date>2012-01-11</date>
285 <authorinitials>hv</authorinitials>
286 <revremark>Added device_caps field to struct v4l2_capabilities.</revremark>
287 </revision>
288
289 <revision>
290 <revnumber>3.2</revnumber>
291 <date>2011-08-26</date>
292 <authorinitials>hv</authorinitials>
293 <revremark>Added V4L2_CTRL_FLAG_VOLATILE.</revremark>
294 </revision>
295
296 <revision>
297 <revnumber>3.1</revnumber>
298 <date>2011-06-27</date>
299 <authorinitials>mcc, po, hv</authorinitials>
300 <revremark>Documented that VIDIOC_QUERYCAP now returns a per-subsystem version instead of a per-driver one.
301 Standardize an error code for invalid ioctl.
302 Added V4L2_CTRL_TYPE_BITMASK.</revremark>
303 </revision>
304
305 <revision>
306 <revnumber>2.6.39</revnumber>
307 <date>2011-03-01</date>
308 <authorinitials>mcc, po</authorinitials>
309 <revremark>Removed VIDIOC_*_OLD from videodev2.h header and update it to reflect latest changes. Added the <link linkend="planar-apis">multi-planar API</link>.</revremark>
310 </revision>
311
312 <revision>
313 <revnumber>2.6.37</revnumber>
314 <date>2010-08-06</date>
315 <authorinitials>hv</authorinitials>
316 <revremark>Removed obsolete vtx (videotext) API.</revremark>
317 </revision>
318
319 <revision>
320 <revnumber>2.6.33</revnumber>
321 <date>2009-12-03</date>
322 <authorinitials>mk</authorinitials>
323 <revremark>Added documentation for the Digital Video timings API.</revremark>
324 </revision>
325
326 <revision>
327 <revnumber>2.6.32</revnumber>
328 <date>2009-08-31</date>
329 <authorinitials>mcc</authorinitials>
330 <revremark>Now, revisions will match the kernel version where
331the V4L2 API changes will be used by the Linux Kernel.
332Also added Remote Controller chapter.</revremark>
333 </revision>
334
335 <revision>
336 <revnumber>0.29</revnumber>
337 <date>2009-08-26</date>
338 <authorinitials>ev</authorinitials>
339 <revremark>Added documentation for string controls and for FM Transmitter controls.</revremark>
340 </revision>
341
342 <revision>
343 <revnumber>0.28</revnumber>
344 <date>2009-08-26</date>
345 <authorinitials>gl</authorinitials>
346 <revremark>Added V4L2_CID_BAND_STOP_FILTER documentation.</revremark>
347 </revision>
348
349 <revision>
350 <revnumber>0.27</revnumber>
351 <date>2009-08-15</date>
352 <authorinitials>mcc</authorinitials>
353 <revremark>Added libv4l and Remote Controller documentation;
354added v4l2grab and keytable application examples.</revremark>
355 </revision>
356
357 <revision>
358 <revnumber>0.26</revnumber>
359 <date>2009-07-23</date>
360 <authorinitials>hv</authorinitials>
361 <revremark>Finalized the RDS capture API. Added modulator and RDS encoder
362capabilities. Added support for string controls.</revremark>
363 </revision>
364
365 <revision>
366 <revnumber>0.25</revnumber>
367 <date>2009-01-18</date>
368 <authorinitials>hv</authorinitials>
369 <revremark>Added pixel formats VYUY, NV16 and NV61, and changed
370the debug ioctls VIDIOC_DBG_G/S_REGISTER and VIDIOC_DBG_G_CHIP_IDENT.
371Added camera controls V4L2_CID_ZOOM_ABSOLUTE, V4L2_CID_ZOOM_RELATIVE,
372V4L2_CID_ZOOM_CONTINUOUS and V4L2_CID_PRIVACY.</revremark>
373 </revision>
374
375 <revision>
376 <revnumber>0.24</revnumber>
377 <date>2008-03-04</date>
378 <authorinitials>mhs</authorinitials>
379 <revremark>Added pixel formats Y16 and SBGGR16, new controls
380and a camera controls class. Removed VIDIOC_G/S_MPEGCOMP.</revremark>
381 </revision>
382
383 <revision>
384 <revnumber>0.23</revnumber>
385 <date>2007-08-30</date>
386 <authorinitials>mhs</authorinitials>
387 <revremark>Fixed a typo in VIDIOC_DBG_G/S_REGISTER.
388Clarified the byte order of packed pixel formats.</revremark>
389 </revision>
390
391 <revision>
392 <revnumber>0.22</revnumber>
393 <date>2007-08-29</date>
394 <authorinitials>mhs</authorinitials>
395 <revremark>Added the Video Output Overlay interface, new MPEG
396controls, V4L2_FIELD_INTERLACED_TB and V4L2_FIELD_INTERLACED_BT,
397VIDIOC_DBG_G/S_REGISTER, VIDIOC_(TRY_)ENCODER_CMD,
398VIDIOC_G_CHIP_IDENT, VIDIOC_G_ENC_INDEX, new pixel formats.
399Clarifications in the cropping chapter, about RGB pixel formats, the
400mmap(), poll(), select(), read() and write() functions. Typographical
401fixes.</revremark>
402 </revision>
403
404 <revision>
405 <revnumber>0.21</revnumber>
406 <date>2006-12-19</date>
407 <authorinitials>mhs</authorinitials>
408 <revremark>Fixed a link in the VIDIOC_G_EXT_CTRLS section.</revremark>
409 </revision>
410
411 <revision>
412 <revnumber>0.20</revnumber>
413 <date>2006-11-24</date>
414 <authorinitials>mhs</authorinitials>
415 <revremark>Clarified the purpose of the audioset field in
416struct v4l2_input and v4l2_output.</revremark>
417 </revision>
418
419 <revision>
420 <revnumber>0.19</revnumber>
421 <date>2006-10-19</date>
422 <authorinitials>mhs</authorinitials>
423 <revremark>Documented V4L2_PIX_FMT_RGB444.</revremark>
424 </revision>
425
426 <revision>
427 <revnumber>0.18</revnumber>
428 <date>2006-10-18</date>
429 <authorinitials>mhs</authorinitials>
430 <revremark>Added the description of extended controls by Hans
431Verkuil. Linked V4L2_PIX_FMT_MPEG to V4L2_CID_MPEG_STREAM_TYPE.</revremark>
432 </revision>
433
434 <revision>
435 <revnumber>0.17</revnumber>
436 <date>2006-10-12</date>
437 <authorinitials>mhs</authorinitials>
438 <revremark>Corrected V4L2_PIX_FMT_HM12 description.</revremark>
439 </revision>
440
441 <revision>
442 <revnumber>0.16</revnumber>
443 <date>2006-10-08</date>
444 <authorinitials>mhs</authorinitials>
445 <revremark>VIDIOC_ENUM_FRAMESIZES and
446VIDIOC_ENUM_FRAMEINTERVALS are now part of the API.</revremark>
447 </revision>
448
449 <revision>
450 <revnumber>0.15</revnumber>
451 <date>2006-09-23</date>
452 <authorinitials>mhs</authorinitials>
453 <revremark>Cleaned up the bibliography, added BT.653 and
454BT.1119. capture.c/start_capturing() for user pointer I/O did not
455initialize the buffer index. Documented the V4L MPEG and MJPEG
456VID_TYPEs and V4L2_PIX_FMT_SBGGR8. Updated the list of reserved pixel
457formats. See the history chapter for API changes.</revremark>
458 </revision>
459
460 <revision>
461 <revnumber>0.14</revnumber>
462 <date>2006-09-14</date>
463 <authorinitials>mr</authorinitials>
464 <revremark>Added VIDIOC_ENUM_FRAMESIZES and
465VIDIOC_ENUM_FRAMEINTERVALS proposal for frame format enumeration of
466digital devices.</revremark>
467 </revision>
468
469 <revision>
470 <revnumber>0.13</revnumber>
471 <date>2006-04-07</date>
472 <authorinitials>mhs</authorinitials>
473 <revremark>Corrected the description of struct v4l2_window
474clips. New V4L2_STD_ and V4L2_TUNER_MODE_LANG1_LANG2
475defines.</revremark>
476 </revision>
477
478 <revision>
479 <revnumber>0.12</revnumber>
480 <date>2006-02-03</date>
481 <authorinitials>mhs</authorinitials>
482 <revremark>Corrected the description of struct
483v4l2_captureparm and v4l2_outputparm.</revremark>
484 </revision>
485
486 <revision>
487 <revnumber>0.11</revnumber>
488 <date>2006-01-27</date>
489 <authorinitials>mhs</authorinitials>
490 <revremark>Improved the description of struct
491v4l2_tuner.</revremark>
492 </revision>
493
494 <revision>
495 <revnumber>0.10</revnumber>
496 <date>2006-01-10</date>
497 <authorinitials>mhs</authorinitials>
498 <revremark>VIDIOC_G_INPUT and VIDIOC_S_PARM
499clarifications.</revremark>
500 </revision>
501
502 <revision>
503 <revnumber>0.9</revnumber>
504 <date>2005-11-27</date>
505 <authorinitials>mhs</authorinitials>
506 <revremark>Improved the 525 line numbering diagram. Hans
507Verkuil and I rewrote the sliced VBI section. He also contributed a
508VIDIOC_LOG_STATUS page. Fixed VIDIOC_S_STD call in the video standard
509selection example. Various updates.</revremark>
510 </revision>
511
512 <revision>
513 <revnumber>0.8</revnumber>
514 <date>2004-10-04</date>
515 <authorinitials>mhs</authorinitials>
516 <revremark>Somehow a piece of junk slipped into the capture
517example, removed.</revremark>
518 </revision>
519
520 <revision>
521 <revnumber>0.7</revnumber>
522 <date>2004-09-19</date>
523 <authorinitials>mhs</authorinitials>
524 <revremark>Fixed video standard selection, control
525enumeration, downscaling and aspect example. Added read and user
526pointer i/o to video capture example.</revremark>
527 </revision>
528
529 <revision>
530 <revnumber>0.6</revnumber>
531 <date>2004-08-01</date>
532 <authorinitials>mhs</authorinitials>
533 <revremark>v4l2_buffer changes, added video capture example,
534various corrections.</revremark>
535 </revision>
536
537 <revision>
538 <revnumber>0.5</revnumber>
539 <date>2003-11-05</date>
540 <authorinitials>mhs</authorinitials>
541 <revremark>Pixel format erratum.</revremark>
542 </revision>
543
544 <revision>
545 <revnumber>0.4</revnumber>
546 <date>2003-09-17</date>
547 <authorinitials>mhs</authorinitials>
548 <revremark>Corrected source and Makefile to generate a PDF.
549SGML fixes. Added latest API changes. Closed gaps in the history
550chapter.</revremark>
551 </revision>
552
553 <revision>
554 <revnumber>0.3</revnumber>
555 <date>2003-02-05</date>
556 <authorinitials>mhs</authorinitials>
557 <revremark>Another draft, more corrections.</revremark>
558 </revision>
559
560 <revision>
561 <revnumber>0.2</revnumber>
562 <date>2003-01-15</date>
563 <authorinitials>mhs</authorinitials>
564 <revremark>Second draft, with corrections pointed out by Gerd
565Knorr.</revremark>
566 </revision>
567
568 <revision>
569 <revnumber>0.1</revnumber>
570 <date>2002-12-01</date>
571 <authorinitials>mhs</authorinitials>
572 <revremark>First draft, based on documentation by Bill Dirks
573and discussions on the V4L mailing list.</revremark>
574 </revision>
575 </revhistory>
576</partinfo>
577
578<title>Video for Linux Two API Specification</title>
579 <subtitle>Revision 4.4</subtitle>
580
581 <chapter id="common">
582 &sub-common;
583 </chapter>
584
585 <chapter id="pixfmt">
586 &sub-pixfmt;
587 </chapter>
588
589 <chapter id="io">
590 &sub-io;
591 </chapter>
592
593 <chapter id="devices">
594 <title>Interfaces</title>
595
596 <section id="capture"> &sub-dev-capture; </section>
597 <section id="overlay"> &sub-dev-overlay; </section>
598 <section id="output"> &sub-dev-output; </section>
599 <section id="osd"> &sub-dev-osd; </section>
600 <section id="codec"> &sub-dev-codec; </section>
601 <section id="effect"> &sub-dev-effect; </section>
602 <section id="raw-vbi"> &sub-dev-raw-vbi; </section>
603 <section id="sliced"> &sub-dev-sliced-vbi; </section>
604 <section id="ttx"> &sub-dev-teletext; </section>
605 <section id="radio"> &sub-dev-radio; </section>
606 <section id="rds"> &sub-dev-rds; </section>
607 <section id="sdr"> &sub-dev-sdr; </section>
608 <section id="event"> &sub-dev-event; </section>
609 <section id="subdev"> &sub-dev-subdev; </section>
610 </chapter>
611
612 <chapter id="driver">
613 &sub-driver;
614 </chapter>
615
616 <chapter id="libv4l">
617 &sub-libv4l;
618 </chapter>
619
620 <chapter id="compat">
621 &sub-compat;
622 </chapter>
623
624 <appendix id="user-func">
625 <title>Function Reference</title>
626
627 <!-- Keep this alphabetically sorted. -->
628
629 &sub-close;
630 &sub-ioctl;
631 <!-- All ioctls go here. -->
632 &sub-create-bufs;
633 &sub-cropcap;
634 &sub-dbg-g-chip-info;
635 &sub-dbg-g-register;
636 &sub-decoder-cmd;
637 &sub-dqevent;
638 &sub-dv-timings-cap;
639 &sub-encoder-cmd;
640 &sub-enumaudio;
641 &sub-enumaudioout;
642 &sub-enum-dv-timings;
643 &sub-enum-fmt;
644 &sub-enum-framesizes;
645 &sub-enum-frameintervals;
646 &sub-enum-freq-bands;
647 &sub-enuminput;
648 &sub-enumoutput;
649 &sub-enumstd;
650 &sub-expbuf;
651 &sub-g-audio;
652 &sub-g-audioout;
653 &sub-g-crop;
654 &sub-g-ctrl;
655 &sub-g-dv-timings;
656 &sub-g-edid;
657 &sub-g-enc-index;
658 &sub-g-ext-ctrls;
659 &sub-g-fbuf;
660 &sub-g-fmt;
661 &sub-g-frequency;
662 &sub-g-input;
663 &sub-g-jpegcomp;
664 &sub-g-modulator;
665 &sub-g-output;
666 &sub-g-parm;
667 &sub-g-priority;
668 &sub-g-selection;
669 &sub-g-sliced-vbi-cap;
670 &sub-g-std;
671 &sub-g-tuner;
672 &sub-log-status;
673 &sub-overlay;
674 &sub-prepare-buf;
675 &sub-qbuf;
676 &sub-querybuf;
677 &sub-querycap;
678 &sub-queryctrl;
679 &sub-query-dv-timings;
680 &sub-querystd;
681 &sub-reqbufs;
682 &sub-s-hw-freq-seek;
683 &sub-streamon;
684 &sub-subdev-enum-frame-interval;
685 &sub-subdev-enum-frame-size;
686 &sub-subdev-enum-mbus-code;
687 &sub-subdev-g-crop;
688 &sub-subdev-g-fmt;
689 &sub-subdev-g-frame-interval;
690 &sub-subdev-g-selection;
691 &sub-subscribe-event;
692 <!-- End of ioctls. -->
693 &sub-mmap;
694 &sub-munmap;
695 &sub-open;
696 &sub-poll;
697 &sub-read;
698 &sub-select;
699 &sub-write;
700 </appendix>
701
702 <appendix>
703 <title>Common definitions for V4L2 and V4L2 subdev interfaces</title>
704 &sub-selections-common;
705 </appendix>
706
707 <appendix id="videodev">
708 <title>Video For Linux Two Header File</title>
709 &sub-videodev2-h;
710 </appendix>
711
712 <appendix id="capture-example">
713 <title>Video Capture Example</title>
714 &sub-capture-c;
715 </appendix>
716
717 <appendix id="v4l2grab-example">
718 <title>Video Grabber example using libv4l</title>
719 <para>This program demonstrates how to grab V4L2 images in ppm format by
720using libv4l handlers. The advantage is that this grabber can potentially work
721with any V4L2 driver.</para>
722 &sub-v4l2grab-c;
723 </appendix>
724
725 &sub-media-indices;
726
727 &sub-biblio;
728
diff --git a/Documentation/DocBook/media/v4l/v4l2grab.c.xml b/Documentation/DocBook/media/v4l/v4l2grab.c.xml
deleted file mode 100644
index bed12e40be27..000000000000
--- a/Documentation/DocBook/media/v4l/v4l2grab.c.xml
+++ /dev/null
@@ -1,164 +0,0 @@
1<programlisting>
2/* V4L2 video picture grabber
3 Copyright (C) 2009 Mauro Carvalho Chehab &lt;mchehab@infradead.org&gt;
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation version 2 of the License.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 */
14
15#include &lt;stdio.h&gt;
16#include &lt;stdlib.h&gt;
17#include &lt;string.h&gt;
18#include &lt;fcntl.h&gt;
19#include &lt;errno.h&gt;
20#include &lt;sys/ioctl.h&gt;
21#include &lt;sys/types.h&gt;
22#include &lt;sys/time.h&gt;
23#include &lt;sys/mman.h&gt;
24#include &lt;linux/videodev2.h&gt;
25#include "../libv4l/include/libv4l2.h"
26
27#define CLEAR(x) memset(&amp;(x), 0, sizeof(x))
28
29struct buffer {
30 void *start;
31 size_t length;
32};
33
34static void xioctl(int fh, int request, void *arg)
35{
36 int r;
37
38 do {
39 r = v4l2_ioctl(fh, request, arg);
40 } while (r == -1 &amp;&amp; ((errno == EINTR) || (errno == EAGAIN)));
41
42 if (r == -1) {
43 fprintf(stderr, "error %d, %s\n", errno, strerror(errno));
44 exit(EXIT_FAILURE);
45 }
46}
47
48int main(int argc, char **argv)
49{
50 struct <link linkend="v4l2-format">v4l2_format</link> fmt;
51 struct <link linkend="v4l2-buffer">v4l2_buffer</link> buf;
52 struct <link linkend="v4l2-requestbuffers">v4l2_requestbuffers</link> req;
53 enum <link linkend="v4l2-buf-type">v4l2_buf_type</link> type;
54 fd_set fds;
55 struct timeval tv;
56 int r, fd = -1;
57 unsigned int i, n_buffers;
58 char *dev_name = "/dev/video0";
59 char out_name[256];
60 FILE *fout;
61 struct buffer *buffers;
62
63 fd = v4l2_open(dev_name, O_RDWR | O_NONBLOCK, 0);
64 if (fd &lt; 0) {
65 perror("Cannot open device");
66 exit(EXIT_FAILURE);
67 }
68
69 CLEAR(fmt);
70 fmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
71 fmt.fmt.pix.width = 640;
72 fmt.fmt.pix.height = 480;
73 fmt.fmt.pix.pixelformat = V4L2_PIX_FMT_RGB24;
74 fmt.fmt.pix.field = V4L2_FIELD_INTERLACED;
75 xioctl(fd, VIDIOC_S_FMT, &amp;fmt);
76 if (fmt.fmt.pix.pixelformat != V4L2_PIX_FMT_RGB24) {
77 printf("Libv4l didn't accept RGB24 format. Can't proceed.\n");
78 exit(EXIT_FAILURE);
79 }
80 if ((fmt.fmt.pix.width != 640) || (fmt.fmt.pix.height != 480))
81 printf("Warning: driver is sending image at %dx%d\n",
82 fmt.fmt.pix.width, fmt.fmt.pix.height);
83
84 CLEAR(req);
85 req.count = 2;
86 req.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
87 req.memory = V4L2_MEMORY_MMAP;
88 xioctl(fd, VIDIOC_REQBUFS, &amp;req);
89
90 buffers = calloc(req.count, sizeof(*buffers));
91 for (n_buffers = 0; n_buffers &lt; req.count; ++n_buffers) {
92 CLEAR(buf);
93
94 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
95 buf.memory = V4L2_MEMORY_MMAP;
96 buf.index = n_buffers;
97
98 xioctl(fd, VIDIOC_QUERYBUF, &amp;buf);
99
100 buffers[n_buffers].length = buf.length;
101 buffers[n_buffers].start = v4l2_mmap(NULL, buf.length,
102 PROT_READ | PROT_WRITE, MAP_SHARED,
103 fd, buf.m.offset);
104
105 if (MAP_FAILED == buffers[n_buffers].start) {
106 perror("mmap");
107 exit(EXIT_FAILURE);
108 }
109 }
110
111 for (i = 0; i &lt; n_buffers; ++i) {
112 CLEAR(buf);
113 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
114 buf.memory = V4L2_MEMORY_MMAP;
115 buf.index = i;
116 xioctl(fd, VIDIOC_QBUF, &amp;buf);
117 }
118 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
119
120 xioctl(fd, VIDIOC_STREAMON, &amp;type);
121 for (i = 0; i &lt; 20; i++) {
122 do {
123 FD_ZERO(&amp;fds);
124 FD_SET(fd, &amp;fds);
125
126 /* Timeout. */
127 tv.tv_sec = 2;
128 tv.tv_usec = 0;
129
130 r = select(fd + 1, &amp;fds, NULL, NULL, &amp;tv);
131 } while ((r == -1 &amp;&amp; (errno = EINTR)));
132 if (r == -1) {
133 perror("select");
134 return errno;
135 }
136
137 CLEAR(buf);
138 buf.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
139 buf.memory = V4L2_MEMORY_MMAP;
140 xioctl(fd, VIDIOC_DQBUF, &amp;buf);
141
142 sprintf(out_name, "out%03d.ppm", i);
143 fout = fopen(out_name, "w");
144 if (!fout) {
145 perror("Cannot open image");
146 exit(EXIT_FAILURE);
147 }
148 fprintf(fout, "P6\n%d %d 255\n",
149 fmt.fmt.pix.width, fmt.fmt.pix.height);
150 fwrite(buffers[buf.index].start, buf.bytesused, 1, fout);
151 fclose(fout);
152
153 xioctl(fd, VIDIOC_QBUF, &amp;buf);
154 }
155
156 type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
157 xioctl(fd, VIDIOC_STREAMOFF, &amp;type);
158 for (i = 0; i &lt; n_buffers; ++i)
159 v4l2_munmap(buffers[i].start, buffers[i].length);
160 v4l2_close(fd);
161
162 return 0;
163}
164</programlisting>
diff --git a/Documentation/DocBook/media/v4l/vbi_525.pdf b/Documentation/DocBook/media/v4l/vbi_525.pdf
deleted file mode 100644
index 9e72c25b208d..000000000000
--- a/Documentation/DocBook/media/v4l/vbi_525.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/vbi_625.pdf b/Documentation/DocBook/media/v4l/vbi_625.pdf
deleted file mode 100644
index 765235e33a4d..000000000000
--- a/Documentation/DocBook/media/v4l/vbi_625.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/vbi_hsync.pdf b/Documentation/DocBook/media/v4l/vbi_hsync.pdf
deleted file mode 100644
index 200b668189bf..000000000000
--- a/Documentation/DocBook/media/v4l/vbi_hsync.pdf
+++ /dev/null
Binary files differ
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
deleted file mode 100644
index 6528e97b8990..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
+++ /dev/null
@@ -1,158 +0,0 @@
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 <para>This ioctl is used to create buffers for <link linkend="mmap">memory
53mapped</link> or <link linkend="userp">user pointer</link> or <link
54linkend="dmabuf">DMA buffer</link> I/O. It can be used as an alternative or in
55addition to the &VIDIOC-REQBUFS; ioctl, when a tighter
56control over buffers is required. This ioctl can be called multiple times to
57create buffers of different sizes.</para>
58
59 <para>To allocate the device buffers applications must initialize the
60relevant fields of the <structname>v4l2_create_buffers</structname> structure.
61The <structfield>count</structfield> field must be set to the number of
62requested buffers, the <structfield>memory</structfield> field specifies the
63requested I/O method and the <structfield>reserved</structfield> array must be
64zeroed.</para>
65
66 <para>The <structfield>format</structfield> field specifies the image format
67that the buffers must be able to handle. The application has to fill in this
68&v4l2-format;. Usually this will be done using the &VIDIOC-TRY-FMT; or &VIDIOC-G-FMT; ioctls
69to ensure that the requested format is supported by the driver.
70Based on the format's <structfield>type</structfield> field the requested buffer
71size (for single-planar) or plane sizes (for multi-planar formats) will be
72used for the allocated buffers. The driver may return an error if the size(s)
73are not supported by the hardware (usually because they are too small).</para>
74
75 <para>The buffers created by this ioctl will have as minimum size the size
76defined by the <structfield>format.pix.sizeimage</structfield> field (or the
77corresponding fields for other format types). Usually if the
78<structfield>format.pix.sizeimage</structfield> field is less than the minimum
79required for the given format, then an error will be returned since drivers will
80typically not allow this. If it is larger, then the value will be used as-is.
81In other words, the driver may reject the requested size, but if it is accepted
82the driver will use it unchanged.</para>
83
84 <para>When the ioctl is called with a pointer to this structure the driver
85will attempt to allocate up to the requested number of buffers and store the
86actual number allocated and the starting index in the
87<structfield>count</structfield> and the <structfield>index</structfield> fields
88respectively. On return <structfield>count</structfield> can be smaller than
89the number requested.</para>
90
91 <table pgwide="1" frame="none" id="v4l2-create-buffers">
92 <title>struct <structname>v4l2_create_buffers</structname></title>
93 <tgroup cols="3">
94 &cs-str;
95 <tbody valign="top">
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>index</structfield></entry>
99 <entry>The starting buffer index, returned by the driver.</entry>
100 </row>
101 <row>
102 <entry>__u32</entry>
103 <entry><structfield>count</structfield></entry>
104 <entry>The number of buffers requested or granted. If count == 0, then
105 <constant>VIDIOC_CREATE_BUFS</constant> will set <structfield>index</structfield>
106 to the current number of created buffers, and it will check the validity of
107 <structfield>memory</structfield> and <structfield>format.type</structfield>.
108 If those are invalid -1 is returned and errno is set to &EINVAL;,
109 otherwise <constant>VIDIOC_CREATE_BUFS</constant> returns 0. It will
110 never set errno to &EBUSY; in this particular case.</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>memory</structfield></entry>
115 <entry>Applications set this field to
116<constant>V4L2_MEMORY_MMAP</constant>,
117<constant>V4L2_MEMORY_DMABUF</constant> or
118<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
119/></entry>
120 </row>
121 <row>
122 <entry>&v4l2-format;</entry>
123 <entry><structfield>format</structfield></entry>
124 <entry>Filled in by the application, preserved by the driver.</entry>
125 </row>
126 <row>
127 <entry>__u32</entry>
128 <entry><structfield>reserved</structfield>[8]</entry>
129 <entry>A place holder for future extensions. Drivers and applications
130must set the array to zero.</entry>
131 </row>
132 </tbody>
133 </tgroup>
134 </table>
135 </refsect1>
136
137 <refsect1>
138 &return-value;
139
140 <variablelist>
141 <varlistentry>
142 <term><errorcode>ENOMEM</errorcode></term>
143 <listitem>
144 <para>No memory to allocate buffers for <link linkend="mmap">memory
145mapped</link> I/O.</para>
146 </listitem>
147 </varlistentry>
148 <varlistentry>
149 <term><errorcode>EINVAL</errorcode></term>
150 <listitem>
151 <para>The buffer type (<structfield>format.type</structfield> field),
152requested I/O method (<structfield>memory</structfield>) or format
153(<structfield>format</structfield> field) is not valid.</para>
154 </listitem>
155 </varlistentry>
156 </variablelist>
157 </refsect1>
158</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
deleted file mode 100644
index 50cb940cbe5c..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
+++ /dev/null
@@ -1,166 +0,0 @@
1<refentry id="vidioc-cropcap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_CROPCAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_CROPCAP</refname>
9 <refpurpose>Information about the video cropping and scaling abilities</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_cropcap
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_CROPCAP</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>Applications use this function to query the cropping
53limits, the pixel aspect of images and to calculate scale factors.
54They set the <structfield>type</structfield> field of a v4l2_cropcap
55structure to the respective buffer (stream) type and call the
56<constant>VIDIOC_CROPCAP</constant> ioctl with a pointer to this
57structure. Drivers fill the rest of the structure. The results are
58constant except when switching the video standard. Remember this
59switch can occur implicit when switching the video input or
60output.</para>
61
62<para>Do not use the multiplanar buffer types. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
63instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>
64and use <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
65<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>.</para>
66
67 <para>This ioctl must be implemented for video capture or output devices that
68support cropping and/or scaling and/or have non-square pixels, and for overlay devices.</para>
69
70 <table pgwide="1" frame="none" id="v4l2-cropcap">
71 <title>struct <structname>v4l2_cropcap</structname></title>
72 <tgroup cols="3">
73 &cs-str;
74 <tbody valign="top">
75 <row>
76 <entry>__u32</entry>
77 <entry><structfield>type</structfield></entry>
78 <entry>Type of the data stream, set by the application.
79Only these types are valid here:
80<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> and
82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
83 </row>
84 <row>
85 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry>
86 <entry><structfield>bounds</structfield></entry>
87 <entry>Defines the window within capturing or output is
88possible, this may exclude for example the horizontal and vertical
89blanking areas. The cropping rectangle cannot exceed these limits.
90Width and height are defined in pixels, the driver writer is free to
91choose origin and units of the coordinate system in the analog
92domain.</entry>
93 </row>
94 <row>
95 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry>
96 <entry><structfield>defrect</structfield></entry>
97 <entry>Default cropping rectangle, it shall cover the
98"whole picture". Assuming pixel aspect 1/1 this could be for example a
99640&nbsp;&times;&nbsp;480 rectangle for NTSC, a
100768&nbsp;&times;&nbsp;576 rectangle for PAL and SECAM centered over
101the active picture area. The same co-ordinate system as for
102 <structfield>bounds</structfield> is used.</entry>
103 </row>
104 <row>
105 <entry>&v4l2-fract;</entry>
106 <entry><structfield>pixelaspect</structfield></entry>
107 <entry><para>This is the pixel aspect (y / x) when no
108scaling is applied, the ratio of the actual sampling
109frequency and the frequency required to get square
110pixels.</para><para>When cropping coordinates refer to square pixels,
111the driver sets <structfield>pixelaspect</structfield> to 1/1. Other
112common values are 54/59 for PAL and SECAM, 11/10 for NTSC sampled
113according to [<xref linkend="itu601" />].</para></entry>
114 </row>
115 </tbody>
116 </tgroup>
117 </table>
118
119 <!-- NB this table is duplicated in the overlay chapter. -->
120
121 <table pgwide="1" frame="none" id="v4l2-rect-crop">
122 <title>struct <structname>v4l2_rect</structname></title>
123 <tgroup cols="3">
124 &cs-str;
125 <tbody valign="top">
126 <row>
127 <entry>__s32</entry>
128 <entry><structfield>left</structfield></entry>
129 <entry>Horizontal offset of the top, left corner of the
130rectangle, in pixels.</entry>
131 </row>
132 <row>
133 <entry>__s32</entry>
134 <entry><structfield>top</structfield></entry>
135 <entry>Vertical offset of the top, left corner of the
136rectangle, in pixels.</entry>
137 </row>
138 <row>
139 <entry>__u32</entry>
140 <entry><structfield>width</structfield></entry>
141 <entry>Width of the rectangle, in pixels.</entry>
142 </row>
143 <row>
144 <entry>__u32</entry>
145 <entry><structfield>height</structfield></entry>
146 <entry>Height of the rectangle, in pixels.</entry>
147 </row>
148 </tbody>
149 </tgroup>
150 </table>
151 </refsect1>
152
153 <refsect1>
154 &return-value;
155
156 <variablelist>
157 <varlistentry>
158 <term><errorcode>EINVAL</errorcode></term>
159 <listitem>
160 <para>The &v4l2-cropcap; <structfield>type</structfield> is
161invalid.</para>
162 </listitem>
163 </varlistentry>
164 </variablelist>
165 </refsect1>
166</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml
deleted file mode 100644
index f14a3bb1afaa..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-dbg-g-chip-info.xml
+++ /dev/null
@@ -1,207 +0,0 @@
1<refentry id="vidioc-dbg-g-chip-info">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DBG_G_CHIP_INFO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DBG_G_CHIP_INFO</refname>
9 <refpurpose>Identify the chips on a TV card</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_dbg_chip_info
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_DBG_G_CHIP_INFO</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
55 <para>This is an <link
56linkend="experimental">experimental</link> interface and may change in
57the future.</para>
58 </note>
59
60 <para>For driver debugging purposes this ioctl allows test
61applications to query the driver about the chips present on the TV
62card. Regular applications must not use it. When you found a chip
63specific bug, please contact the linux-media mailing list (&v4l-ml;)
64so it can be fixed.</para>
65
66 <para>Additionally the Linux kernel must be compiled with the
67<constant>CONFIG_VIDEO_ADV_DEBUG</constant> option to enable this ioctl.</para>
68
69 <para>To query the driver applications must initialize the
70<structfield>match.type</structfield> and
71<structfield>match.addr</structfield> or <structfield>match.name</structfield>
72fields of a &v4l2-dbg-chip-info;
73and call <constant>VIDIOC_DBG_G_CHIP_INFO</constant> with a pointer to
74this structure. On success the driver stores information about the
75selected chip in the <structfield>name</structfield> and
76<structfield>flags</structfield> fields.</para>
77
78 <para>When <structfield>match.type</structfield> is
79<constant>V4L2_CHIP_MATCH_BRIDGE</constant>,
80<structfield>match.addr</structfield> selects the nth bridge 'chip'
81on the TV card. You can enumerate all chips by starting at zero and
82incrementing <structfield>match.addr</structfield> by one until
83<constant>VIDIOC_DBG_G_CHIP_INFO</constant> fails with an &EINVAL;.
84The number zero always selects the bridge chip itself, &eg; the chip
85connected to the PCI or USB bus. Non-zero numbers identify specific
86parts of the bridge chip such as an AC97 register block.</para>
87
88 <para>When <structfield>match.type</structfield> is
89<constant>V4L2_CHIP_MATCH_SUBDEV</constant>,
90<structfield>match.addr</structfield> selects the nth sub-device. This
91allows you to enumerate over all sub-devices.</para>
92
93 <para>On success, the <structfield>name</structfield> field will
94contain a chip name and the <structfield>flags</structfield> field will
95contain <constant>V4L2_CHIP_FL_READABLE</constant> if the driver supports
96reading registers from the device or <constant>V4L2_CHIP_FL_WRITABLE</constant>
97if the driver supports writing registers to the device.</para>
98
99 <para>We recommended the <application>v4l2-dbg</application>
100utility over calling this ioctl directly. It is available from the
101LinuxTV v4l-dvb repository; see <ulink
102url="https://linuxtv.org/repo/">https://linuxtv.org/repo/</ulink> for
103access instructions.</para>
104
105 <!-- Note for convenience vidioc-dbg-g-register.sgml
106 contains a duplicate of this table. -->
107 <table pgwide="1" frame="none" id="name-v4l2-dbg-match">
108 <title>struct <structname>v4l2_dbg_match</structname></title>
109 <tgroup cols="4">
110 &cs-ustr;
111 <tbody valign="top">
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>type</structfield></entry>
115 <entry>See <xref linkend="name-chip-match-types" /> for a list of
116possible types.</entry>
117 </row>
118 <row>
119 <entry>union</entry>
120 <entry>(anonymous)</entry>
121 </row>
122 <row>
123 <entry></entry>
124 <entry>__u32</entry>
125 <entry><structfield>addr</structfield></entry>
126 <entry>Match a chip by this number, interpreted according
127to the <structfield>type</structfield> field.</entry>
128 </row>
129 <row>
130 <entry></entry>
131 <entry>char</entry>
132 <entry><structfield>name[32]</structfield></entry>
133 <entry>Match a chip by this name, interpreted according
134to the <structfield>type</structfield> field. Currently unused.</entry>
135 </row>
136 </tbody>
137 </tgroup>
138 </table>
139
140 <table pgwide="1" frame="none" id="v4l2-dbg-chip-info">
141 <title>struct <structname>v4l2_dbg_chip_info</structname></title>
142 <tgroup cols="3">
143 &cs-str;
144 <tbody valign="top">
145 <row>
146 <entry>struct v4l2_dbg_match</entry>
147 <entry><structfield>match</structfield></entry>
148 <entry>How to match the chip, see <xref linkend="name-v4l2-dbg-match" />.</entry>
149 </row>
150 <row>
151 <entry>char</entry>
152 <entry><structfield>name[32]</structfield></entry>
153 <entry>The name of the chip.</entry>
154 </row>
155 <row>
156 <entry>__u32</entry>
157 <entry><structfield>flags</structfield></entry>
158 <entry>Set by the driver. If <constant>V4L2_CHIP_FL_READABLE</constant>
159is set, then the driver supports reading registers from the device. If
160<constant>V4L2_CHIP_FL_WRITABLE</constant> is set, then it supports writing registers.</entry>
161 </row>
162 <row>
163 <entry>__u32</entry>
164 <entry><structfield>reserved[8]</structfield></entry>
165 <entry>Reserved fields, both application and driver must set these to 0.</entry>
166 </row>
167 </tbody>
168 </tgroup>
169 </table>
170
171 <!-- Note for convenience vidioc-dbg-g-register.sgml
172 contains a duplicate of this table. -->
173 <table pgwide="1" frame="none" id="name-chip-match-types">
174 <title>Chip Match Types</title>
175 <tgroup cols="3">
176 &cs-def;
177 <tbody valign="top">
178 <row>
179 <entry><constant>V4L2_CHIP_MATCH_BRIDGE</constant></entry>
180 <entry>0</entry>
181 <entry>Match the nth chip on the card, zero for the
182 bridge chip. Does not match sub-devices.</entry>
183 </row>
184 <row>
185 <entry><constant>V4L2_CHIP_MATCH_SUBDEV</constant></entry>
186 <entry>4</entry>
187 <entry>Match the nth sub-device.</entry>
188 </row>
189 </tbody>
190 </tgroup>
191 </table>
192 </refsect1>
193
194 <refsect1>
195 &return-value;
196
197 <variablelist>
198 <varlistentry>
199 <term><errorcode>EINVAL</errorcode></term>
200 <listitem>
201 <para>The <structfield>match_type</structfield> is invalid or
202no device could be matched.</para>
203 </listitem>
204 </varlistentry>
205 </variablelist>
206 </refsect1>
207</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml b/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
deleted file mode 100644
index 5877f68a5820..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-dbg-g-register.xml
+++ /dev/null
@@ -1,227 +0,0 @@
1<refentry id="vidioc-dbg-g-register">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DBG_G_REGISTER</refname>
9 <refname>VIDIOC_DBG_S_REGISTER</refname>
10 <refpurpose>Read or write hardware registers</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_dbg_register *<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_dbg_register
28*<parameter>argp</parameter></paramdef>
29 </funcprototype>
30 </funcsynopsis>
31 </refsynopsisdiv>
32
33 <refsect1>
34 <title>Arguments</title>
35
36 <variablelist>
37 <varlistentry>
38 <term><parameter>fd</parameter></term>
39 <listitem>
40 <para>&fd;</para>
41 </listitem>
42 </varlistentry>
43 <varlistentry>
44 <term><parameter>request</parameter></term>
45 <listitem>
46 <para>VIDIOC_DBG_G_REGISTER, VIDIOC_DBG_S_REGISTER</para>
47 </listitem>
48 </varlistentry>
49 <varlistentry>
50 <term><parameter>argp</parameter></term>
51 <listitem>
52 <para></para>
53 </listitem>
54 </varlistentry>
55 </variablelist>
56 </refsect1>
57
58 <refsect1>
59 <title>Description</title>
60
61 <note>
62 <title>Experimental</title>
63
64 <para>This is an <link linkend="experimental">experimental</link>
65interface and may change in the future.</para>
66 </note>
67
68 <para>For driver debugging purposes these ioctls allow test
69applications to access hardware registers directly. Regular
70applications must not use them.</para>
71
72 <para>Since writing or even reading registers can jeopardize the
73system security, its stability and damage the hardware, both ioctls
74require superuser privileges. Additionally the Linux kernel must be
75compiled with the <constant>CONFIG_VIDEO_ADV_DEBUG</constant> option
76to enable these ioctls.</para>
77
78 <para>To write a register applications must initialize all fields
79of a &v4l2-dbg-register; except for <structfield>size</structfield> and call
80<constant>VIDIOC_DBG_S_REGISTER</constant> with a pointer to this
81structure. The <structfield>match.type</structfield> and
82<structfield>match.addr</structfield> or <structfield>match.name</structfield>
83fields select a chip on the TV
84card, the <structfield>reg</structfield> field specifies a register
85number and the <structfield>val</structfield> field the value to be
86written into the register.</para>
87
88 <para>To read a register applications must initialize the
89<structfield>match.type</structfield>,
90<structfield>match.addr</structfield> or <structfield>match.name</structfield> and
91<structfield>reg</structfield> fields, and call
92<constant>VIDIOC_DBG_G_REGISTER</constant> with a pointer to this
93structure. On success the driver stores the register value in the
94<structfield>val</structfield> field and the size (in bytes) of the
95value in <structfield>size</structfield>.</para>
96
97 <para>When <structfield>match.type</structfield> is
98<constant>V4L2_CHIP_MATCH_BRIDGE</constant>,
99<structfield>match.addr</structfield> selects the nth non-sub-device chip
100on the TV card. The number zero always selects the host chip, &eg; the
101chip connected to the PCI or USB bus. You can find out which chips are
102present with the &VIDIOC-DBG-G-CHIP-INFO; ioctl.</para>
103
104 <para>When <structfield>match.type</structfield> is
105<constant>V4L2_CHIP_MATCH_SUBDEV</constant>,
106<structfield>match.addr</structfield> selects the nth sub-device.</para>
107
108 <para>These ioctls are optional, not all drivers may support them.
109However when a driver supports these ioctls it must also support
110&VIDIOC-DBG-G-CHIP-INFO;. Conversely it may support
111<constant>VIDIOC_DBG_G_CHIP_INFO</constant> but not these ioctls.</para>
112
113 <para><constant>VIDIOC_DBG_G_REGISTER</constant> and
114<constant>VIDIOC_DBG_S_REGISTER</constant> were introduced in Linux
1152.6.21, but their API was changed to the one described here in kernel 2.6.29.</para>
116
117 <para>We recommended the <application>v4l2-dbg</application>
118utility over calling these ioctls directly. It is available from the
119LinuxTV v4l-dvb repository; see <ulink
120url="https://linuxtv.org/repo/">https://linuxtv.org/repo/</ulink> for
121access instructions.</para>
122
123 <!-- Note for convenience vidioc-dbg-g-chip-info.sgml
124 contains a duplicate of this table. -->
125 <table pgwide="1" frame="none" id="v4l2-dbg-match">
126 <title>struct <structname>v4l2_dbg_match</structname></title>
127 <tgroup cols="4">
128 &cs-ustr;
129 <tbody valign="top">
130 <row>
131 <entry>__u32</entry>
132 <entry><structfield>type</structfield></entry>
133 <entry>See <xref linkend="chip-match-types" /> for a list of
134possible types.</entry>
135 </row>
136 <row>
137 <entry>union</entry>
138 <entry>(anonymous)</entry>
139 </row>
140 <row>
141 <entry></entry>
142 <entry>__u32</entry>
143 <entry><structfield>addr</structfield></entry>
144 <entry>Match a chip by this number, interpreted according
145to the <structfield>type</structfield> field.</entry>
146 </row>
147 <row>
148 <entry></entry>
149 <entry>char</entry>
150 <entry><structfield>name[32]</structfield></entry>
151 <entry>Match a chip by this name, interpreted according
152to the <structfield>type</structfield> field. Currently unused.</entry>
153 </row>
154 </tbody>
155 </tgroup>
156 </table>
157
158
159 <table pgwide="1" frame="none" id="v4l2-dbg-register">
160 <title>struct <structname>v4l2_dbg_register</structname></title>
161 <tgroup cols="4">
162 <colspec colname="c1" />
163 <colspec colname="c2" />
164 <colspec colname="c4" />
165 <tbody valign="top">
166 <row>
167 <entry>struct v4l2_dbg_match</entry>
168 <entry><structfield>match</structfield></entry>
169 <entry>How to match the chip, see <xref linkend="v4l2-dbg-match" />.</entry>
170 </row>
171 <row>
172 <entry>__u32</entry>
173 <entry><structfield>size</structfield></entry>
174 <entry>The register size in bytes.</entry>
175 </row>
176 <row>
177 <entry>__u64</entry>
178 <entry><structfield>reg</structfield></entry>
179 <entry>A register number.</entry>
180 </row>
181 <row>
182 <entry>__u64</entry>
183 <entry><structfield>val</structfield></entry>
184 <entry>The value read from, or to be written into the
185register.</entry>
186 </row>
187 </tbody>
188 </tgroup>
189 </table>
190
191 <!-- Note for convenience vidioc-dbg-g-chip-info.sgml
192 contains a duplicate of this table. -->
193 <table pgwide="1" frame="none" id="chip-match-types">
194 <title>Chip Match Types</title>
195 <tgroup cols="3">
196 &cs-def;
197 <tbody valign="top">
198 <row>
199 <entry><constant>V4L2_CHIP_MATCH_BRIDGE</constant></entry>
200 <entry>0</entry>
201 <entry>Match the nth chip on the card, zero for the
202 bridge chip. Does not match sub-devices.</entry>
203 </row>
204 <row>
205 <entry><constant>V4L2_CHIP_MATCH_SUBDEV</constant></entry>
206 <entry>4</entry>
207 <entry>Match the nth sub-device.</entry>
208 </row>
209 </tbody>
210 </tgroup>
211 </table>
212 </refsect1>
213
214 <refsect1>
215 &return-value;
216
217 <variablelist>
218 <varlistentry>
219 <term><errorcode>EPERM</errorcode></term>
220 <listitem>
221 <para>Insufficient permissions. Root privileges are required
222to execute these ioctls.</para>
223 </listitem>
224 </varlistentry>
225 </variablelist>
226 </refsect1>
227</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
deleted file mode 100644
index 73eb5cfe698a..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-decoder-cmd.xml
+++ /dev/null
@@ -1,259 +0,0 @@
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. mem2mem decoders will stop producing new frames altogether. They will send
201a <constant>V4L2_EVENT_EOS</constant> event when the last frame has been decoded
202and all frames are ready to be dequeued and will set the
203<constant>V4L2_BUF_FLAG_LAST</constant> buffer flag on the last buffer of the
204capture queue to indicate there will be no new buffers produced to dequeue. This
205buffer may be empty, indicated by the driver setting the
206<structfield>bytesused</structfield> field to 0. Once the
207<constant>V4L2_BUF_FLAG_LAST</constant> flag was set, the
208<link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl will not block anymore,
209but return an &EPIPE;.
210If <constant>V4L2_DEC_CMD_STOP_IMMEDIATELY</constant> is set, then the decoder
211stops immediately (ignoring the <structfield>pts</structfield> value), otherwise it
212will keep decoding until timestamp >= pts or until the last of the pending data from
213its internal buffers was decoded.
214</entry>
215 </row>
216 <row>
217 <entry><constant>V4L2_DEC_CMD_PAUSE</constant></entry>
218 <entry>2</entry>
219 <entry>Pause the decoder. When the decoder has not been
220started yet, the driver will return an &EPERM;. When the decoder is
221already paused, this command does nothing. This command has one flag:
222if <constant>V4L2_DEC_CMD_PAUSE_TO_BLACK</constant> is set, then set the
223decoder output to black when paused.
224</entry>
225 </row>
226 <row>
227 <entry><constant>V4L2_DEC_CMD_RESUME</constant></entry>
228 <entry>3</entry>
229 <entry>Resume decoding after a PAUSE command. When the
230decoder has not been started yet, the driver will return an &EPERM;.
231When the decoder is already running, this command does nothing. No
232flags are defined for this command.</entry>
233 </row>
234 </tbody>
235 </tgroup>
236 </table>
237
238 </refsect1>
239
240 <refsect1>
241 &return-value;
242
243 <variablelist>
244 <varlistentry>
245 <term><errorcode>EINVAL</errorcode></term>
246 <listitem>
247 <para>The <structfield>cmd</structfield> field is invalid.</para>
248 </listitem>
249 </varlistentry>
250 <varlistentry>
251 <term><errorcode>EPERM</errorcode></term>
252 <listitem>
253 <para>The application sent a PAUSE or RESUME command when
254the decoder was not running.</para>
255 </listitem>
256 </varlistentry>
257 </variablelist>
258 </refsect1>
259</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml b/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
deleted file mode 100644
index c9c3c7713832..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-dqevent.xml
+++ /dev/null
@@ -1,471 +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, see <xref linkend="event-type" />.</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 <constant>V4L2_EVENT_VSYNC</constant>.
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 <constant>V4L2_EVENT_CTRL</constant>.
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
94 <constant>V4L2_EVENT_FRAME_SYNC</constant>.</entry>
95 </row>
96 <row>
97 <entry></entry>
98 <entry>&v4l2-event-motion-det;</entry>
99 <entry><structfield>motion_det</structfield></entry>
100 <entry>Event data for event V4L2_EVENT_MOTION_DET.</entry>
101 </row>
102 <row>
103 <entry></entry>
104 <entry>&v4l2-event-src-change;</entry>
105 <entry><structfield>src_change</structfield></entry>
106 <entry>Event data for event V4L2_EVENT_SOURCE_CHANGE.</entry>
107 </row>
108 <row>
109 <entry></entry>
110 <entry>__u8</entry>
111 <entry><structfield>data</structfield>[64]</entry>
112 <entry>Event data. Defined by the event type. The union
113 should be used to define easily accessible type for
114 events.</entry>
115 </row>
116 <row>
117 <entry>__u32</entry>
118 <entry><structfield>pending</structfield></entry>
119 <entry></entry>
120 <entry>Number of pending events excluding this one.</entry>
121 </row>
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>sequence</structfield></entry>
125 <entry></entry>
126 <entry>Event sequence number. The sequence number is
127 incremented for every subscribed event that takes place.
128 If sequence numbers are not contiguous it means that
129 events have been lost.
130 </entry>
131 </row>
132 <row>
133 <entry>struct timespec</entry>
134 <entry><structfield>timestamp</structfield></entry>
135 <entry></entry>
136 <entry>Event timestamp. The timestamp has been taken from the
137 <constant>CLOCK_MONOTONIC</constant> clock. To access the
138 same clock outside V4L2, use <function>clock_gettime(2)</function>.
139 </entry>
140 </row>
141 <row>
142 <entry>u32</entry>
143 <entry><structfield>id</structfield></entry>
144 <entry></entry>
145 <entry>The ID associated with the event source. If the event does not
146 have an associated ID (this depends on the event type), then this
147 is 0.</entry>
148 </row>
149 <row>
150 <entry>__u32</entry>
151 <entry><structfield>reserved</structfield>[8]</entry>
152 <entry></entry>
153 <entry>Reserved for future extensions. Drivers must set
154 the array to zero.</entry>
155 </row>
156 </tbody>
157 </tgroup>
158 </table>
159
160 <table frame="none" pgwide="1" id="event-type">
161 <title>Event Types</title>
162 <tgroup cols="3">
163 &cs-def;
164 <tbody valign="top">
165 <row>
166 <entry><constant>V4L2_EVENT_ALL</constant></entry>
167 <entry>0</entry>
168 <entry>All events. V4L2_EVENT_ALL is valid only for
169 VIDIOC_UNSUBSCRIBE_EVENT for unsubscribing all events at once.
170 </entry>
171 </row>
172 <row>
173 <entry><constant>V4L2_EVENT_VSYNC</constant></entry>
174 <entry>1</entry>
175 <entry>This event is triggered on the vertical sync.
176 This event has a &v4l2-event-vsync; associated with it.
177 </entry>
178 </row>
179 <row>
180 <entry><constant>V4L2_EVENT_EOS</constant></entry>
181 <entry>2</entry>
182 <entry>This event is triggered when the end of a stream is reached.
183 This is typically used with MPEG decoders to report to the application
184 when the last of the MPEG stream has been decoded.
185 </entry>
186 </row>
187 <row>
188 <entry><constant>V4L2_EVENT_CTRL</constant></entry>
189 <entry>3</entry>
190 <entry><para>This event requires that the <structfield>id</structfield>
191 matches the control ID from which you want to receive events.
192 This event is triggered if the control's value changes, if a
193 button control is pressed or if the control's flags change.
194 This event has a &v4l2-event-ctrl; associated with it. This struct
195 contains much of the same information as &v4l2-queryctrl; and
196 &v4l2-control;.</para>
197
198 <para>If the event is generated due to a call to &VIDIOC-S-CTRL; or
199 &VIDIOC-S-EXT-CTRLS;, then the event will <emphasis>not</emphasis> be sent to
200 the file handle that called the ioctl function. This prevents
201 nasty feedback loops. If you <emphasis>do</emphasis> want to get the
202 event, then set the <constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant>
203 flag.
204 </para>
205
206 <para>This event type will ensure that no information is lost when
207 more events are raised than there is room internally. In that
208 case the &v4l2-event-ctrl; of the second-oldest event is kept,
209 but the <structfield>changes</structfield> field of the
210 second-oldest event is ORed with the <structfield>changes</structfield>
211 field of the oldest event.</para>
212 </entry>
213 </row>
214 <row>
215 <entry><constant>V4L2_EVENT_FRAME_SYNC</constant></entry>
216 <entry>4</entry>
217 <entry>
218 <para>Triggered immediately when the reception of a
219 frame has begun. This event has a
220 &v4l2-event-frame-sync; associated with it.</para>
221
222 <para>If the hardware needs to be stopped in the case of a
223 buffer underrun it might not be able to generate this event.
224 In such cases the <structfield>frame_sequence</structfield>
225 field in &v4l2-event-frame-sync; will not be incremented. This
226 causes two consecutive frame sequence numbers to have n times
227 frame interval in between them.</para>
228 </entry>
229 </row>
230 <row>
231 <entry><constant>V4L2_EVENT_SOURCE_CHANGE</constant></entry>
232 <entry>5</entry>
233 <entry>
234 <para>This event is triggered when a source parameter change is
235 detected during runtime by the video device. It can be a
236 runtime resolution change triggered by a video decoder or the
237 format change happening on an input connector.
238 This event requires that the <structfield>id</structfield>
239 matches the input index (when used with a video device node)
240 or the pad index (when used with a subdevice node) from which
241 you want to receive events.</para>
242
243 <para>This event has a &v4l2-event-src-change; associated
244 with it. The <structfield>changes</structfield> bitfield denotes
245 what has changed for the subscribed pad. If multiple events
246 occurred before application could dequeue them, then the changes
247 will have the ORed value of all the events generated.</para>
248 </entry>
249 </row>
250 <row>
251 <entry><constant>V4L2_EVENT_MOTION_DET</constant></entry>
252 <entry>6</entry>
253 <entry>
254 <para>Triggered whenever the motion detection state for one or more of the regions
255 changes. This event has a &v4l2-event-motion-det; associated with it.</para>
256 </entry>
257 </row>
258 <row>
259 <entry><constant>V4L2_EVENT_PRIVATE_START</constant></entry>
260 <entry>0x08000000</entry>
261 <entry>Base event number for driver-private events.</entry>
262 </row>
263 </tbody>
264 </tgroup>
265 </table>
266
267 <table frame="none" pgwide="1" id="v4l2-event-vsync">
268 <title>struct <structname>v4l2_event_vsync</structname></title>
269 <tgroup cols="3">
270 &cs-str;
271 <tbody valign="top">
272 <row>
273 <entry>__u8</entry>
274 <entry><structfield>field</structfield></entry>
275 <entry>The upcoming field. See &v4l2-field;.</entry>
276 </row>
277 </tbody>
278 </tgroup>
279 </table>
280
281 <table frame="none" pgwide="1" id="v4l2-event-ctrl">
282 <title>struct <structname>v4l2_event_ctrl</structname></title>
283 <tgroup cols="4">
284 &cs-str;
285 <tbody valign="top">
286 <row>
287 <entry>__u32</entry>
288 <entry><structfield>changes</structfield></entry>
289 <entry></entry>
290 <entry>A bitmask that tells what has changed. See <xref linkend="ctrl-changes-flags" />.</entry>
291 </row>
292 <row>
293 <entry>__u32</entry>
294 <entry><structfield>type</structfield></entry>
295 <entry></entry>
296 <entry>The type of the control. See &v4l2-ctrl-type;.</entry>
297 </row>
298 <row>
299 <entry>union (anonymous)</entry>
300 <entry></entry>
301 <entry></entry>
302 <entry></entry>
303 </row>
304 <row>
305 <entry></entry>
306 <entry>__s32</entry>
307 <entry><structfield>value</structfield></entry>
308 <entry>The 32-bit value of the control for 32-bit control types.
309 This is 0 for string controls since the value of a string
310 cannot be passed using &VIDIOC-DQEVENT;.</entry>
311 </row>
312 <row>
313 <entry></entry>
314 <entry>__s64</entry>
315 <entry><structfield>value64</structfield></entry>
316 <entry>The 64-bit value of the control for 64-bit control types.</entry>
317 </row>
318 <row>
319 <entry>__u32</entry>
320 <entry><structfield>flags</structfield></entry>
321 <entry></entry>
322 <entry>The control flags. See <xref linkend="control-flags" />.</entry>
323 </row>
324 <row>
325 <entry>__s32</entry>
326 <entry><structfield>minimum</structfield></entry>
327 <entry></entry>
328 <entry>The minimum value of the control. See &v4l2-queryctrl;.</entry>
329 </row>
330 <row>
331 <entry>__s32</entry>
332 <entry><structfield>maximum</structfield></entry>
333 <entry></entry>
334 <entry>The maximum value of the control. See &v4l2-queryctrl;.</entry>
335 </row>
336 <row>
337 <entry>__s32</entry>
338 <entry><structfield>step</structfield></entry>
339 <entry></entry>
340 <entry>The step value of the control. See &v4l2-queryctrl;.</entry>
341 </row>
342 <row>
343 <entry>__s32</entry>
344 <entry><structfield>default_value</structfield></entry>
345 <entry></entry>
346 <entry>The default value value of the control. See &v4l2-queryctrl;.</entry>
347 </row>
348 </tbody>
349 </tgroup>
350 </table>
351
352 <table frame="none" pgwide="1" id="v4l2-event-frame-sync">
353 <title>struct <structname>v4l2_event_frame_sync</structname></title>
354 <tgroup cols="3">
355 &cs-str;
356 <tbody valign="top">
357 <row>
358 <entry>__u32</entry>
359 <entry><structfield>frame_sequence</structfield></entry>
360 <entry>
361 The sequence number of the frame being received.
362 </entry>
363 </row>
364 </tbody>
365 </tgroup>
366 </table>
367
368 <table frame="none" pgwide="1" id="v4l2-event-src-change">
369 <title>struct <structname>v4l2_event_src_change</structname></title>
370 <tgroup cols="3">
371 &cs-str;
372 <tbody valign="top">
373 <row>
374 <entry>__u32</entry>
375 <entry><structfield>changes</structfield></entry>
376 <entry>
377 A bitmask that tells what has changed. See <xref linkend="src-changes-flags" />.
378 </entry>
379 </row>
380 </tbody>
381 </tgroup>
382 </table>
383
384 <table frame="none" pgwide="1" id="v4l2-event-motion-det">
385 <title>struct <structname>v4l2_event_motion_det</structname></title>
386 <tgroup cols="3">
387 &cs-str;
388 <tbody valign="top">
389 <row>
390 <entry>__u32</entry>
391 <entry><structfield>flags</structfield></entry>
392 <entry>
393 Currently only one flag is available: if <constant>V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ</constant>
394 is set, then the <structfield>frame_sequence</structfield> field is valid,
395 otherwise that field should be ignored.
396 </entry>
397 </row>
398 <row>
399 <entry>__u32</entry>
400 <entry><structfield>frame_sequence</structfield></entry>
401 <entry>
402 The sequence number of the frame being received. Only valid if the
403 <constant>V4L2_EVENT_MD_FL_HAVE_FRAME_SEQ</constant> flag was set.
404 </entry>
405 </row>
406 <row>
407 <entry>__u32</entry>
408 <entry><structfield>region_mask</structfield></entry>
409 <entry>
410 The bitmask of the regions that reported motion. There is at least one
411 region. If this field is 0, then no motion was detected at all.
412 If there is no <constant>V4L2_CID_DETECT_MD_REGION_GRID</constant> control
413 (see <xref linkend="detect-controls" />) to assign a different region
414 to each cell in the motion detection grid, then that all cells
415 are automatically assigned to the default region 0.
416 </entry>
417 </row>
418 </tbody>
419 </tgroup>
420 </table>
421
422 <table pgwide="1" frame="none" id="ctrl-changes-flags">
423 <title>Control Changes</title>
424 <tgroup cols="3">
425 &cs-def;
426 <tbody valign="top">
427 <row>
428 <entry><constant>V4L2_EVENT_CTRL_CH_VALUE</constant></entry>
429 <entry>0x0001</entry>
430 <entry>This control event was triggered because the value of the control
431 changed. Special cases: Volatile controls do no generate this event;
432 If a control has the <constant>V4L2_CTRL_FLAG_EXECUTE_ON_WRITE</constant>
433 flag set, then this event is sent as well, regardless its value.</entry>
434 </row>
435 <row>
436 <entry><constant>V4L2_EVENT_CTRL_CH_FLAGS</constant></entry>
437 <entry>0x0002</entry>
438 <entry>This control event was triggered because the control flags
439 changed.</entry>
440 </row>
441 <row>
442 <entry><constant>V4L2_EVENT_CTRL_CH_RANGE</constant></entry>
443 <entry>0x0004</entry>
444 <entry>This control event was triggered because the minimum,
445 maximum, step or the default value of the control changed.</entry>
446 </row>
447 </tbody>
448 </tgroup>
449 </table>
450
451 <table pgwide="1" frame="none" id="src-changes-flags">
452 <title>Source Changes</title>
453 <tgroup cols="3">
454 &cs-def;
455 <tbody valign="top">
456 <row>
457 <entry><constant>V4L2_EVENT_SRC_CH_RESOLUTION</constant></entry>
458 <entry>0x0001</entry>
459 <entry>This event gets triggered when a resolution change is
460 detected at an input. This can come from an input connector or
461 from a video decoder.
462 </entry>
463 </row>
464 </tbody>
465 </tgroup>
466 </table>
467 </refsect1>
468 <refsect1>
469 &return-value;
470 </refsect1>
471</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
deleted file mode 100644
index ca9ffce9b4c1..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
+++ /dev/null
@@ -1,210 +0,0 @@
1<refentry id="vidioc-dv-timings-cap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DV_TIMINGS_CAP</refname>
9 <refname>VIDIOC_SUBDEV_DV_TIMINGS_CAP</refname>
10 <refpurpose>The capabilities of the Digital 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_dv_timings_cap *<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_DV_TIMINGS_CAP, VIDIOC_SUBDEV_DV_TIMINGS_CAP</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>To query the capabilities of the DV receiver/transmitter applications initialize the
53<structfield>pad</structfield> field to 0, zero the reserved array of &v4l2-dv-timings-cap;
54and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl on a video node
55and the driver will fill in the structure. Note that drivers may return
56different values after switching the video input or output.</para>
57
58 <para>When implemented by the driver DV capabilities of subdevices can be
59queried by calling the <constant>VIDIOC_SUBDEV_DV_TIMINGS_CAP</constant> ioctl
60directly on a subdevice node. The capabilities are specific to inputs (for DV
61receivers) or outputs (for DV transmitters), applications must specify the
62desired pad number in the &v4l2-dv-timings-cap; <structfield>pad</structfield>
63field and zero the <structfield>reserved</structfield> array. Attempts to query
64capabilities on a pad that doesn't support them will return an &EINVAL;.</para>
65
66 <table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
67 <title>struct <structname>v4l2_bt_timings_cap</structname></title>
68 <tgroup cols="3">
69 &cs-str;
70 <tbody valign="top">
71 <row>
72 <entry>__u32</entry>
73 <entry><structfield>min_width</structfield></entry>
74 <entry>Minimum width of the active video in pixels.</entry>
75 </row>
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>max_width</structfield></entry>
79 <entry>Maximum width of the active video in pixels.</entry>
80 </row>
81 <row>
82 <entry>__u32</entry>
83 <entry><structfield>min_height</structfield></entry>
84 <entry>Minimum height of the active video in lines.</entry>
85 </row>
86 <row>
87 <entry>__u32</entry>
88 <entry><structfield>max_height</structfield></entry>
89 <entry>Maximum height of the active video in lines.</entry>
90 </row>
91 <row>
92 <entry>__u64</entry>
93 <entry><structfield>min_pixelclock</structfield></entry>
94 <entry>Minimum pixelclock frequency in Hz.</entry>
95 </row>
96 <row>
97 <entry>__u64</entry>
98 <entry><structfield>max_pixelclock</structfield></entry>
99 <entry>Maximum pixelclock frequency in Hz.</entry>
100 </row>
101 <row>
102 <entry>__u32</entry>
103 <entry><structfield>standards</structfield></entry>
104 <entry>The video standard(s) supported by the hardware.
105 See <xref linkend="dv-bt-standards"/> for a list of standards.</entry>
106 </row>
107 <row>
108 <entry>__u32</entry>
109 <entry><structfield>capabilities</structfield></entry>
110 <entry>Several flags giving more information about the capabilities.
111 See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags.
112 </entry>
113 </row>
114 <row>
115 <entry>__u32</entry>
116 <entry><structfield>reserved</structfield>[16]</entry>
117 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
118 </row>
119 </tbody>
120 </tgroup>
121 </table>
122
123 <table pgwide="1" frame="none" id="v4l2-dv-timings-cap">
124 <title>struct <structname>v4l2_dv_timings_cap</structname></title>
125 <tgroup cols="4">
126 &cs-str;
127 <tbody valign="top">
128 <row>
129 <entry>__u32</entry>
130 <entry><structfield>type</structfield></entry>
131 <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
132 </row>
133 <row>
134 <entry>__u32</entry>
135 <entry><structfield>pad</structfield></entry>
136 <entry>Pad number as reported by the media controller API. This field
137 is only used when operating on a subdevice node. When operating on a
138 video node applications must set this field to zero.</entry>
139 </row>
140 <row>
141 <entry>__u32</entry>
142 <entry><structfield>reserved</structfield>[2]</entry>
143 <entry>Reserved for future extensions. Drivers and applications must
144 set the array to zero.</entry>
145 </row>
146 <row>
147 <entry>union</entry>
148 <entry><structfield></structfield></entry>
149 <entry></entry>
150 </row>
151 <row>
152 <entry></entry>
153 <entry>&v4l2-bt-timings-cap;</entry>
154 <entry><structfield>bt</structfield></entry>
155 <entry>BT.656/1120 timings capabilities of the hardware.</entry>
156 </row>
157 <row>
158 <entry></entry>
159 <entry>__u32</entry>
160 <entry><structfield>raw_data</structfield>[32]</entry>
161 <entry></entry>
162 </row>
163 </tbody>
164 </tgroup>
165 </table>
166
167 <table pgwide="1" frame="none" id="dv-bt-cap-capabilities">
168 <title>DV BT Timing capabilities</title>
169 <tgroup cols="2">
170 &cs-str;
171 <tbody valign="top">
172 <row>
173 <entry>Flag</entry>
174 <entry>Description</entry>
175 </row>
176 <row>
177 <entry></entry>
178 <entry></entry>
179 </row>
180 <row>
181 <entry>V4L2_DV_BT_CAP_INTERLACED</entry>
182 <entry>Interlaced formats are supported.
183 </entry>
184 </row>
185 <row>
186 <entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry>
187 <entry>Progressive formats are supported.
188 </entry>
189 </row>
190 <row>
191 <entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry>
192 <entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT)
193or the 'Secondary GTF' curve (GTF).
194 </entry>
195 </row>
196 <row>
197 <entry>V4L2_DV_BT_CAP_CUSTOM</entry>
198 <entry>Can support non-standard timings, i.e. timings not belonging to the
199standards set in the <structfield>standards</structfield> field.
200 </entry>
201 </row>
202 </tbody>
203 </tgroup>
204 </table>
205 </refsect1>
206
207 <refsect1>
208 &return-value;
209 </refsect1>
210</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml b/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
deleted file mode 100644
index 70a4a08e9404..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-encoder-cmd.xml
+++ /dev/null
@@ -1,197 +0,0 @@
1<refentry id="vidioc-encoder-cmd">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENCODER_CMD, VIDIOC_TRY_ENCODER_CMD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENCODER_CMD</refname>
9 <refname>VIDIOC_TRY_ENCODER_CMD</refname>
10 <refpurpose>Execute an encoder 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_encoder_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_ENCODER_CMD, VIDIOC_TRY_ENCODER_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-) encoder.
53<constant>VIDIOC_ENCODER_CMD</constant> sends a command to the
54encoder, <constant>VIDIOC_TRY_ENCODER_CMD</constant> can be used to
55try a command without actually executing it.</para>
56
57 <para>To send a command applications must initialize all fields of a
58 &v4l2-encoder-cmd; and call
59 <constant>VIDIOC_ENCODER_CMD</constant> or
60 <constant>VIDIOC_TRY_ENCODER_CMD</constant> with a pointer to this
61 structure.</para>
62
63 <para>The <structfield>cmd</structfield> field must contain the
64command code. The <structfield>flags</structfield> field is currently
65only used by the STOP command and contains one bit: If the
66<constant>V4L2_ENC_CMD_STOP_AT_GOP_END</constant> flag is set,
67encoding will continue until the end of the current <wordasword>Group
68Of Pictures</wordasword>, otherwise it will stop immediately.</para>
69
70 <para>A <function>read</function>() or &VIDIOC-STREAMON; call sends an implicit
71START command to the encoder if it has not been started yet. After a STOP command,
72<function>read</function>() calls will read the remaining data
73buffered by the driver. When the buffer is empty,
74<function>read</function>() will return zero and the next
75<function>read</function>() call will restart the encoder.</para>
76
77 <para>A <function>close</function>() or &VIDIOC-STREAMOFF; call of a streaming
78file descriptor sends an implicit immediate STOP to the encoder, and all buffered
79data is discarded.</para>
80
81 <para>These ioctls are optional, not all drivers may support
82them. They were introduced in Linux 2.6.21.</para>
83
84 <table pgwide="1" frame="none" id="v4l2-encoder-cmd">
85 <title>struct <structname>v4l2_encoder_cmd</structname></title>
86 <tgroup cols="3">
87 &cs-str;
88 <tbody valign="top">
89 <row>
90 <entry>__u32</entry>
91 <entry><structfield>cmd</structfield></entry>
92 <entry>The encoder command, see <xref linkend="encoder-cmds" />.</entry>
93 </row>
94 <row>
95 <entry>__u32</entry>
96 <entry><structfield>flags</structfield></entry>
97 <entry>Flags to go with the command, see <xref
98 linkend="encoder-flags" />. If no flags are defined for
99this command, drivers and applications must set this field to
100zero.</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>data</structfield>[8]</entry>
105 <entry>Reserved for future extensions. Drivers and
106applications must set the array to zero.</entry>
107 </row>
108 </tbody>
109 </tgroup>
110 </table>
111
112 <table pgwide="1" frame="none" id="encoder-cmds">
113 <title>Encoder Commands</title>
114 <tgroup cols="3">
115 &cs-def;
116 <tbody valign="top">
117 <row>
118 <entry><constant>V4L2_ENC_CMD_START</constant></entry>
119 <entry>0</entry>
120 <entry>Start the encoder. When the encoder is already
121running or paused, this command does nothing. No flags are defined for
122this command.</entry>
123 </row>
124 <row>
125 <entry><constant>V4L2_ENC_CMD_STOP</constant></entry>
126 <entry>1</entry>
127 <entry>Stop the encoder. When the
128<constant>V4L2_ENC_CMD_STOP_AT_GOP_END</constant> flag is set,
129encoding will continue until the end of the current <wordasword>Group
130Of Pictures</wordasword>, otherwise encoding will stop immediately.
131When the encoder is already stopped, this command does
132nothing. mem2mem encoders will send a <constant>V4L2_EVENT_EOS</constant> event
133when the last frame has been encoded and all frames are ready to be dequeued and
134will set the <constant>V4L2_BUF_FLAG_LAST</constant> buffer flag on the last
135buffer of the capture queue to indicate there will be no new buffers produced to
136dequeue. This buffer may be empty, indicated by the driver setting the
137<structfield>bytesused</structfield> field to 0. Once the
138<constant>V4L2_BUF_FLAG_LAST</constant> flag was set, the
139<link linkend="vidioc-qbuf">VIDIOC_DQBUF</link> ioctl will not block anymore,
140but return an &EPIPE;.</entry>
141 </row>
142 <row>
143 <entry><constant>V4L2_ENC_CMD_PAUSE</constant></entry>
144 <entry>2</entry>
145 <entry>Pause the encoder. When the encoder has not been
146started yet, the driver will return an &EPERM;. When the encoder is
147already paused, this command does nothing. No flags are defined for
148this command.</entry>
149 </row>
150 <row>
151 <entry><constant>V4L2_ENC_CMD_RESUME</constant></entry>
152 <entry>3</entry>
153 <entry>Resume encoding after a PAUSE command. When the
154encoder has not been started yet, the driver will return an &EPERM;.
155When the encoder is already running, this command does nothing. No
156flags are defined for this command.</entry>
157 </row>
158 </tbody>
159 </tgroup>
160 </table>
161
162 <table pgwide="1" frame="none" id="encoder-flags">
163 <title>Encoder Command Flags</title>
164 <tgroup cols="3">
165 &cs-def;
166 <tbody valign="top">
167 <row>
168 <entry><constant>V4L2_ENC_CMD_STOP_AT_GOP_END</constant></entry>
169 <entry>0x0001</entry>
170 <entry>Stop encoding at the end of the current <wordasword>Group Of
171Pictures</wordasword>, rather than immediately.</entry>
172 </row>
173 </tbody>
174 </tgroup>
175 </table>
176 </refsect1>
177
178 <refsect1>
179 &return-value;
180
181 <variablelist>
182 <varlistentry>
183 <term><errorcode>EINVAL</errorcode></term>
184 <listitem>
185 <para>The <structfield>cmd</structfield> field is invalid.</para>
186 </listitem>
187 </varlistentry>
188 <varlistentry>
189 <term><errorcode>EPERM</errorcode></term>
190 <listitem>
191 <para>The application sent a PAUSE or RESUME command when
192the encoder was not running.</para>
193 </listitem>
194 </varlistentry>
195 </variablelist>
196 </refsect1>
197</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
deleted file mode 100644
index 9b3d42018b69..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
+++ /dev/null
@@ -1,128 +0,0 @@
1<refentry id="vidioc-enum-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUM_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_DV_TIMINGS</refname>
9 <refname>VIDIOC_SUBDEV_ENUM_DV_TIMINGS</refname>
10 <refpurpose>Enumerate supported Digital Video timings</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_enum_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_ENUM_DV_TIMINGS, VIDIOC_SUBDEV_ENUM_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 <para>While some DV receivers or transmitters support a wide range of timings, others
53support only a limited number of timings. With this ioctl applications can enumerate a list
54of known supported timings. Call &VIDIOC-DV-TIMINGS-CAP; to check if it also supports other
55standards or even custom timings that are not in this list.</para>
56
57 <para>To query the available timings, applications initialize the
58<structfield>index</structfield> field, set the <structfield>pad</structfield> field to 0,
59zero the reserved array of &v4l2-enum-dv-timings; and call the
60<constant>VIDIOC_ENUM_DV_TIMINGS</constant> ioctl on a video node with a
61pointer to this structure. Drivers fill the rest of the structure or return an
62&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
63applications shall begin at index zero, incrementing by one until the
64driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
65different set of DV timings after switching the video input or
66output.</para>
67
68 <para>When implemented by the driver DV timings of subdevices can be queried
69by calling the <constant>VIDIOC_SUBDEV_ENUM_DV_TIMINGS</constant> ioctl directly
70on a subdevice node. The DV timings are specific to inputs (for DV receivers) or
71outputs (for DV transmitters), applications must specify the desired pad number
72in the &v4l2-enum-dv-timings; <structfield>pad</structfield> field. Attempts to
73enumerate timings on a pad that doesn't support them will return an &EINVAL;.</para>
74
75 <table pgwide="1" frame="none" id="v4l2-enum-dv-timings">
76 <title>struct <structname>v4l2_enum_dv_timings</structname></title>
77 <tgroup cols="3">
78 &cs-str;
79 <tbody valign="top">
80 <row>
81 <entry>__u32</entry>
82 <entry><structfield>index</structfield></entry>
83 <entry>Number of the DV timings, set by the
84application.</entry>
85 </row>
86 <row>
87 <entry>__u32</entry>
88 <entry><structfield>pad</structfield></entry>
89 <entry>Pad number as reported by the media controller API. This field
90 is only used when operating on a subdevice node. When operating on a
91 video node applications must set this field to zero.</entry>
92 </row>
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>reserved</structfield>[2]</entry>
96 <entry>Reserved for future extensions. Drivers and applications must
97 set the array to zero.</entry>
98 </row>
99 <row>
100 <entry>&v4l2-dv-timings;</entry>
101 <entry><structfield>timings</structfield></entry>
102 <entry>The timings.</entry>
103 </row>
104 </tbody>
105 </tgroup>
106 </table>
107 </refsect1>
108
109 <refsect1>
110 &return-value;
111
112 <variablelist>
113 <varlistentry>
114 <term><errorcode>EINVAL</errorcode></term>
115 <listitem>
116 <para>The &v4l2-enum-dv-timings; <structfield>index</structfield>
117is out of bounds or the <structfield>pad</structfield> number is invalid.</para>
118 </listitem>
119 </varlistentry>
120 <varlistentry>
121 <term><errorcode>ENODATA</errorcode></term>
122 <listitem>
123 <para>Digital video presets are not supported for this input or output.</para>
124 </listitem>
125 </varlistentry>
126 </variablelist>
127 </refsect1>
128</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
deleted file mode 100644
index f8dfeed34fca..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
+++ /dev/null
@@ -1,159 +0,0 @@
1<refentry id="vidioc-enum-fmt">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_FMT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_FMT</refname>
9 <refpurpose>Enumerate image formats</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_fmtdesc
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_FMT</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>To enumerate image formats applications initialize the
53<structfield>type</structfield> and <structfield>index</structfield>
54field of &v4l2-fmtdesc; and call the
55<constant>VIDIOC_ENUM_FMT</constant> ioctl with a pointer to this
56structure. Drivers fill the rest of the structure or return an
57&EINVAL;. All formats are enumerable by beginning at index zero and
58incrementing by one until <errorcode>EINVAL</errorcode> is
59returned.</para>
60
61 <para>Note that after switching input or output the list of enumerated image
62formats may be different.</para>
63
64 <table pgwide="1" frame="none" id="v4l2-fmtdesc">
65 <title>struct <structname>v4l2_fmtdesc</structname></title>
66 <tgroup cols="3">
67 &cs-str;
68 <tbody valign="top">
69 <row>
70 <entry>__u32</entry>
71 <entry><structfield>index</structfield></entry>
72 <entry>Number of the format in the enumeration, set by
73the application. This is in no way related to the <structfield>
74pixelformat</structfield> field.</entry>
75 </row>
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>type</structfield></entry>
79 <entry>Type of the data stream, set by the application.
80Only these types are valid here:
81<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
82<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>,
83<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
84<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant> and
85<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>flags</structfield></entry>
90 <entry>See <xref linkend="fmtdesc-flags" /></entry>
91 </row>
92 <row>
93 <entry>__u8</entry>
94 <entry><structfield>description</structfield>[32]</entry>
95 <entry>Description of the format, a NUL-terminated ASCII
96string. This information is intended for the user, for example: "YUV
974:2:2".</entry>
98 </row>
99 <row>
100 <entry>__u32</entry>
101 <entry><structfield>pixelformat</structfield></entry>
102 <entry>The image format identifier. This is a
103four character code as computed by the v4l2_fourcc()
104macro:</entry>
105 </row>
106 <row>
107 <entry spanname="hspan"><para><programlisting id="v4l2-fourcc">
108#define v4l2_fourcc(a,b,c,d) (((__u32)(a)&lt;&lt;0)|((__u32)(b)&lt;&lt;8)|((__u32)(c)&lt;&lt;16)|((__u32)(d)&lt;&lt;24))
109</programlisting></para><para>Several image formats are already
110defined by this specification in <xref linkend="pixfmt" />. Note these
111codes are not the same as those used in the Windows world.</para></entry>
112 </row>
113 <row>
114 <entry>__u32</entry>
115 <entry><structfield>reserved</structfield>[4]</entry>
116 <entry>Reserved for future extensions. Drivers must set
117the array to zero.</entry>
118 </row>
119 </tbody>
120 </tgroup>
121 </table>
122
123 <table pgwide="1" frame="none" id="fmtdesc-flags">
124 <title>Image Format Description Flags</title>
125 <tgroup cols="3">
126 &cs-def;
127 <tbody valign="top">
128 <row>
129 <entry><constant>V4L2_FMT_FLAG_COMPRESSED</constant></entry>
130 <entry>0x0001</entry>
131 <entry>This is a compressed format.</entry>
132 </row>
133 <row>
134 <entry><constant>V4L2_FMT_FLAG_EMULATED</constant></entry>
135 <entry>0x0002</entry>
136 <entry>This format is not native to the device but emulated
137through software (usually libv4l2), where possible try to use a native format
138instead for better performance.</entry>
139 </row>
140 </tbody>
141 </tgroup>
142 </table>
143 </refsect1>
144
145 <refsect1>
146 &return-value;
147
148 <variablelist>
149 <varlistentry>
150 <term><errorcode>EINVAL</errorcode></term>
151 <listitem>
152 <para>The &v4l2-fmtdesc; <structfield>type</structfield>
153is not supported or the <structfield>index</structfield> is out of
154bounds.</para>
155 </listitem>
156 </varlistentry>
157 </variablelist>
158 </refsect1>
159</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml b/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml
deleted file mode 100644
index 7c839ab0afbb..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enum-frameintervals.xml
+++ /dev/null
@@ -1,260 +0,0 @@
1<refentry id="vidioc-enum-frameintervals">
2
3 <refmeta>
4 <refentrytitle>ioctl VIDIOC_ENUM_FRAMEINTERVALS</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_ENUM_FRAMEINTERVALS</refname>
10 <refpurpose>Enumerate frame intervals</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_frmivalenum *<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_FRAMEINTERVALS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para>Pointer to a &v4l2-frmivalenum; structure that
44contains a pixel format and size and receives a frame interval.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>This ioctl allows applications to enumerate all frame
54intervals that the device supports for the given pixel format and
55frame size.</para>
56 <para>The supported pixel formats and frame sizes can be obtained
57by using the &VIDIOC-ENUM-FMT; and &VIDIOC-ENUM-FRAMESIZES;
58functions.</para>
59 <para>The return value and the content of the
60<structfield>v4l2_frmivalenum.type</structfield> field depend on the
61type of frame intervals the device supports. Here are the semantics of
62the function for the different cases:</para>
63 <itemizedlist>
64 <listitem>
65 <para><emphasis role="bold">Discrete:</emphasis> The function
66returns success if the given index value (zero-based) is valid. The
67application should increase the index by one for each call until
68<constant>EINVAL</constant> is returned. The `v4l2_frmivalenum.type`
69field is set to `V4L2_FRMIVAL_TYPE_DISCRETE` by the driver. Of the
70union only the `discrete` member is valid.</para>
71 </listitem>
72 <listitem>
73 <para><emphasis role="bold">Step-wise:</emphasis> The function
74returns success if the given index value is zero and
75<constant>EINVAL</constant> for any other index value. The
76<structfield>v4l2_frmivalenum.type</structfield> field is set to
77<constant>V4L2_FRMIVAL_TYPE_STEPWISE</constant> by the driver. Of the
78union only the <structfield>stepwise</structfield> member is
79valid.</para>
80 </listitem>
81 <listitem>
82 <para><emphasis role="bold">Continuous:</emphasis> This is a
83special case of the step-wise type above. The function returns success
84if the given index value is zero and <constant>EINVAL</constant> for
85any other index value. The
86<structfield>v4l2_frmivalenum.type</structfield> field is set to
87<constant>V4L2_FRMIVAL_TYPE_CONTINUOUS</constant> by the driver. Of
88the union only the <structfield>stepwise</structfield> member is valid
89and the <structfield>step</structfield> value is set to 1.</para>
90 </listitem>
91 </itemizedlist>
92
93 <para>When the application calls the function with index zero, it
94must check the <structfield>type</structfield> field to determine the
95type of frame interval enumeration the device supports. Only for the
96<constant>V4L2_FRMIVAL_TYPE_DISCRETE</constant> type does it make
97sense to increase the index value to receive more frame
98intervals.</para>
99 <para>Note that the order in which the frame intervals are
100returned has no special meaning. In particular does it not say
101anything about potential default frame intervals.</para>
102 <para>Applications can assume that the enumeration data does not
103change without any interaction from the application itself. This means
104that the enumeration data is consistent if the application does not
105perform any other ioctl calls while it runs the frame interval
106enumeration.</para>
107 </refsect1>
108
109 <refsect1>
110 <title>Notes</title>
111
112 <itemizedlist>
113 <listitem>
114 <para><emphasis role="bold">Frame intervals and frame
115rates:</emphasis> The V4L2 API uses frame intervals instead of frame
116rates. Given the frame interval the frame rate can be computed as
117follows:<screen>frame_rate = 1 / frame_interval</screen></para>
118 </listitem>
119 </itemizedlist>
120
121 </refsect1>
122
123 <refsect1>
124 <title>Structs</title>
125
126 <para>In the structs below, <emphasis>IN</emphasis> denotes a
127value that has to be filled in by the application,
128<emphasis>OUT</emphasis> denotes values that the driver fills in. The
129application should zero out all members except for the
130<emphasis>IN</emphasis> fields.</para>
131
132 <table pgwide="1" frame="none" id="v4l2-frmival-stepwise">
133 <title>struct <structname>v4l2_frmival_stepwise</structname></title>
134 <tgroup cols="3">
135 &cs-str;
136 <tbody valign="top">
137 <row>
138 <entry>&v4l2-fract;</entry>
139 <entry><structfield>min</structfield></entry>
140 <entry>Minimum frame interval [s].</entry>
141 </row>
142 <row>
143 <entry>&v4l2-fract;</entry>
144 <entry><structfield>max</structfield></entry>
145 <entry>Maximum frame interval [s].</entry>
146 </row>
147 <row>
148 <entry>&v4l2-fract;</entry>
149 <entry><structfield>step</structfield></entry>
150 <entry>Frame interval step size [s].</entry>
151 </row>
152 </tbody>
153 </tgroup>
154 </table>
155
156 <table pgwide="1" frame="none" id="v4l2-frmivalenum">
157 <title>struct <structname>v4l2_frmivalenum</structname></title>
158 <tgroup cols="4">
159 <colspec colname="c1" />
160 <colspec colname="c2" />
161 <colspec colname="c3" />
162 <colspec colname="c4" />
163 <tbody valign="top">
164 <row>
165 <entry>__u32</entry>
166 <entry><structfield>index</structfield></entry>
167 <entry></entry>
168 <entry>IN: Index of the given frame interval in the
169enumeration.</entry>
170 </row>
171 <row>
172 <entry>__u32</entry>
173 <entry><structfield>pixel_format</structfield></entry>
174 <entry></entry>
175 <entry>IN: Pixel format for which the frame intervals are
176enumerated.</entry>
177 </row>
178 <row>
179 <entry>__u32</entry>
180 <entry><structfield>width</structfield></entry>
181 <entry></entry>
182 <entry>IN: Frame width for which the frame intervals are
183enumerated.</entry>
184 </row>
185 <row>
186 <entry>__u32</entry>
187 <entry><structfield>height</structfield></entry>
188 <entry></entry>
189 <entry>IN: Frame height for which the frame intervals are
190enumerated.</entry>
191 </row>
192 <row>
193 <entry>__u32</entry>
194 <entry><structfield>type</structfield></entry>
195 <entry></entry>
196 <entry>OUT: Frame interval type the device supports.</entry>
197 </row>
198 <row>
199 <entry>union</entry>
200 <entry></entry>
201 <entry></entry>
202 <entry>OUT: Frame interval with the given index.</entry>
203 </row>
204 <row>
205 <entry></entry>
206 <entry>&v4l2-fract;</entry>
207 <entry><structfield>discrete</structfield></entry>
208 <entry>Frame interval [s].</entry>
209 </row>
210 <row>
211 <entry></entry>
212 <entry>&v4l2-frmival-stepwise;</entry>
213 <entry><structfield>stepwise</structfield></entry>
214 <entry></entry>
215 </row>
216 <row>
217 <entry>__u32</entry>
218 <entry><structfield>reserved[2]</structfield></entry>
219 <entry></entry>
220 <entry>Reserved space for future use. Must be zeroed by drivers and
221 applications.</entry>
222 </row>
223 </tbody>
224 </tgroup>
225 </table>
226 </refsect1>
227
228 <refsect1>
229 <title>Enums</title>
230
231 <table pgwide="1" frame="none" id="v4l2-frmivaltypes">
232 <title>enum <structname>v4l2_frmivaltypes</structname></title>
233 <tgroup cols="3">
234 &cs-def;
235 <tbody valign="top">
236 <row>
237 <entry><constant>V4L2_FRMIVAL_TYPE_DISCRETE</constant></entry>
238 <entry>1</entry>
239 <entry>Discrete frame interval.</entry>
240 </row>
241 <row>
242 <entry><constant>V4L2_FRMIVAL_TYPE_CONTINUOUS</constant></entry>
243 <entry>2</entry>
244 <entry>Continuous frame interval.</entry>
245 </row>
246 <row>
247 <entry><constant>V4L2_FRMIVAL_TYPE_STEPWISE</constant></entry>
248 <entry>3</entry>
249 <entry>Step-wise defined frame interval.</entry>
250 </row>
251 </tbody>
252 </tgroup>
253 </table>
254 </refsect1>
255
256 <refsect1>
257 &return-value;
258 </refsect1>
259
260</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml b/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml
deleted file mode 100644
index 9ed68ac8f474..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enum-framesizes.xml
+++ /dev/null
@@ -1,265 +0,0 @@
1<refentry id="vidioc-enum-framesizes">
2
3 <refmeta>
4 <refentrytitle>ioctl VIDIOC_ENUM_FRAMESIZES</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_ENUM_FRAMESIZES</refname>
10 <refpurpose>Enumerate frame sizes</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_frmsizeenum *<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_FRAMESIZES</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para>Pointer to a &v4l2-frmsizeenum; that contains an index
44and pixel format and receives a frame width and height.</para>
45 </listitem>
46 </varlistentry>
47 </variablelist>
48 </refsect1>
49
50 <refsect1>
51 <title>Description</title>
52
53 <para>This ioctl allows applications to enumerate all frame sizes
54(&ie; width and height in pixels) that the device supports for the
55given pixel format.</para>
56 <para>The supported pixel formats can be obtained by using the
57&VIDIOC-ENUM-FMT; function.</para>
58 <para>The return value and the content of the
59<structfield>v4l2_frmsizeenum.type</structfield> field depend on the
60type of frame sizes the device supports. Here are the semantics of the
61function for the different cases:</para>
62
63 <itemizedlist>
64 <listitem>
65 <para><emphasis role="bold">Discrete:</emphasis> The function
66returns success if the given index value (zero-based) is valid. The
67application should increase the index by one for each call until
68<constant>EINVAL</constant> is returned. The
69<structfield>v4l2_frmsizeenum.type</structfield> field is set to
70<constant>V4L2_FRMSIZE_TYPE_DISCRETE</constant> by the driver. Of the
71union only the <structfield>discrete</structfield> member is
72valid.</para>
73 </listitem>
74 <listitem>
75 <para><emphasis role="bold">Step-wise:</emphasis> The function
76returns success if the given index value is zero and
77<constant>EINVAL</constant> for any other index value. The
78<structfield>v4l2_frmsizeenum.type</structfield> field is set to
79<constant>V4L2_FRMSIZE_TYPE_STEPWISE</constant> by the driver. Of the
80union only the <structfield>stepwise</structfield> member is
81valid.</para>
82 </listitem>
83 <listitem>
84 <para><emphasis role="bold">Continuous:</emphasis> This is a
85special case of the step-wise type above. The function returns success
86if the given index value is zero and <constant>EINVAL</constant> for
87any other index value. The
88<structfield>v4l2_frmsizeenum.type</structfield> field is set to
89<constant>V4L2_FRMSIZE_TYPE_CONTINUOUS</constant> by the driver. Of
90the union only the <structfield>stepwise</structfield> member is valid
91and the <structfield>step_width</structfield> and
92<structfield>step_height</structfield> values are set to 1.</para>
93 </listitem>
94 </itemizedlist>
95
96 <para>When the application calls the function with index zero, it
97must check the <structfield>type</structfield> field to determine the
98type of frame size enumeration the device supports. Only for the
99<constant>V4L2_FRMSIZE_TYPE_DISCRETE</constant> type does it make
100sense to increase the index value to receive more frame sizes.</para>
101 <para>Note that the order in which the frame sizes are returned
102has no special meaning. In particular does it not say anything about
103potential default format sizes.</para>
104 <para>Applications can assume that the enumeration data does not
105change without any interaction from the application itself. This means
106that the enumeration data is consistent if the application does not
107perform any other ioctl calls while it runs the frame size
108enumeration.</para>
109 </refsect1>
110
111 <refsect1>
112 <title>Structs</title>
113
114 <para>In the structs below, <emphasis>IN</emphasis> denotes a
115value that has to be filled in by the application,
116<emphasis>OUT</emphasis> denotes values that the driver fills in. The
117application should zero out all members except for the
118<emphasis>IN</emphasis> fields.</para>
119
120 <table pgwide="1" frame="none" id="v4l2-frmsize-discrete">
121 <title>struct <structname>v4l2_frmsize_discrete</structname></title>
122 <tgroup cols="3">
123 &cs-str;
124 <tbody valign="top">
125 <row>
126 <entry>__u32</entry>
127 <entry><structfield>width</structfield></entry>
128 <entry>Width of the frame [pixel].</entry>
129 </row>
130 <row>
131 <entry>__u32</entry>
132 <entry><structfield>height</structfield></entry>
133 <entry>Height of the frame [pixel].</entry>
134 </row>
135 </tbody>
136 </tgroup>
137 </table>
138
139 <table pgwide="1" frame="none" id="v4l2-frmsize-stepwise">
140 <title>struct <structname>v4l2_frmsize_stepwise</structname></title>
141 <tgroup cols="3">
142 &cs-str;
143 <tbody valign="top">
144 <row>
145 <entry>__u32</entry>
146 <entry><structfield>min_width</structfield></entry>
147 <entry>Minimum frame width [pixel].</entry>
148 </row>
149 <row>
150 <entry>__u32</entry>
151 <entry><structfield>max_width</structfield></entry>
152 <entry>Maximum frame width [pixel].</entry>
153 </row>
154 <row>
155 <entry>__u32</entry>
156 <entry><structfield>step_width</structfield></entry>
157 <entry>Frame width step size [pixel].</entry>
158 </row>
159 <row>
160 <entry>__u32</entry>
161 <entry><structfield>min_height</structfield></entry>
162 <entry>Minimum frame height [pixel].</entry>
163 </row>
164 <row>
165 <entry>__u32</entry>
166 <entry><structfield>max_height</structfield></entry>
167 <entry>Maximum frame height [pixel].</entry>
168 </row>
169 <row>
170 <entry>__u32</entry>
171 <entry><structfield>step_height</structfield></entry>
172 <entry>Frame height step size [pixel].</entry>
173 </row>
174 </tbody>
175 </tgroup>
176 </table>
177
178 <table pgwide="1" frame="none" id="v4l2-frmsizeenum">
179 <title>struct <structname>v4l2_frmsizeenum</structname></title>
180 <tgroup cols="4">
181 <colspec colname="c1" />
182 <colspec colname="c2" />
183 <colspec colname="c3" />
184 <colspec colname="c4" />
185 <tbody valign="top">
186 <row>
187 <entry>__u32</entry>
188 <entry><structfield>index</structfield></entry>
189 <entry></entry>
190 <entry>IN: Index of the given frame size in the enumeration.</entry>
191 </row>
192 <row>
193 <entry>__u32</entry>
194 <entry><structfield>pixel_format</structfield></entry>
195 <entry></entry>
196 <entry>IN: Pixel format for which the frame sizes are enumerated.</entry>
197 </row>
198 <row>
199 <entry>__u32</entry>
200 <entry><structfield>type</structfield></entry>
201 <entry></entry>
202 <entry>OUT: Frame size type the device supports.</entry>
203 </row>
204 <row>
205 <entry>union</entry>
206 <entry></entry>
207 <entry></entry>
208 <entry>OUT: Frame size with the given index.</entry>
209 </row>
210 <row>
211 <entry></entry>
212 <entry>&v4l2-frmsize-discrete;</entry>
213 <entry><structfield>discrete</structfield></entry>
214 <entry></entry>
215 </row>
216 <row>
217 <entry></entry>
218 <entry>&v4l2-frmsize-stepwise;</entry>
219 <entry><structfield>stepwise</structfield></entry>
220 <entry></entry>
221 </row>
222 <row>
223 <entry>__u32</entry>
224 <entry><structfield>reserved[2]</structfield></entry>
225 <entry></entry>
226 <entry>Reserved space for future use. Must be zeroed by drivers and
227 applications.</entry>
228 </row>
229 </tbody>
230 </tgroup>
231 </table>
232 </refsect1>
233
234 <refsect1>
235 <title>Enums</title>
236
237 <table pgwide="1" frame="none" id="v4l2-frmsizetypes">
238 <title>enum <structname>v4l2_frmsizetypes</structname></title>
239 <tgroup cols="3">
240 &cs-def;
241 <tbody valign="top">
242 <row>
243 <entry><constant>V4L2_FRMSIZE_TYPE_DISCRETE</constant></entry>
244 <entry>1</entry>
245 <entry>Discrete frame size.</entry>
246 </row>
247 <row>
248 <entry><constant>V4L2_FRMSIZE_TYPE_CONTINUOUS</constant></entry>
249 <entry>2</entry>
250 <entry>Continuous frame size.</entry>
251 </row>
252 <row>
253 <entry><constant>V4L2_FRMSIZE_TYPE_STEPWISE</constant></entry>
254 <entry>3</entry>
255 <entry>Step-wise defined frame size.</entry>
256 </row>
257 </tbody>
258 </tgroup>
259 </table>
260 </refsect1>
261
262 <refsect1>
263 &return-value;
264 </refsect1>
265</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml b/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
deleted file mode 100644
index a0608abc1ab8..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enum-freq-bands.xml
+++ /dev/null
@@ -1,175 +0,0 @@
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 <para>Enumerates the frequency bands that a tuner or modulator supports.
53To do this applications initialize the <structfield>tuner</structfield>,
54<structfield>type</structfield> and <structfield>index</structfield> fields,
55and zero out the <structfield>reserved</structfield> array of a &v4l2-frequency-band; and
56call the <constant>VIDIOC_ENUM_FREQ_BANDS</constant> ioctl with a pointer
57to this structure.</para>
58
59 <para>This ioctl is supported if the <constant>V4L2_TUNER_CAP_FREQ_BANDS</constant> capability
60 of the corresponding tuner/modulator is set.</para>
61
62 <table pgwide="1" frame="none" id="v4l2-frequency-band">
63 <title>struct <structname>v4l2_frequency_band</structname></title>
64 <tgroup cols="3">
65 &cs-str;
66 <tbody valign="top">
67 <row>
68 <entry>__u32</entry>
69 <entry><structfield>tuner</structfield></entry>
70 <entry>The tuner or modulator index number. This is the
71same value as in the &v4l2-input; <structfield>tuner</structfield>
72field and the &v4l2-tuner; <structfield>index</structfield> field, or
73the &v4l2-output; <structfield>modulator</structfield> field and the
74&v4l2-modulator; <structfield>index</structfield> field.</entry>
75 </row>
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>type</structfield></entry>
79 <entry>The tuner type. This is the same value as in the
80&v4l2-tuner; <structfield>type</structfield> field. The type must be set
81to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
82device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
83for all others. Set this field to <constant>V4L2_TUNER_RADIO</constant> for
84modulators (currently only radio modulators are supported).
85See <xref linkend="v4l2-tuner-type" /></entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>index</structfield></entry>
90 <entry>Identifies the frequency band, set by the application.</entry>
91 </row>
92 <row>
93 <entry>__u32</entry>
94 <entry><structfield>capability</structfield></entry>
95 <entry spanname="hspan">The tuner/modulator capability flags for
96this frequency band, see <xref linkend="tuner-capability" />. The <constant>V4L2_TUNER_CAP_LOW</constant>
97or <constant>V4L2_TUNER_CAP_1HZ</constant> capability must be the same for all frequency bands of the selected tuner/modulator.
98So either all bands have that capability set, or none of them have that capability.</entry>
99 </row>
100 <row>
101 <entry>__u32</entry>
102 <entry><structfield>rangelow</structfield></entry>
103 <entry spanname="hspan">The lowest tunable frequency in
104units of 62.5 kHz, or if the <structfield>capability</structfield>
105flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
106Hz, for this frequency band. A 1 Hz unit is used when the <structfield>capability</structfield> flag
107<constant>V4L2_TUNER_CAP_1HZ</constant> is set.</entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>rangehigh</structfield></entry>
112 <entry spanname="hspan">The highest tunable frequency in
113units of 62.5 kHz, or if the <structfield>capability</structfield>
114flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
115Hz, for this frequency band. A 1 Hz unit is used when the <structfield>capability</structfield> flag
116<constant>V4L2_TUNER_CAP_1HZ</constant> is set.</entry>
117 </row>
118 <row>
119 <entry>__u32</entry>
120 <entry><structfield>modulation</structfield></entry>
121 <entry spanname="hspan">The supported modulation systems of this frequency band.
122 See <xref linkend="band-modulation" />. Note that currently only one
123 modulation system per frequency band is supported. More work will need to
124 be done if multiple modulation systems are possible. Contact the
125 linux-media mailing list (&v4l-ml;) if you need that functionality.</entry>
126 </row>
127 <row>
128 <entry>__u32</entry>
129 <entry><structfield>reserved</structfield>[9]</entry>
130 <entry>Reserved for future extensions. Applications and drivers
131 must set the array to zero.</entry>
132 </row>
133 </tbody>
134 </tgroup>
135 </table>
136
137 <table pgwide="1" frame="none" id="band-modulation">
138 <title>Band Modulation Systems</title>
139 <tgroup cols="3">
140 &cs-def;
141 <tbody valign="top">
142 <row>
143 <entry><constant>V4L2_BAND_MODULATION_VSB</constant></entry>
144 <entry>0x02</entry>
145 <entry>Vestigial Sideband modulation, used for analog TV.</entry>
146 </row>
147 <row>
148 <entry><constant>V4L2_BAND_MODULATION_FM</constant></entry>
149 <entry>0x04</entry>
150 <entry>Frequency Modulation, commonly used for analog radio.</entry>
151 </row>
152 <row>
153 <entry><constant>V4L2_BAND_MODULATION_AM</constant></entry>
154 <entry>0x08</entry>
155 <entry>Amplitude Modulation, commonly used for analog radio.</entry>
156 </row>
157 </tbody>
158 </tgroup>
159 </table>
160 </refsect1>
161
162 <refsect1>
163 &return-value;
164
165 <variablelist>
166 <varlistentry>
167 <term><errorcode>EINVAL</errorcode></term>
168 <listitem>
169 <para>The <structfield>tuner</structfield> or <structfield>index</structfield>
170is out of bounds or the <structfield>type</structfield> field is wrong.</para>
171 </listitem>
172 </varlistentry>
173 </variablelist>
174 </refsect1>
175</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml b/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml
deleted file mode 100644
index ea816ab2e49e..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enumaudio.xml
+++ /dev/null
@@ -1,76 +0,0 @@
1<refentry id="vidioc-enumaudio">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUMAUDIO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUMAUDIO</refname>
9 <refpurpose>Enumerate audio inputs</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_audio *<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_ENUMAUDIO</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 <para>To query the attributes of an audio input applications
52initialize the <structfield>index</structfield> field and zero out the
53<structfield>reserved</structfield> array of a &v4l2-audio;
54and call the <constant>VIDIOC_ENUMAUDIO</constant> ioctl with a pointer
55to this structure. Drivers fill the rest of the structure or return an
56&EINVAL; when the index is out of bounds. To enumerate all audio
57inputs applications shall begin at index zero, incrementing by one
58until the driver returns <errorcode>EINVAL</errorcode>.</para>
59
60 <para>See <xref linkend="vidioc-g-audio" /> for a description of
61&v4l2-audio;.</para>
62 </refsect1>
63
64 <refsect1>
65 &return-value;
66
67 <variablelist>
68 <varlistentry>
69 <term><errorcode>EINVAL</errorcode></term>
70 <listitem>
71 <para>The number of the audio input is out of bounds.</para>
72 </listitem>
73 </varlistentry>
74 </variablelist>
75 </refsect1>
76</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml b/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml
deleted file mode 100644
index 2e87cedb0d32..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enumaudioout.xml
+++ /dev/null
@@ -1,79 +0,0 @@
1<refentry id="vidioc-enumaudioout">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUMAUDOUT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUMAUDOUT</refname>
9 <refpurpose>Enumerate audio outputs</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_audioout *<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_ENUMAUDOUT</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 <para>To query the attributes of an audio output applications
52initialize the <structfield>index</structfield> field and zero out the
53<structfield>reserved</structfield> array of a &v4l2-audioout; and
54call the <constant>VIDIOC_G_AUDOUT</constant> ioctl with a pointer
55to this structure. Drivers fill the rest of the structure or return an
56&EINVAL; when the index is out of bounds. To enumerate all audio
57outputs applications shall begin at index zero, incrementing by one
58until the driver returns <errorcode>EINVAL</errorcode>.</para>
59
60 <para>Note connectors on a TV card to loop back the received audio
61signal to a sound card are not audio outputs in this sense.</para>
62
63 <para>See <xref linkend="vidioc-g-audioout" /> for a description of
64&v4l2-audioout;.</para>
65 </refsect1>
66
67 <refsect1>
68 &return-value;
69
70 <variablelist>
71 <varlistentry>
72 <term><errorcode>EINVAL</errorcode></term>
73 <listitem>
74 <para>The number of the audio output is out of bounds.</para>
75 </listitem>
76 </varlistentry>
77 </variablelist>
78 </refsect1>
79</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
deleted file mode 100644
index 603fecef9083..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
+++ /dev/null
@@ -1,316 +0,0 @@
1<refentry id="vidioc-enuminput">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUMINPUT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUMINPUT</refname>
9 <refpurpose>Enumerate video inputs</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_input
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_ENUMINPUT</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>To query the attributes of a video input applications
53initialize the <structfield>index</structfield> field of &v4l2-input;
54and call the <constant>VIDIOC_ENUMINPUT</constant> ioctl with a
55pointer to this structure. Drivers fill the rest of the structure or
56return an &EINVAL; when the index is out of bounds. To enumerate all
57inputs applications shall begin at index zero, incrementing by one
58until the driver returns <errorcode>EINVAL</errorcode>.</para>
59
60 <table frame="none" pgwide="1" id="v4l2-input">
61 <title>struct <structname>v4l2_input</structname></title>
62 <tgroup cols="3">
63 &cs-str;
64 <tbody valign="top">
65 <row>
66 <entry>__u32</entry>
67 <entry><structfield>index</structfield></entry>
68 <entry>Identifies the input, set by the
69application.</entry>
70 </row>
71 <row>
72 <entry>__u8</entry>
73 <entry><structfield>name</structfield>[32]</entry>
74 <entry>Name of the video input, a NUL-terminated ASCII
75string, for example: "Vin (Composite 2)". This information is intended
76for the user, preferably the connector label on the device itself.</entry>
77 </row>
78 <row>
79 <entry>__u32</entry>
80 <entry><structfield>type</structfield></entry>
81 <entry>Type of the input, see <xref
82 linkend="input-type" />.</entry>
83 </row>
84 <row>
85 <entry>__u32</entry>
86 <entry><structfield>audioset</structfield></entry>
87 <entry><para>Drivers can enumerate up to 32 video and
88audio inputs. This field shows which audio inputs were selectable as
89audio source if this was the currently selected video input. It is a
90bit mask. The LSB corresponds to audio input 0, the MSB to input 31.
91Any number of bits can be set, or none.</para><para>When the driver
92does not enumerate audio inputs no bits must be set. Applications
93shall not interpret this as lack of audio support. Some drivers
94automatically select audio sources and do not enumerate them since
95there is no choice anyway.</para><para>For details on audio inputs and
96how to select the current input see <xref
97 linkend="audio" />.</para></entry>
98 </row>
99 <row>
100 <entry>__u32</entry>
101 <entry><structfield>tuner</structfield></entry>
102 <entry>Capture devices can have zero or more tuners (RF
103demodulators). When the <structfield>type</structfield> is set to
104<constant>V4L2_INPUT_TYPE_TUNER</constant> this is an RF connector and
105this field identifies the tuner. It corresponds to
106&v4l2-tuner; field <structfield>index</structfield>. For details on
107tuners see <xref linkend="tuner" />.</entry>
108 </row>
109 <row>
110 <entry>&v4l2-std-id;</entry>
111 <entry><structfield>std</structfield></entry>
112 <entry>Every video input supports one or more different
113video standards. This field is a set of all supported standards. For
114details on video standards and how to switch see <xref
115linkend="standard" />.</entry>
116 </row>
117 <row>
118 <entry>__u32</entry>
119 <entry><structfield>status</structfield></entry>
120 <entry>This field provides status information about the
121input. See <xref linkend="input-status" /> for flags.
122With the exception of the sensor orientation bits <structfield>status</structfield> is only valid when this is the
123current input.</entry>
124 </row>
125 <row>
126 <entry>__u32</entry>
127 <entry><structfield>capabilities</structfield></entry>
128 <entry>This field provides capabilities for the
129input. See <xref linkend="input-capabilities" /> for flags.</entry>
130 </row>
131 <row>
132 <entry>__u32</entry>
133 <entry><structfield>reserved</structfield>[3]</entry>
134 <entry>Reserved for future extensions. Drivers must set
135the array to zero.</entry>
136 </row>
137 </tbody>
138 </tgroup>
139 </table>
140
141 <table frame="none" pgwide="1" id="input-type">
142 <title>Input Types</title>
143 <tgroup cols="3">
144 &cs-def;
145 <tbody valign="top">
146 <row>
147 <entry><constant>V4L2_INPUT_TYPE_TUNER</constant></entry>
148 <entry>1</entry>
149 <entry>This input uses a tuner (RF demodulator).</entry>
150 </row>
151 <row>
152 <entry><constant>V4L2_INPUT_TYPE_CAMERA</constant></entry>
153 <entry>2</entry>
154 <entry>Analog baseband input, for example CVBS /
155Composite Video, S-Video, RGB.</entry>
156 </row>
157 </tbody>
158 </tgroup>
159 </table>
160
161 <!-- Status flags based on proposal by Mark McClelland,
162video4linux-list@redhat.com on 18 Oct 2002, subject "Re: [V4L] Re:
163v4l2 api". "Why are some of them inverted? So that the driver doesn't
164have to lie about the status in cases where it can't tell one way or
165the other. Plus, a status of zero would generally mean that everything
166is OK." -->
167
168 <table frame="none" pgwide="1" id="input-status">
169 <title>Input Status Flags</title>
170 <tgroup cols="3">
171 <colspec colname="c1" />
172 <colspec colname="c2" align="center" />
173 <colspec colname="c3" />
174 <spanspec namest="c1" nameend="c3" spanname="hspan"
175 align="left" />
176 <tbody valign="top">
177 <row>
178 <entry spanname="hspan">General</entry>
179 </row>
180 <row>
181 <entry><constant>V4L2_IN_ST_NO_POWER</constant></entry>
182 <entry>0x00000001</entry>
183 <entry>Attached device is off.</entry>
184 </row>
185 <row>
186 <entry><constant>V4L2_IN_ST_NO_SIGNAL</constant></entry>
187 <entry>0x00000002</entry>
188 <entry></entry>
189 </row>
190 <row>
191 <entry><constant>V4L2_IN_ST_NO_COLOR</constant></entry>
192 <entry>0x00000004</entry>
193 <entry>The hardware supports color decoding, but does not
194detect color modulation in the signal.</entry>
195 </row>
196 <row>
197 <entry spanname="hspan">Sensor Orientation</entry>
198 </row>
199 <row>
200 <entry><constant>V4L2_IN_ST_HFLIP</constant></entry>
201 <entry>0x00000010</entry>
202 <entry>The input is connected to a device that produces a signal
203that is flipped horizontally and does not correct this before passing the
204signal to userspace.</entry>
205 </row>
206 <row>
207 <entry><constant>V4L2_IN_ST_VFLIP</constant></entry>
208 <entry>0x00000020</entry>
209 <entry>The input is connected to a device that produces a signal
210that is flipped vertically and does not correct this before passing the
211signal to userspace. Note that a 180 degree rotation is the same as HFLIP | VFLIP</entry>
212 </row>
213 <row>
214 <entry spanname="hspan">Analog Video</entry>
215 </row>
216 <row>
217 <entry><constant>V4L2_IN_ST_NO_H_LOCK</constant></entry>
218 <entry>0x00000100</entry>
219 <entry>No horizontal sync lock.</entry>
220 </row>
221 <row>
222 <entry><constant>V4L2_IN_ST_COLOR_KILL</constant></entry>
223 <entry>0x00000200</entry>
224 <entry>A color killer circuit automatically disables color
225decoding when it detects no color modulation. When this flag is set
226the color killer is enabled <emphasis>and</emphasis> has shut off
227color decoding.</entry>
228 </row>
229 <row>
230 <entry spanname="hspan">Digital Video</entry>
231 </row>
232 <row>
233 <entry><constant>V4L2_IN_ST_NO_SYNC</constant></entry>
234 <entry>0x00010000</entry>
235 <entry>No synchronization lock.</entry>
236 </row>
237 <row>
238 <entry><constant>V4L2_IN_ST_NO_EQU</constant></entry>
239 <entry>0x00020000</entry>
240 <entry>No equalizer lock.</entry>
241 </row>
242 <row>
243 <entry><constant>V4L2_IN_ST_NO_CARRIER</constant></entry>
244 <entry>0x00040000</entry>
245 <entry>Carrier recovery failed.</entry>
246 </row>
247 <row>
248 <entry spanname="hspan">VCR and Set-Top Box</entry>
249 </row>
250 <row>
251 <entry><constant>V4L2_IN_ST_MACROVISION</constant></entry>
252 <entry>0x01000000</entry>
253 <entry>Macrovision is an analog copy prevention system
254mangling the video signal to confuse video recorders. When this
255flag is set Macrovision has been detected.</entry>
256 </row>
257 <row>
258 <entry><constant>V4L2_IN_ST_NO_ACCESS</constant></entry>
259 <entry>0x02000000</entry>
260 <entry>Conditional access denied.</entry>
261 </row>
262 <row>
263 <entry><constant>V4L2_IN_ST_VTR</constant></entry>
264 <entry>0x04000000</entry>
265 <entry>VTR time constant. [?]</entry>
266 </row>
267 </tbody>
268 </tgroup>
269 </table>
270
271 <!-- Capability flags based on video timings RFC by Muralidharan
272Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
273input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
274 -->
275 <table frame="none" pgwide="1" id="input-capabilities">
276 <title>Input capabilities</title>
277 <tgroup cols="3">
278 &cs-def;
279 <tbody valign="top">
280 <row>
281 <entry><constant>V4L2_IN_CAP_DV_TIMINGS</constant></entry>
282 <entry>0x00000002</entry>
283 <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
284 </row>
285 <row>
286 <entry><constant>V4L2_IN_CAP_STD</constant></entry>
287 <entry>0x00000004</entry>
288 <entry>This input supports setting the TV standard by using VIDIOC_S_STD.</entry>
289 </row>
290 <row>
291 <entry><constant>V4L2_IN_CAP_NATIVE_SIZE</constant></entry>
292 <entry>0x00000008</entry>
293 <entry>This input supports setting the native size using
294 the <constant>V4L2_SEL_TGT_NATIVE_SIZE</constant>
295 selection target, see <xref
296 linkend="v4l2-selections-common"/>.</entry>
297 </row>
298 </tbody>
299 </tgroup>
300 </table>
301 </refsect1>
302
303 <refsect1>
304 &return-value;
305
306 <variablelist>
307 <varlistentry>
308 <term><errorcode>EINVAL</errorcode></term>
309 <listitem>
310 <para>The &v4l2-input; <structfield>index</structfield> is
311out of bounds.</para>
312 </listitem>
313 </varlistentry>
314 </variablelist>
315 </refsect1>
316</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
deleted file mode 100644
index 773fb1258c24..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
+++ /dev/null
@@ -1,201 +0,0 @@
1<refentry id="vidioc-enumoutput">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUMOUTPUT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUMOUTPUT</refname>
9 <refpurpose>Enumerate video outputs</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_output *<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_ENUMOUTPUT</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 <para>To query the attributes of a video outputs applications
52initialize the <structfield>index</structfield> field of &v4l2-output;
53and call the <constant>VIDIOC_ENUMOUTPUT</constant> ioctl with a
54pointer to this structure. Drivers fill the rest of the structure or
55return an &EINVAL; when the index is out of bounds. To enumerate all
56outputs applications shall begin at index zero, incrementing by one
57until the driver returns <errorcode>EINVAL</errorcode>.</para>
58
59 <table frame="none" pgwide="1" id="v4l2-output">
60 <title>struct <structname>v4l2_output</structname></title>
61 <tgroup cols="3">
62 &cs-str;
63 <tbody valign="top">
64 <row>
65 <entry>__u32</entry>
66 <entry><structfield>index</structfield></entry>
67 <entry>Identifies the output, set by the
68application.</entry>
69 </row>
70 <row>
71 <entry>__u8</entry>
72 <entry><structfield>name</structfield>[32]</entry>
73 <entry>Name of the video output, a NUL-terminated ASCII
74string, for example: "Vout". This information is intended for the
75user, preferably the connector label on the device itself.</entry>
76 </row>
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>type</structfield></entry>
80 <entry>Type of the output, see <xref
81 linkend="output-type" />.</entry>
82 </row>
83 <row>
84 <entry>__u32</entry>
85 <entry><structfield>audioset</structfield></entry>
86 <entry><para>Drivers can enumerate up to 32 video and
87audio outputs. This field shows which audio outputs were
88selectable as the current output if this was the currently selected
89video output. It is a bit mask. The LSB corresponds to audio output 0,
90the MSB to output 31. Any number of bits can be set, or
91none.</para><para>When the driver does not enumerate audio outputs no
92bits must be set. Applications shall not interpret this as lack of
93audio support. Drivers may automatically select audio outputs without
94enumerating them.</para><para>For details on audio outputs and how to
95select the current output see <xref linkend="audio" />.</para></entry>
96 </row>
97 <row>
98 <entry>__u32</entry>
99 <entry><structfield>modulator</structfield></entry>
100 <entry>Output devices can have zero or more RF modulators.
101When the <structfield>type</structfield> is
102<constant>V4L2_OUTPUT_TYPE_MODULATOR</constant> this is an RF
103connector and this field identifies the modulator. It corresponds to
104&v4l2-modulator; field <structfield>index</structfield>. For details
105on modulators see <xref linkend="tuner" />.</entry>
106 </row>
107 <row>
108 <entry>&v4l2-std-id;</entry>
109 <entry><structfield>std</structfield></entry>
110 <entry>Every video output supports one or more different
111video standards. This field is a set of all supported standards. For
112details on video standards and how to switch see <xref
113 linkend="standard" />.</entry>
114 </row>
115 <row>
116 <entry>__u32</entry>
117 <entry><structfield>capabilities</structfield></entry>
118 <entry>This field provides capabilities for the
119output. See <xref linkend="output-capabilities" /> for flags.</entry>
120 </row>
121 <row>
122 <entry>__u32</entry>
123 <entry><structfield>reserved</structfield>[3]</entry>
124 <entry>Reserved for future extensions. Drivers must set
125the array to zero.</entry>
126 </row>
127 </tbody>
128 </tgroup>
129 </table>
130
131 <table frame="none" pgwide="1" id="output-type">
132 <title>Output Type</title>
133 <tgroup cols="3">
134 &cs-def;
135 <tbody valign="top">
136 <row>
137 <entry><constant>V4L2_OUTPUT_TYPE_MODULATOR</constant></entry>
138 <entry>1</entry>
139 <entry>This output is an analog TV modulator.</entry>
140 </row>
141 <row>
142 <entry><constant>V4L2_OUTPUT_TYPE_ANALOG</constant></entry>
143 <entry>2</entry>
144 <entry>Analog baseband output, for example Composite /
145CVBS, S-Video, RGB.</entry>
146 </row>
147 <row>
148 <entry><constant>V4L2_OUTPUT_TYPE_ANALOGVGAOVERLAY</constant></entry>
149 <entry>3</entry>
150 <entry>[?]</entry>
151 </row>
152 </tbody>
153 </tgroup>
154 </table>
155
156 <!-- Capabilities flags based on video timings RFC by Muralidharan
157Karicheri, titled RFC (v1.2): V4L - Support for video timings at the
158input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
159 -->
160 <table frame="none" pgwide="1" id="output-capabilities">
161 <title>Output capabilities</title>
162 <tgroup cols="3">
163 &cs-def;
164 <tbody valign="top">
165 <row>
166 <entry><constant>V4L2_OUT_CAP_DV_TIMINGS</constant></entry>
167 <entry>0x00000002</entry>
168 <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
169 </row>
170 <row>
171 <entry><constant>V4L2_OUT_CAP_STD</constant></entry>
172 <entry>0x00000004</entry>
173 <entry>This output supports setting the TV standard by using VIDIOC_S_STD.</entry>
174 </row>
175 <row>
176 <entry><constant>V4L2_OUT_CAP_NATIVE_SIZE</constant></entry>
177 <entry>0x00000008</entry>
178 <entry>This output supports setting the native size using
179 the <constant>V4L2_SEL_TGT_NATIVE_SIZE</constant>
180 selection target, see <xref
181 linkend="v4l2-selections-common"/>.</entry>
182 </row>
183 </tbody>
184 </tgroup>
185 </table>
186
187 </refsect1>
188 <refsect1>
189 &return-value;
190
191 <variablelist>
192 <varlistentry>
193 <term><errorcode>EINVAL</errorcode></term>
194 <listitem>
195 <para>The &v4l2-output; <structfield>index</structfield>
196is out of bounds.</para>
197 </listitem>
198 </varlistentry>
199 </variablelist>
200 </refsect1>
201</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumstd.xml b/Documentation/DocBook/media/v4l/vidioc-enumstd.xml
deleted file mode 100644
index f18454e91752..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-enumstd.xml
+++ /dev/null
@@ -1,389 +0,0 @@
1<refentry id="vidioc-enumstd">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUMSTD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUMSTD</refname>
9 <refpurpose>Enumerate supported video standards</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_standard *<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_ENUMSTD</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 <para>To query the attributes of a video standard,
52especially a custom (driver defined) one, applications initialize the
53<structfield>index</structfield> field of &v4l2-standard; and call the
54<constant>VIDIOC_ENUMSTD</constant> ioctl with a pointer to this
55structure. Drivers fill the rest of the structure or return an
56&EINVAL; when the index is out of bounds. To enumerate all standards
57applications shall begin at index zero, incrementing by one until the
58driver returns <errorcode>EINVAL</errorcode>. Drivers may enumerate a
59different set of standards after switching the video input or
60output.<footnote>
61 <para>The supported standards may overlap and we need an
62unambiguous set to find the current standard returned by
63<constant>VIDIOC_G_STD</constant>.</para>
64 </footnote></para>
65
66 <table pgwide="1" frame="none" id="v4l2-standard">
67 <title>struct <structname>v4l2_standard</structname></title>
68 <tgroup cols="3">
69 &cs-str;
70 <tbody valign="top">
71 <row>
72 <entry>__u32</entry>
73 <entry><structfield>index</structfield></entry>
74 <entry>Number of the video standard, set by the
75application.</entry>
76 </row>
77 <row>
78 <entry>&v4l2-std-id;</entry>
79 <entry><structfield>id</structfield></entry>
80 <entry>The bits in this field identify the standard as
81one of the common standards listed in <xref linkend="v4l2-std-id" />,
82or if bits 32 to 63 are set as custom standards. Multiple bits can be
83set if the hardware does not distinguish between these standards,
84however separate indices do not indicate the opposite. The
85<structfield>id</structfield> must be unique. No other enumerated
86<structname>v4l2_standard</structname> structure, for this input or
87output anyway, can contain the same set of bits.</entry>
88 </row>
89 <row>
90 <entry>__u8</entry>
91 <entry><structfield>name</structfield>[24]</entry>
92 <entry>Name of the standard, a NUL-terminated ASCII
93string, for example: "PAL-B/G", "NTSC Japan". This information is
94intended for the user.</entry>
95 </row>
96 <row>
97 <entry>&v4l2-fract;</entry>
98 <entry><structfield>frameperiod</structfield></entry>
99 <entry>The frame period (not field period) is numerator
100/ denominator. For example M/NTSC has a frame period of 1001 /
10130000 seconds.</entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>framelines</structfield></entry>
106 <entry>Total lines per frame including blanking,
107e.&nbsp;g. 625 for B/PAL.</entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>reserved</structfield>[4]</entry>
112 <entry>Reserved for future extensions. Drivers must set
113the array to zero.</entry>
114 </row>
115 </tbody>
116 </tgroup>
117 </table>
118
119 <table pgwide="1" frame="none" id="v4l2-fract">
120 <title>struct <structname>v4l2_fract</structname></title>
121 <tgroup cols="3">
122 &cs-str;
123 <tbody valign="top">
124 <row>
125 <entry>__u32</entry>
126 <entry><structfield>numerator</structfield></entry>
127 <entry></entry>
128 </row>
129 <row>
130 <entry>__u32</entry>
131 <entry><structfield>denominator</structfield></entry>
132 <entry></entry>
133 </row>
134 </tbody>
135 </tgroup>
136 </table>
137
138 <table pgwide="1" frame="none" id="v4l2-std-id">
139 <title>typedef <structname>v4l2_std_id</structname></title>
140 <tgroup cols="3">
141 &cs-str;
142 <tbody valign="top">
143 <row>
144 <entry>__u64</entry>
145 <entry><structfield>v4l2_std_id</structfield></entry>
146 <entry>This type is a set, each bit representing another
147video standard as listed below and in <xref
148linkend="video-standards" />. The 32 most significant bits are reserved
149for custom (driver defined) video standards.</entry>
150 </row>
151 </tbody>
152 </tgroup>
153 </table>
154
155 <para><programlisting>
156#define V4L2_STD_PAL_B ((v4l2_std_id)0x00000001)
157#define V4L2_STD_PAL_B1 ((v4l2_std_id)0x00000002)
158#define V4L2_STD_PAL_G ((v4l2_std_id)0x00000004)
159#define V4L2_STD_PAL_H ((v4l2_std_id)0x00000008)
160#define V4L2_STD_PAL_I ((v4l2_std_id)0x00000010)
161#define V4L2_STD_PAL_D ((v4l2_std_id)0x00000020)
162#define V4L2_STD_PAL_D1 ((v4l2_std_id)0x00000040)
163#define V4L2_STD_PAL_K ((v4l2_std_id)0x00000080)
164
165#define V4L2_STD_PAL_M ((v4l2_std_id)0x00000100)
166#define V4L2_STD_PAL_N ((v4l2_std_id)0x00000200)
167#define V4L2_STD_PAL_Nc ((v4l2_std_id)0x00000400)
168#define V4L2_STD_PAL_60 ((v4l2_std_id)0x00000800)
169</programlisting></para><para><constant>V4L2_STD_PAL_60</constant> is
170a hybrid standard with 525 lines, 60 Hz refresh rate, and PAL color
171modulation with a 4.43 MHz color subcarrier. Some PAL video recorders
172can play back NTSC tapes in this mode for display on a 50/60 Hz agnostic
173PAL TV.</para><para><programlisting>
174#define V4L2_STD_NTSC_M ((v4l2_std_id)0x00001000)
175#define V4L2_STD_NTSC_M_JP ((v4l2_std_id)0x00002000)
176#define V4L2_STD_NTSC_443 ((v4l2_std_id)0x00004000)
177</programlisting></para><para><constant>V4L2_STD_NTSC_443</constant>
178is a hybrid standard with 525 lines, 60 Hz refresh rate, and NTSC
179color modulation with a 4.43 MHz color
180subcarrier.</para><para><programlisting>
181#define V4L2_STD_NTSC_M_KR ((v4l2_std_id)0x00008000)
182
183#define V4L2_STD_SECAM_B ((v4l2_std_id)0x00010000)
184#define V4L2_STD_SECAM_D ((v4l2_std_id)0x00020000)
185#define V4L2_STD_SECAM_G ((v4l2_std_id)0x00040000)
186#define V4L2_STD_SECAM_H ((v4l2_std_id)0x00080000)
187#define V4L2_STD_SECAM_K ((v4l2_std_id)0x00100000)
188#define V4L2_STD_SECAM_K1 ((v4l2_std_id)0x00200000)
189#define V4L2_STD_SECAM_L ((v4l2_std_id)0x00400000)
190#define V4L2_STD_SECAM_LC ((v4l2_std_id)0x00800000)
191
192/* ATSC/HDTV */
193#define V4L2_STD_ATSC_8_VSB ((v4l2_std_id)0x01000000)
194#define V4L2_STD_ATSC_16_VSB ((v4l2_std_id)0x02000000)
195</programlisting></para><para><!-- ATSC proposal by Mark McClelland,
196video4linux-list@redhat.com on 17 Oct 2002
197--><constant>V4L2_STD_ATSC_8_VSB</constant> and
198<constant>V4L2_STD_ATSC_16_VSB</constant> are U.S. terrestrial digital
199TV standards. Presently the V4L2 API does not support digital TV. See
200also the Linux DVB API at <ulink
201url="https://linuxtv.org">https://linuxtv.org</ulink>.</para>
202<para><programlisting>
203#define V4L2_STD_PAL_BG (V4L2_STD_PAL_B |\
204 V4L2_STD_PAL_B1 |\
205 V4L2_STD_PAL_G)
206#define V4L2_STD_B (V4L2_STD_PAL_B |\
207 V4L2_STD_PAL_B1 |\
208 V4L2_STD_SECAM_B)
209#define V4L2_STD_GH (V4L2_STD_PAL_G |\
210 V4L2_STD_PAL_H |\
211 V4L2_STD_SECAM_G |\
212 V4L2_STD_SECAM_H)
213#define V4L2_STD_PAL_DK (V4L2_STD_PAL_D |\
214 V4L2_STD_PAL_D1 |\
215 V4L2_STD_PAL_K)
216#define V4L2_STD_PAL (V4L2_STD_PAL_BG |\
217 V4L2_STD_PAL_DK |\
218 V4L2_STD_PAL_H |\
219 V4L2_STD_PAL_I)
220#define V4L2_STD_NTSC (V4L2_STD_NTSC_M |\
221 V4L2_STD_NTSC_M_JP |\
222 V4L2_STD_NTSC_M_KR)
223#define V4L2_STD_MN (V4L2_STD_PAL_M |\
224 V4L2_STD_PAL_N |\
225 V4L2_STD_PAL_Nc |\
226 V4L2_STD_NTSC)
227#define V4L2_STD_SECAM_DK (V4L2_STD_SECAM_D |\
228 V4L2_STD_SECAM_K |\
229 V4L2_STD_SECAM_K1)
230#define V4L2_STD_DK (V4L2_STD_PAL_DK |\
231 V4L2_STD_SECAM_DK)
232
233#define V4L2_STD_SECAM (V4L2_STD_SECAM_B |\
234 V4L2_STD_SECAM_G |\
235 V4L2_STD_SECAM_H |\
236 V4L2_STD_SECAM_DK |\
237 V4L2_STD_SECAM_L |\
238 V4L2_STD_SECAM_LC)
239
240#define V4L2_STD_525_60 (V4L2_STD_PAL_M |\
241 V4L2_STD_PAL_60 |\
242 V4L2_STD_NTSC |\
243 V4L2_STD_NTSC_443)
244#define V4L2_STD_625_50 (V4L2_STD_PAL |\
245 V4L2_STD_PAL_N |\
246 V4L2_STD_PAL_Nc |\
247 V4L2_STD_SECAM)
248
249#define V4L2_STD_UNKNOWN 0
250#define V4L2_STD_ALL (V4L2_STD_525_60 |\
251 V4L2_STD_625_50)
252</programlisting></para>
253
254 <table pgwide="1" id="video-standards" orient="land">
255 <title>Video Standards (based on [<xref linkend="itu470" />])</title>
256 <tgroup cols="12" colsep="1" rowsep="1" align="center">
257 <colspec colname="c1" align="left" />
258 <colspec colname="c2" />
259 <colspec colname="c3" />
260 <colspec colname="c4" />
261 <colspec colname="c5" />
262 <colspec colnum="7" colname="c7" />
263 <colspec colnum="9" colname="c9" />
264 <colspec colnum="12" colname="c12" />
265 <spanspec namest="c2" nameend="c3" spanname="m" align="center" />
266 <spanspec namest="c4" nameend="c12" spanname="x" align="center" />
267 <spanspec namest="c5" nameend="c7" spanname="b" align="center" />
268 <spanspec namest="c9" nameend="c12" spanname="s" align="center" />
269 <thead>
270 <row>
271 <entry>Characteristics</entry>
272 <entry><para>M/NTSC<footnote><para>Japan uses a standard
273similar to M/NTSC
274(V4L2_STD_NTSC_M_JP).</para></footnote></para></entry>
275 <entry>M/PAL</entry>
276 <entry><para>N/PAL<footnote><para> The values in
277brackets apply to the combination N/PAL a.k.a.
278N<subscript>C</subscript> used in Argentina
279(V4L2_STD_PAL_Nc).</para></footnote></para></entry>
280 <entry align="center">B, B1, G/PAL</entry>
281 <entry align="center">D, D1, K/PAL</entry>
282 <entry align="center">H/PAL</entry>
283 <entry align="center">I/PAL</entry>
284 <entry align="center">B, G/SECAM</entry>
285 <entry align="center">D, K/SECAM</entry>
286 <entry align="center">K1/SECAM</entry>
287 <entry align="center">L/SECAM</entry>
288 </row>
289 </thead>
290 <tbody valign="top">
291 <row>
292 <entry>Frame lines</entry>
293 <entry spanname="m">525</entry>
294 <entry spanname="x">625</entry>
295 </row>
296 <row>
297 <entry>Frame period (s)</entry>
298 <entry spanname="m">1001/30000</entry>
299 <entry spanname="x">1/25</entry>
300 </row>
301 <row>
302 <entry>Chrominance sub-carrier frequency (Hz)</entry>
303 <entry>3579545 &plusmn;&nbsp;10</entry>
304 <entry>3579611.49 &plusmn;&nbsp;10</entry>
305 <entry>4433618.75 &plusmn;&nbsp;5 (3582056.25
306&plusmn;&nbsp;5)</entry>
307 <entry spanname="b">4433618.75 &plusmn;&nbsp;5</entry>
308 <entry>4433618.75 &plusmn;&nbsp;1</entry>
309 <entry spanname="s">f<subscript>OR</subscript>&nbsp;=
3104406250 &plusmn;&nbsp;2000, f<subscript>OB</subscript>&nbsp;= 4250000
311&plusmn;&nbsp;2000</entry>
312 </row>
313 <row>
314 <entry>Nominal radio-frequency channel bandwidth
315(MHz)</entry>
316 <entry>6</entry>
317 <entry>6</entry>
318 <entry>6</entry>
319 <entry>B: 7; B1, G: 8</entry>
320 <entry>8</entry>
321 <entry>8</entry>
322 <entry>8</entry>
323 <entry>8</entry>
324 <entry>8</entry>
325 <entry>8</entry>
326 <entry>8</entry>
327 </row>
328 <row>
329 <entry>Sound carrier relative to vision carrier
330(MHz)</entry>
331 <entry>+&nbsp;4.5</entry>
332 <entry>+&nbsp;4.5</entry>
333 <entry>+&nbsp;4.5</entry>
334 <entry><para>+&nbsp;5.5 &plusmn;&nbsp;0.001
335<footnote><para>In the Federal Republic of Germany, Austria, Italy,
336the Netherlands, Slovakia and Switzerland a system of two sound
337carriers is used, the frequency of the second carrier being
338242.1875&nbsp;kHz above the frequency of the first sound carrier. For
339stereophonic sound transmissions a similar system is used in
340Australia.</para></footnote> <footnote><para>New Zealand uses a sound
341carrier displaced 5.4996 &plusmn;&nbsp;0.0005 MHz from the vision
342carrier.</para></footnote> <footnote><para>In Denmark, Finland, New
343Zealand, Sweden and Spain a system of two sound carriers is used. In
344Iceland, Norway and Poland the same system is being introduced. The
345second carrier is 5.85&nbsp;MHz above the vision carrier and is DQPSK
346modulated with 728&nbsp;kbit/s sound and data multiplex. (NICAM
347system)</para></footnote> <footnote><para>In the United Kingdom, a
348system of two sound carriers is used. The second sound carrier is
3496.552&nbsp;MHz above the vision carrier and is DQPSK modulated with a
350728&nbsp;kbit/s sound and data multiplex able to carry two sound
351channels. (NICAM system)</para></footnote></para></entry>
352 <entry>+&nbsp;6.5 &plusmn;&nbsp;0.001</entry>
353 <entry>+&nbsp;5.5</entry>
354 <entry>+&nbsp;5.9996 &plusmn;&nbsp;0.0005</entry>
355 <entry>+&nbsp;5.5 &plusmn;&nbsp;0.001</entry>
356 <entry>+&nbsp;6.5 &plusmn;&nbsp;0.001</entry>
357 <entry>+&nbsp;6.5</entry>
358 <entry><para>+&nbsp;6.5 <footnote><para>In France, a
359digital carrier 5.85 MHz away from the vision carrier may be used in
360addition to the main sound carrier. It is modulated in differentially
361encoded QPSK with a 728 kbit/s sound and data multiplexer capable of
362carrying two sound channels. (NICAM
363system)</para></footnote></para></entry>
364 </row>
365 </tbody>
366 </tgroup>
367 </table>
368 </refsect1>
369
370 <refsect1>
371 &return-value;
372
373 <variablelist>
374 <varlistentry>
375 <term><errorcode>EINVAL</errorcode></term>
376 <listitem>
377 <para>The &v4l2-standard; <structfield>index</structfield>
378is out of bounds.</para>
379 </listitem>
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>
387 </variablelist>
388 </refsect1>
389</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-expbuf.xml b/Documentation/DocBook/media/v4l/vidioc-expbuf.xml
deleted file mode 100644
index a6558a676ef3..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-expbuf.xml
+++ /dev/null
@@ -1,205 +0,0 @@
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<para>This ioctl is an extension to the <link linkend="mmap">memory
53mapping</link> I/O method, therefore it is available only for
54<constant>V4L2_MEMORY_MMAP</constant> buffers. It can be used to export a
55buffer as a DMABUF file at any time after buffers have been allocated with the
56&VIDIOC-REQBUFS; ioctl.</para>
57
58<para> To export a buffer, applications fill &v4l2-exportbuffer;. The
59<structfield>type</structfield> field is set to the same buffer type as was
60previously used with &v4l2-requestbuffers; <structfield>type</structfield>.
61Applications must also set the <structfield>index</structfield> field. Valid
62index numbers range from zero to the number of buffers allocated with
63&VIDIOC-REQBUFS; (&v4l2-requestbuffers; <structfield>count</structfield>)
64minus one. For the multi-planar API, applications set the <structfield>plane</structfield>
65field to the index of the plane to be exported. Valid planes
66range from zero to the maximal number of valid planes for the currently active
67format. For the single-planar API, applications must set <structfield>plane</structfield>
68to zero. Additional flags may be posted in the <structfield>flags</structfield>
69field. Refer to a manual for open() for details.
70Currently only O_CLOEXEC, O_RDONLY, O_WRONLY, and O_RDWR are supported. All
71other fields must be set to zero.
72In the case of multi-planar API, every plane is exported separately using
73multiple <constant>VIDIOC_EXPBUF</constant> calls.</para>
74
75<para>After calling <constant>VIDIOC_EXPBUF</constant> the <structfield>fd</structfield>
76field will be set by a driver. This is a DMABUF file
77descriptor. The application may pass it to other DMABUF-aware devices. Refer to
78<link linkend="dmabuf">DMABUF importing</link> for details about importing
79DMABUF files into V4L2 nodes. It is recommended to close a DMABUF file when it
80is no longer used to allow the associated memory to be reclaimed.</para>
81 </refsect1>
82
83 <refsect1>
84 <title>Examples</title>
85
86 <example>
87 <title>Exporting a buffer.</title>
88 <programlisting>
89int buffer_export(int v4lfd, &v4l2-buf-type; bt, int index, int *dmafd)
90{
91 &v4l2-exportbuffer; expbuf;
92
93 memset(&amp;expbuf, 0, sizeof(expbuf));
94 expbuf.type = bt;
95 expbuf.index = index;
96 if (ioctl(v4lfd, &VIDIOC-EXPBUF;, &amp;expbuf) == -1) {
97 perror("VIDIOC_EXPBUF");
98 return -1;
99 }
100
101 *dmafd = expbuf.fd;
102
103 return 0;
104}
105 </programlisting>
106 </example>
107
108 <example>
109 <title>Exporting a buffer using the multi-planar API.</title>
110 <programlisting>
111int buffer_export_mp(int v4lfd, &v4l2-buf-type; bt, int index,
112 int dmafd[], int n_planes)
113{
114 int i;
115
116 for (i = 0; i &lt; n_planes; ++i) {
117 &v4l2-exportbuffer; expbuf;
118
119 memset(&amp;expbuf, 0, sizeof(expbuf));
120 expbuf.type = bt;
121 expbuf.index = index;
122 expbuf.plane = i;
123 if (ioctl(v4lfd, &VIDIOC-EXPBUF;, &amp;expbuf) == -1) {
124 perror("VIDIOC_EXPBUF");
125 while (i)
126 close(dmafd[--i]);
127 return -1;
128 }
129 dmafd[i] = expbuf.fd;
130 }
131
132 return 0;
133}
134 </programlisting>
135 </example>
136
137 <table pgwide="1" frame="none" id="v4l2-exportbuffer">
138 <title>struct <structname>v4l2_exportbuffer</structname></title>
139 <tgroup cols="3">
140 &cs-str;
141 <tbody valign="top">
142 <row>
143 <entry>__u32</entry>
144 <entry><structfield>type</structfield></entry>
145 <entry>Type of the buffer, same as &v4l2-format;
146<structfield>type</structfield> or &v4l2-requestbuffers;
147<structfield>type</structfield>, set by the application. See <xref
148linkend="v4l2-buf-type" /></entry>
149 </row>
150 <row>
151 <entry>__u32</entry>
152 <entry><structfield>index</structfield></entry>
153 <entry>Number of the buffer, set by the application. This field is
154only used for <link linkend="mmap">memory mapping</link> I/O and can range from
155zero to the number of buffers allocated with the &VIDIOC-REQBUFS; and/or
156&VIDIOC-CREATE-BUFS; ioctls. </entry>
157 </row>
158 <row>
159 <entry>__u32</entry>
160 <entry><structfield>plane</structfield></entry>
161 <entry>Index of the plane to be exported when using the
162multi-planar API. Otherwise this value must be set to zero. </entry>
163 </row>
164 <row>
165 <entry>__u32</entry>
166 <entry><structfield>flags</structfield></entry>
167 <entry>Flags for the newly created file, currently only
168<constant>O_CLOEXEC</constant>, <constant>O_RDONLY</constant>, <constant>O_WRONLY</constant>,
169and <constant>O_RDWR</constant> are supported, refer to the manual
170of open() for more details.</entry>
171 </row>
172 <row>
173 <entry>__s32</entry>
174 <entry><structfield>fd</structfield></entry>
175 <entry>The DMABUF file descriptor associated with a buffer. Set by
176 the driver.</entry>
177 </row>
178 <row>
179 <entry>__u32</entry>
180 <entry><structfield>reserved[11]</structfield></entry>
181 <entry>Reserved field for future use. Drivers and applications must
182set the array to zero.</entry>
183 </row>
184 </tbody>
185 </tgroup>
186 </table>
187
188 </refsect1>
189
190 <refsect1>
191 &return-value;
192 <variablelist>
193 <varlistentry>
194 <term><errorcode>EINVAL</errorcode></term>
195 <listitem>
196 <para>A queue is not in MMAP mode or DMABUF exporting is not
197supported or <structfield>flags</structfield> or <structfield>type</structfield>
198or <structfield>index</structfield> or <structfield>plane</structfield> fields
199are invalid.</para>
200 </listitem>
201 </varlistentry>
202 </variablelist>
203 </refsect1>
204
205</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-audio.xml b/Documentation/DocBook/media/v4l/vidioc-g-audio.xml
deleted file mode 100644
index d7bb9b3738f6..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-audio.xml
+++ /dev/null
@@ -1,172 +0,0 @@
1<refentry id="vidioc-g-audio">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_AUDIO, VIDIOC_S_AUDIO</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_AUDIO</refname>
9 <refname>VIDIOC_S_AUDIO</refname>
10 <refpurpose>Query or select the current audio input and its
11attributes</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_audio *<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 <funcsynopsis>
24 <funcprototype>
25 <funcdef>int <function>ioctl</function></funcdef>
26 <paramdef>int <parameter>fd</parameter></paramdef>
27 <paramdef>int <parameter>request</parameter></paramdef>
28 <paramdef>const struct v4l2_audio *<parameter>argp</parameter></paramdef>
29 </funcprototype>
30 </funcsynopsis>
31 </refsynopsisdiv>
32
33 <refsect1>
34 <title>Arguments</title>
35
36 <variablelist>
37 <varlistentry>
38 <term><parameter>fd</parameter></term>
39 <listitem>
40 <para>&fd;</para>
41 </listitem>
42 </varlistentry>
43 <varlistentry>
44 <term><parameter>request</parameter></term>
45 <listitem>
46 <para>VIDIOC_G_AUDIO, VIDIOC_S_AUDIO</para>
47 </listitem>
48 </varlistentry>
49 <varlistentry>
50 <term><parameter>argp</parameter></term>
51 <listitem>
52 <para></para>
53 </listitem>
54 </varlistentry>
55 </variablelist>
56 </refsect1>
57
58 <refsect1>
59 <title>Description</title>
60
61 <para>To query the current audio input applications zero out the
62<structfield>reserved</structfield> array of a &v4l2-audio;
63and call the <constant>VIDIOC_G_AUDIO</constant> ioctl with a pointer
64to this structure. Drivers fill the rest of the structure or return an
65&EINVAL; when the device has no audio inputs, or none which combine
66with the current video input.</para>
67
68 <para>Audio inputs have one writable property, the audio mode. To
69select the current audio input <emphasis>and</emphasis> change the
70audio mode, applications initialize the
71<structfield>index</structfield> and <structfield>mode</structfield>
72fields, and the
73<structfield>reserved</structfield> array of a
74<structname>v4l2_audio</structname> structure and call the
75<constant>VIDIOC_S_AUDIO</constant> ioctl. Drivers may switch to a
76different audio mode if the request cannot be satisfied. However, this
77is a write-only ioctl, it does not return the actual new audio
78mode.</para>
79
80 <table pgwide="1" frame="none" id="v4l2-audio">
81 <title>struct <structname>v4l2_audio</structname></title>
82 <tgroup cols="3">
83 &cs-str;
84 <tbody valign="top">
85 <row>
86 <entry>__u32</entry>
87 <entry><structfield>index</structfield></entry>
88 <entry>Identifies the audio input, set by the
89driver or application.</entry>
90 </row>
91 <row>
92 <entry>__u8</entry>
93 <entry><structfield>name</structfield>[32]</entry>
94 <entry>Name of the audio input, a NUL-terminated ASCII
95string, for example: "Line In". This information is intended for the
96user, preferably the connector label on the device itself.</entry>
97 </row>
98 <row>
99 <entry>__u32</entry>
100 <entry><structfield>capability</structfield></entry>
101 <entry>Audio capability flags, see <xref
102 linkend="audio-capability" />.</entry>
103 </row>
104 <row>
105 <entry>__u32</entry>
106 <entry><structfield>mode</structfield></entry>
107 <entry>Audio mode flags set by drivers and applications (on
108 <constant>VIDIOC_S_AUDIO</constant> ioctl), see <xref linkend="audio-mode" />.</entry>
109 </row>
110 <row>
111 <entry>__u32</entry>
112 <entry><structfield>reserved</structfield>[2]</entry>
113 <entry>Reserved for future extensions. Drivers and
114applications must set the array to zero.</entry>
115 </row>
116 </tbody>
117 </tgroup>
118 </table>
119
120 <table pgwide="1" frame="none" id="audio-capability">
121 <title>Audio Capability Flags</title>
122 <tgroup cols="3">
123 &cs-def;
124 <tbody valign="top">
125 <row>
126 <entry><constant>V4L2_AUDCAP_STEREO</constant></entry>
127 <entry>0x00001</entry>
128 <entry>This is a stereo input. The flag is intended to
129automatically disable stereo recording etc. when the signal is always
130monaural. The API provides no means to detect if stereo is
131<emphasis>received</emphasis>, unless the audio input belongs to a
132tuner.</entry>
133 </row>
134 <row>
135 <entry><constant>V4L2_AUDCAP_AVL</constant></entry>
136 <entry>0x00002</entry>
137 <entry>Automatic Volume Level mode is supported.</entry>
138 </row>
139 </tbody>
140 </tgroup>
141 </table>
142
143 <table pgwide="1" frame="none" id="audio-mode">
144 <title>Audio Mode Flags</title>
145 <tgroup cols="3">
146 &cs-def;
147 <tbody valign="top">
148 <row>
149 <entry><constant>V4L2_AUDMODE_AVL</constant></entry>
150 <entry>0x00001</entry>
151 <entry>AVL mode is on.</entry>
152 </row>
153 </tbody>
154 </tgroup>
155 </table>
156 </refsect1>
157
158 <refsect1>
159 &return-value;
160
161 <variablelist>
162 <varlistentry>
163 <term><errorcode>EINVAL</errorcode></term>
164 <listitem>
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
167not combine.</para>
168 </listitem>
169 </varlistentry>
170 </variablelist>
171 </refsect1>
172</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml b/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml
deleted file mode 100644
index 200a2704a970..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-audioout.xml
+++ /dev/null
@@ -1,138 +0,0 @@
1<refentry id="vidioc-g-audioout">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_AUDOUT, VIDIOC_S_AUDOUT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_AUDOUT</refname>
9 <refname>VIDIOC_S_AUDOUT</refname>
10 <refpurpose>Query or select the current audio output</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_audioout *<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_audioout *<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_G_AUDOUT, VIDIOC_S_AUDOUT</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
60 <para>To query the current audio output applications zero out the
61<structfield>reserved</structfield> array of a &v4l2-audioout; and
62call the <constant>VIDIOC_G_AUDOUT</constant> ioctl with a pointer
63to this structure. Drivers fill the rest of the structure or return an
64&EINVAL; when the device has no audio inputs, or none which combine
65with the current video output.</para>
66
67 <para>Audio outputs have no writable properties. Nevertheless, to
68select the current audio output applications can initialize the
69<structfield>index</structfield> field and
70<structfield>reserved</structfield> array (which in the future may
71contain writable properties) of a
72<structname>v4l2_audioout</structname> structure and call the
73<constant>VIDIOC_S_AUDOUT</constant> ioctl. Drivers switch to the
74requested output or return the &EINVAL; when the index is out of
75bounds. This is a write-only ioctl, it does not return the current
76audio output attributes as <constant>VIDIOC_G_AUDOUT</constant>
77does.</para>
78
79 <para>Note connectors on a TV card to loop back the received audio
80signal to a sound card are not audio outputs in this sense.</para>
81
82 <table pgwide="1" frame="none" id="v4l2-audioout">
83 <title>struct <structname>v4l2_audioout</structname></title>
84 <tgroup cols="3">
85 &cs-str;
86 <tbody valign="top">
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>index</structfield></entry>
90 <entry>Identifies the audio output, set by the
91driver or application.</entry>
92 </row>
93 <row>
94 <entry>__u8</entry>
95 <entry><structfield>name</structfield>[32]</entry>
96 <entry>Name of the audio output, a NUL-terminated ASCII
97string, for example: "Line Out". This information is intended for the
98user, preferably the connector label on the device itself.</entry>
99 </row>
100 <row>
101 <entry>__u32</entry>
102 <entry><structfield>capability</structfield></entry>
103 <entry>Audio capability flags, none defined yet. Drivers
104must set this field to zero.</entry>
105 </row>
106 <row>
107 <entry>__u32</entry>
108 <entry><structfield>mode</structfield></entry>
109 <entry>Audio mode, none defined yet. Drivers and
110applications (on <constant>VIDIOC_S_AUDOUT</constant>) must set this
111field to zero.</entry>
112 </row>
113 <row>
114 <entry>__u32</entry>
115 <entry><structfield>reserved</structfield>[2]</entry>
116 <entry>Reserved for future extensions. Drivers and
117applications must set the array to zero.</entry>
118 </row>
119 </tbody>
120 </tgroup>
121 </table>
122 </refsect1>
123
124 <refsect1>
125 &return-value;
126
127 <variablelist>
128 <varlistentry>
129 <term><errorcode>EINVAL</errorcode></term>
130 <listitem>
131 <para>No audio outputs combine with the current video
132output, or the number of the selected audio output is out of bounds or
133it does not combine.</para>
134 </listitem>
135 </varlistentry>
136 </variablelist>
137 </refsect1>
138</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
deleted file mode 100644
index e6c4efb9e8b4..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
+++ /dev/null
@@ -1,129 +0,0 @@
1<refentry id="vidioc-g-crop">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_CROP, VIDIOC_S_CROP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_CROP</refname>
9 <refname>VIDIOC_S_CROP</refname>
10 <refpurpose>Get or set the current cropping rectangle</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_crop *<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_crop *<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_G_CROP, VIDIOC_S_CROP</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
60 <para>To query the cropping rectangle size and position
61applications set the <structfield>type</structfield> field of a
62<structname>v4l2_crop</structname> structure to the respective buffer
63(stream) type and call the <constant>VIDIOC_G_CROP</constant> ioctl
64with a pointer to this structure. The driver fills the rest of the
65structure or returns the &EINVAL; if cropping is not supported.</para>
66
67 <para>To change the cropping rectangle applications initialize the
68<structfield>type</structfield> and &v4l2-rect; substructure named
69<structfield>c</structfield> of a v4l2_crop structure and call the
70<constant>VIDIOC_S_CROP</constant> ioctl with a pointer to this
71structure.</para>
72
73<para>Do not use the multiplanar buffer types. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
74instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>
75and use <constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
76<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>.</para>
77
78 <para>The driver first adjusts the requested dimensions against
79hardware limits, &ie; the bounds given by the capture/output window,
80and it rounds to the closest possible values of horizontal and
81vertical offset, width and height. In particular the driver must round
82the vertical offset of the cropping rectangle to frame lines modulo
83two, such that the field order cannot be confused.</para>
84
85 <para>Second the driver adjusts the image size (the opposite
86rectangle of the scaling process, source or target depending on the
87data direction) to the closest size possible while maintaining the
88current horizontal and vertical scaling factor.</para>
89
90 <para>Finally the driver programs the hardware with the actual
91cropping and image parameters. <constant>VIDIOC_S_CROP</constant> is a
92write-only ioctl, it does not return the actual parameters. To query
93them applications must call <constant>VIDIOC_G_CROP</constant> and
94&VIDIOC-G-FMT;. When the parameters are unsuitable the application may
95modify the cropping or image parameters and repeat the cycle until
96satisfactory parameters have been negotiated.</para>
97
98 <para>When cropping is not supported then no parameters are
99changed and <constant>VIDIOC_S_CROP</constant> returns the
100&EINVAL;.</para>
101
102 <table pgwide="1" frame="none" id="v4l2-crop">
103 <title>struct <structname>v4l2_crop</structname></title>
104 <tgroup cols="3">
105 &cs-str;
106 <tbody valign="top">
107 <row>
108 <entry>__u32</entry>
109 <entry><structfield>type</structfield></entry>
110 <entry>Type of the data stream, set by the application.
111Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
112<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> and
113<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>. See <xref linkend="v4l2-buf-type" />.</entry>
114 </row>
115 <row>
116 <entry>&v4l2-rect;</entry>
117 <entry><structfield>c</structfield></entry>
118 <entry>Cropping rectangle. The same co-ordinate system as
119for &v4l2-cropcap; <structfield>bounds</structfield> is used.</entry>
120 </row>
121 </tbody>
122 </tgroup>
123 </table>
124 </refsect1>
125
126 <refsect1>
127 &return-value;
128 </refsect1>
129</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml b/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml
deleted file mode 100644
index ee2820d6ca66..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-ctrl.xml
+++ /dev/null
@@ -1,133 +0,0 @@
1<refentry id="vidioc-g-ctrl">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_CTRL, VIDIOC_S_CTRL</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_CTRL</refname>
9 <refname>VIDIOC_S_CTRL</refname>
10 <refpurpose>Get or set the value of a control</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_control
20*<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_CTRL, VIDIOC_S_CTRL</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 <para>To get the current value of a control applications
54initialize the <structfield>id</structfield> field of a struct
55<structname>v4l2_control</structname> and call the
56<constant>VIDIOC_G_CTRL</constant> ioctl with a pointer to this
57structure. To change the value of a control applications initialize
58the <structfield>id</structfield> and <structfield>value</structfield>
59fields of a struct <structname>v4l2_control</structname> and call the
60<constant>VIDIOC_S_CTRL</constant> ioctl.</para>
61
62 <para>When the <structfield>id</structfield> is invalid drivers
63return an &EINVAL;. When the <structfield>value</structfield> is out
64of bounds drivers can choose to take the closest valid value or return
65an &ERANGE;, whatever seems more appropriate. However,
66<constant>VIDIOC_S_CTRL</constant> is a write-only ioctl, it does not
67return the actual new value. If the <structfield>value</structfield>
68is inappropriate for the control (e.g. if it refers to an unsupported
69menu index of a menu control), then &EINVAL; is returned as well.</para>
70
71 <para>These ioctls work only with user controls. For other
72control classes the &VIDIOC-G-EXT-CTRLS;, &VIDIOC-S-EXT-CTRLS; or
73&VIDIOC-TRY-EXT-CTRLS; must be used.</para>
74
75 <table pgwide="1" frame="none" id="v4l2-control">
76 <title>struct <structname>v4l2_control</structname></title>
77 <tgroup cols="3">
78 &cs-str;
79 <tbody valign="top">
80 <row>
81 <entry>__u32</entry>
82 <entry><structfield>id</structfield></entry>
83 <entry>Identifies the control, set by the
84application.</entry>
85 </row>
86 <row>
87 <entry>__s32</entry>
88 <entry><structfield>value</structfield></entry>
89 <entry>New value or current value.</entry>
90 </row>
91 </tbody>
92 </tgroup>
93 </table>
94 </refsect1>
95
96 <refsect1>
97 &return-value;
98
99 <variablelist>
100 <varlistentry>
101 <term><errorcode>EINVAL</errorcode></term>
102 <listitem>
103 <para>The &v4l2-control; <structfield>id</structfield> is
104invalid or the <structfield>value</structfield> is inappropriate for
105the given control (i.e. if a menu item is selected that is not supported
106by the driver according to &VIDIOC-QUERYMENU;).</para>
107 </listitem>
108 </varlistentry>
109 <varlistentry>
110 <term><errorcode>ERANGE</errorcode></term>
111 <listitem>
112 <para>The &v4l2-control; <structfield>value</structfield>
113is out of bounds.</para>
114 </listitem>
115 </varlistentry>
116 <varlistentry>
117 <term><errorcode>EBUSY</errorcode></term>
118 <listitem>
119 <para>The control is temporarily not changeable, possibly
120because another applications took over control of the device function
121this control belongs to.</para>
122 </listitem>
123 </varlistentry>
124 <varlistentry>
125 <term><errorcode>EACCES</errorcode></term>
126 <listitem>
127 <para>Attempt to set a read-only control or to get a
128 write-only control.</para>
129 </listitem>
130 </varlistentry>
131 </variablelist>
132 </refsect1>
133</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
deleted file mode 100644
index 06952d7cc770..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ /dev/null
@@ -1,343 +0,0 @@
1<refentry id="vidioc-g-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_DV_TIMINGS</refname>
9 <refname>VIDIOC_S_DV_TIMINGS</refname>
10 <refname>VIDIOC_SUBDEV_G_DV_TIMINGS</refname>
11 <refname>VIDIOC_SUBDEV_S_DV_TIMINGS</refname>
12 <refpurpose>Get or set DV timings for input or output</refpurpose>
13 </refnamediv>
14
15 <refsynopsisdiv>
16 <funcsynopsis>
17 <funcprototype>
18 <funcdef>int <function>ioctl</function></funcdef>
19 <paramdef>int <parameter>fd</parameter></paramdef>
20 <paramdef>int <parameter>request</parameter></paramdef>
21 <paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef>
22 </funcprototype>
23 </funcsynopsis>
24 </refsynopsisdiv>
25
26 <refsect1>
27 <title>Arguments</title>
28
29 <variablelist>
30 <varlistentry>
31 <term><parameter>fd</parameter></term>
32 <listitem>
33 <para>&fd;</para>
34 </listitem>
35 </varlistentry>
36 <varlistentry>
37 <term><parameter>request</parameter></term>
38 <listitem>
39 <para>VIDIOC_G_DV_TIMINGS, VIDIOC_S_DV_TIMINGS, VIDIOC_SUBDEV_G_DV_TIMINGS, VIDIOC_SUBDEV_S_DV_TIMINGS</para>
40 </listitem>
41 </varlistentry>
42 <varlistentry>
43 <term><parameter>argp</parameter></term>
44 <listitem>
45 <para></para>
46 </listitem>
47 </varlistentry>
48 </variablelist>
49 </refsect1>
50
51 <refsect1>
52 <title>Description</title>
53 <para>To set DV timings for the input or output, applications use the
54<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current timings,
55applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing
56information is filled in using the structure &v4l2-dv-timings;. These ioctls take
57a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported
58or the timing values are not correct, the driver returns &EINVAL;.</para>
59<para>The <filename>linux/v4l2-dv-timings.h</filename> header can be used to get the
60timings of the formats in the <xref linkend="cea861" /> and <xref linkend="vesadmt" />
61standards. If the current input or output does not support DV timings (e.g. if
62&VIDIOC-ENUMINPUT; does not set the <constant>V4L2_IN_CAP_DV_TIMINGS</constant> flag), then
63&ENODATA; is returned.</para>
64 </refsect1>
65
66 <refsect1>
67 &return-value;
68
69 <variablelist>
70 <varlistentry>
71 <term><errorcode>EINVAL</errorcode></term>
72 <listitem>
73 <para>This ioctl is not supported, or the
74<constant>VIDIOC_S_DV_TIMINGS</constant> parameter was unsuitable.</para>
75 </listitem>
76 </varlistentry>
77 <varlistentry>
78 <term><errorcode>ENODATA</errorcode></term>
79 <listitem>
80 <para>Digital video timings are not supported for this input or output.</para>
81 </listitem>
82 </varlistentry>
83 <varlistentry>
84 <term><errorcode>EBUSY</errorcode></term>
85 <listitem>
86 <para>The device is busy and therefore can not change the timings.</para>
87 </listitem>
88 </varlistentry>
89 </variablelist>
90
91 <table pgwide="1" frame="none" id="v4l2-bt-timings">
92 <title>struct <structname>v4l2_bt_timings</structname></title>
93 <tgroup cols="3">
94 &cs-str;
95 <tbody valign="top">
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>width</structfield></entry>
99 <entry>Width of the active video in pixels.</entry>
100 </row>
101 <row>
102 <entry>__u32</entry>
103 <entry><structfield>height</structfield></entry>
104 <entry>Height of the active video frame in lines. So for interlaced formats the
105 height of the active video in each field is <structfield>height</structfield>/2.</entry>
106 </row>
107 <row>
108 <entry>__u32</entry>
109 <entry><structfield>interlaced</structfield></entry>
110 <entry>Progressive (0) or interlaced (1)</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>polarities</structfield></entry>
115 <entry>This is a bit mask that defines polarities of sync signals.
116bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_HSYNC_POS_POL) is for horizontal sync polarity. If the bit is set
117(1) it is positive polarity and if is cleared (0), it is negative polarity.</entry>
118 </row>
119 <row>
120 <entry>__u64</entry>
121 <entry><structfield>pixelclock</structfield></entry>
122 <entry>Pixel clock in Hz. Ex. 74.25MHz->74250000</entry>
123 </row>
124 <row>
125 <entry>__u32</entry>
126 <entry><structfield>hfrontporch</structfield></entry>
127 <entry>Horizontal front porch in pixels</entry>
128 </row>
129 <row>
130 <entry>__u32</entry>
131 <entry><structfield>hsync</structfield></entry>
132 <entry>Horizontal sync length in pixels</entry>
133 </row>
134 <row>
135 <entry>__u32</entry>
136 <entry><structfield>hbackporch</structfield></entry>
137 <entry>Horizontal back porch in pixels</entry>
138 </row>
139 <row>
140 <entry>__u32</entry>
141 <entry><structfield>vfrontporch</structfield></entry>
142 <entry>Vertical front porch in lines. For interlaced formats this refers to the
143 odd field (aka field 1).</entry>
144 </row>
145 <row>
146 <entry>__u32</entry>
147 <entry><structfield>vsync</structfield></entry>
148 <entry>Vertical sync length in lines. For interlaced formats this refers to the
149 odd field (aka field 1).</entry>
150 </row>
151 <row>
152 <entry>__u32</entry>
153 <entry><structfield>vbackporch</structfield></entry>
154 <entry>Vertical back porch in lines. For interlaced formats this refers to the
155 odd field (aka field 1).</entry>
156 </row>
157 <row>
158 <entry>__u32</entry>
159 <entry><structfield>il_vfrontporch</structfield></entry>
160 <entry>Vertical front porch in lines for the even field (aka field 2) of
161 interlaced field formats. Must be 0 for progressive formats.</entry>
162 </row>
163 <row>
164 <entry>__u32</entry>
165 <entry><structfield>il_vsync</structfield></entry>
166 <entry>Vertical sync length in lines for the even field (aka field 2) of
167 interlaced field formats. Must be 0 for progressive formats.</entry>
168 </row>
169 <row>
170 <entry>__u32</entry>
171 <entry><structfield>il_vbackporch</structfield></entry>
172 <entry>Vertical back porch in lines for the even field (aka field 2) of
173 interlaced field formats. Must be 0 for progressive formats.</entry>
174 </row>
175 <row>
176 <entry>__u32</entry>
177 <entry><structfield>standards</structfield></entry>
178 <entry>The video standard(s) this format belongs to. This will be filled in by
179 the driver. Applications must set this to 0. See <xref linkend="dv-bt-standards"/>
180 for a list of standards.</entry>
181 </row>
182 <row>
183 <entry>__u32</entry>
184 <entry><structfield>flags</structfield></entry>
185 <entry>Several flags giving more information about the format.
186 See <xref linkend="dv-bt-flags"/> for a description of the flags.
187 </entry>
188 </row>
189 </tbody>
190 </tgroup>
191 </table>
192
193 <table pgwide="1" frame="none" id="v4l2-dv-timings">
194 <title>struct <structname>v4l2_dv_timings</structname></title>
195 <tgroup cols="4">
196 &cs-str;
197 <tbody valign="top">
198 <row>
199 <entry>__u32</entry>
200 <entry><structfield>type</structfield></entry>
201 <entry></entry>
202 <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
203 </row>
204 <row>
205 <entry>union</entry>
206 <entry><structfield></structfield></entry>
207 <entry></entry>
208 </row>
209 <row>
210 <entry></entry>
211 <entry>&v4l2-bt-timings;</entry>
212 <entry><structfield>bt</structfield></entry>
213 <entry>Timings defined by BT.656/1120 specifications</entry>
214 </row>
215 <row>
216 <entry></entry>
217 <entry>__u32</entry>
218 <entry><structfield>reserved</structfield>[32]</entry>
219 <entry></entry>
220 </row>
221 </tbody>
222 </tgroup>
223 </table>
224
225 <table pgwide="1" frame="none" id="dv-timing-types">
226 <title>DV Timing types</title>
227 <tgroup cols="3">
228 &cs-str;
229 <tbody valign="top">
230 <row>
231 <entry>Timing type</entry>
232 <entry>value</entry>
233 <entry>Description</entry>
234 </row>
235 <row>
236 <entry></entry>
237 <entry></entry>
238 <entry></entry>
239 </row>
240 <row>
241 <entry>V4L2_DV_BT_656_1120</entry>
242 <entry>0</entry>
243 <entry>BT.656/1120 timings</entry>
244 </row>
245 </tbody>
246 </tgroup>
247 </table>
248 <table pgwide="1" frame="none" id="dv-bt-standards">
249 <title>DV BT Timing standards</title>
250 <tgroup cols="2">
251 &cs-str;
252 <tbody valign="top">
253 <row>
254 <entry>Timing standard</entry>
255 <entry>Description</entry>
256 </row>
257 <row>
258 <entry></entry>
259 <entry></entry>
260 </row>
261 <row>
262 <entry>V4L2_DV_BT_STD_CEA861</entry>
263 <entry>The timings follow the CEA-861 Digital TV Profile standard</entry>
264 </row>
265 <row>
266 <entry>V4L2_DV_BT_STD_DMT</entry>
267 <entry>The timings follow the VESA Discrete Monitor Timings standard</entry>
268 </row>
269 <row>
270 <entry>V4L2_DV_BT_STD_CVT</entry>
271 <entry>The timings follow the VESA Coordinated Video Timings standard</entry>
272 </row>
273 <row>
274 <entry>V4L2_DV_BT_STD_GTF</entry>
275 <entry>The timings follow the VESA Generalized Timings Formula standard</entry>
276 </row>
277 </tbody>
278 </tgroup>
279 </table>
280 <table pgwide="1" frame="none" id="dv-bt-flags">
281 <title>DV BT Timing flags</title>
282 <tgroup cols="2">
283 &cs-str;
284 <tbody valign="top">
285 <row>
286 <entry>Flag</entry>
287 <entry>Description</entry>
288 </row>
289 <row>
290 <entry></entry>
291 <entry></entry>
292 </row>
293 <row>
294 <entry>V4L2_DV_FL_REDUCED_BLANKING</entry>
295 <entry>CVT/GTF specific: the timings use reduced blanking (CVT) or the 'Secondary
296GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
297intervals are reduced, allowing a higher resolution over the same
298bandwidth. This is a read-only flag, applications must not set this.
299 </entry>
300 </row>
301 <row>
302 <entry>V4L2_DV_FL_CAN_REDUCE_FPS</entry>
303 <entry>CEA-861 specific: set for CEA-861 formats with a framerate that is a multiple
304of six. These formats can be optionally played at 1 / 1.001 speed to
305be compatible with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
30629.97 frames per second. If the transmitter can't generate such frequencies, then the
307flag will also be cleared. This is a read-only flag, applications must not set this.
308 </entry>
309 </row>
310 <row>
311 <entry>V4L2_DV_FL_REDUCED_FPS</entry>
312 <entry>CEA-861 specific: only valid for video transmitters, the flag is cleared
313by receivers. It is also only valid for formats with the V4L2_DV_FL_CAN_REDUCE_FPS flag
314set, for other formats the flag will be cleared by the driver.
315
316If the application sets this flag, then the pixelclock used to set up the transmitter is
317divided by 1.001 to make it compatible with NTSC framerates. If the transmitter
318can't generate such frequencies, then the flag will also be cleared.
319 </entry>
320 </row>
321 <row>
322 <entry>V4L2_DV_FL_HALF_LINE</entry>
323 <entry>Specific to interlaced formats: if set, then the vertical frontporch
324of field 1 (aka the odd field) is really one half-line longer and the vertical backporch
325of field 2 (aka the even field) is really one half-line shorter, so each field has exactly
326the same number of half-lines. Whether half-lines can be detected or used depends on
327the hardware.
328 </entry>
329 </row>
330 <row>
331 <entry>V4L2_DV_FL_IS_CE_VIDEO</entry>
332 <entry>If set, then this is a Consumer Electronics (CE) video format.
333Such formats differ from other formats (commonly called IT formats) in that if
334R'G'B' encoding is used then by default the R'G'B' values use limited range
335(i.e. 16-235) as opposed to full range (i.e. 0-255). All formats defined in CEA-861
336except for the 640x480p59.94 format are CE formats.
337 </entry>
338 </row>
339 </tbody>
340 </tgroup>
341 </table>
342 </refsect1>
343</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-edid.xml b/Documentation/DocBook/media/v4l/vidioc-g-edid.xml
deleted file mode 100644
index b7602d30f596..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-edid.xml
+++ /dev/null
@@ -1,173 +0,0 @@
1<refentry id="vidioc-g-edid">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_EDID, VIDIOC_S_EDID, VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_S_EDID</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_EDID</refname>
9 <refname>VIDIOC_S_EDID</refname>
10 <refname>VIDIOC_SUBDEV_G_EDID</refname>
11 <refname>VIDIOC_SUBDEV_S_EDID</refname>
12 <refpurpose>Get or set the EDID of a video receiver/transmitter</refpurpose>
13 </refnamediv>
14
15 <refsynopsisdiv>
16 <funcsynopsis>
17 <funcprototype>
18 <funcdef>int <function>ioctl</function></funcdef>
19 <paramdef>int <parameter>fd</parameter></paramdef>
20 <paramdef>int <parameter>request</parameter></paramdef>
21 <paramdef>struct v4l2_edid *<parameter>argp</parameter></paramdef>
22 </funcprototype>
23 </funcsynopsis>
24 <funcsynopsis>
25 <funcprototype>
26 <funcdef>int <function>ioctl</function></funcdef>
27 <paramdef>int <parameter>fd</parameter></paramdef>
28 <paramdef>int <parameter>request</parameter></paramdef>
29 <paramdef>struct v4l2_edid *<parameter>argp</parameter></paramdef>
30 </funcprototype>
31 </funcsynopsis>
32 </refsynopsisdiv>
33
34 <refsect1>
35 <title>Arguments</title>
36
37 <variablelist>
38 <varlistentry>
39 <term><parameter>fd</parameter></term>
40 <listitem>
41 <para>&fd;</para>
42 </listitem>
43 </varlistentry>
44 <varlistentry>
45 <term><parameter>request</parameter></term>
46 <listitem>
47 <para>VIDIOC_G_EDID, VIDIOC_S_EDID, VIDIOC_SUBDEV_G_EDID, VIDIOC_SUBDEV_S_EDID</para>
48 </listitem>
49 </varlistentry>
50 <varlistentry>
51 <term><parameter>argp</parameter></term>
52 <listitem>
53 <para></para>
54 </listitem>
55 </varlistentry>
56 </variablelist>
57 </refsect1>
58
59 <refsect1>
60 <title>Description</title>
61 <para>These ioctls can be used to get or set an EDID associated with an input
62 from a receiver or an output of a transmitter device. They can be
63 used with subdevice nodes (/dev/v4l-subdevX) or with video nodes (/dev/videoX).</para>
64
65 <para>When used with video nodes the <structfield>pad</structfield> field represents the
66 input (for video capture devices) or output (for video output devices) index as
67 is returned by &VIDIOC-ENUMINPUT; and &VIDIOC-ENUMOUTPUT; respectively. When used
68 with subdevice nodes the <structfield>pad</structfield> field represents the
69 input or output pad of the subdevice. If there is no EDID support for the given
70 <structfield>pad</structfield> value, then the &EINVAL; will be returned.</para>
71
72 <para>To get the EDID data the application has to fill in the <structfield>pad</structfield>,
73 <structfield>start_block</structfield>, <structfield>blocks</structfield> and <structfield>edid</structfield>
74 fields, zero the <structfield>reserved</structfield> array and call
75 <constant>VIDIOC_G_EDID</constant>. The current EDID from block
76 <structfield>start_block</structfield> and of size <structfield>blocks</structfield>
77 will be placed in the memory <structfield>edid</structfield> points to. The <structfield>edid</structfield>
78 pointer must point to memory at least <structfield>blocks</structfield>&nbsp;*&nbsp;128 bytes
79 large (the size of one block is 128 bytes).</para>
80
81 <para>If there are fewer blocks than specified, then the driver will set <structfield>blocks</structfield>
82 to the actual number of blocks. If there are no EDID blocks available at all, then the error code
83 ENODATA is set.</para>
84
85 <para>If blocks have to be retrieved from the sink, then this call will block until they
86 have been read.</para>
87
88 <para>If <structfield>start_block</structfield> and <structfield>blocks</structfield> are
89 both set to 0 when <constant>VIDIOC_G_EDID</constant> is called, then the driver will
90 set <structfield>blocks</structfield> to the total number of available EDID blocks
91 and it will return 0 without copying any data. This is an easy way to discover how many
92 EDID blocks there are. Note that if there are no EDID blocks available at all, then
93 the driver will set <structfield>blocks</structfield> to 0 and it returns 0.</para>
94
95 <para>To set the EDID blocks of a receiver the application has to fill in the <structfield>pad</structfield>,
96 <structfield>blocks</structfield> and <structfield>edid</structfield> fields, set
97 <structfield>start_block</structfield> to 0 and zero the <structfield>reserved</structfield> array.
98 It is not possible to set part of an EDID,
99 it is always all or nothing. Setting the EDID data is only valid for receivers as it makes
100 no sense for a transmitter.</para>
101
102 <para>The driver assumes that the full EDID is passed in. If there are more EDID blocks than
103 the hardware can handle then the EDID is not written, but instead the error code E2BIG is set
104 and <structfield>blocks</structfield> is set to the maximum that the hardware supports.
105 If <structfield>start_block</structfield> is any
106 value other than 0 then the error code EINVAL is set.</para>
107
108 <para>To disable an EDID you set <structfield>blocks</structfield> to 0. Depending on the
109 hardware this will drive the hotplug pin low and/or block the source from reading the EDID
110 data in some way. In any case, the end result is the same: the EDID is no longer available.
111 </para>
112
113 <table pgwide="1" frame="none" id="v4l2-edid">
114 <title>struct <structname>v4l2_edid</structname></title>
115 <tgroup cols="3">
116 &cs-str;
117 <tbody valign="top">
118 <row>
119 <entry>__u32</entry>
120 <entry><structfield>pad</structfield></entry>
121 <entry>Pad for which to get/set the EDID blocks. When used with a video device
122 node the pad represents the input or output index as returned by
123 &VIDIOC-ENUMINPUT; and &VIDIOC-ENUMOUTPUT; respectively.</entry>
124 </row>
125 <row>
126 <entry>__u32</entry>
127 <entry><structfield>start_block</structfield></entry>
128 <entry>Read the EDID from starting with this block. Must be 0 when setting
129 the EDID.</entry>
130 </row>
131 <row>
132 <entry>__u32</entry>
133 <entry><structfield>blocks</structfield></entry>
134 <entry>The number of blocks to get or set. Must be less or equal to 256 (the
135 maximum number of blocks as defined by the standard). When you set the EDID and
136 <structfield>blocks</structfield> is 0, then the EDID is disabled or erased.</entry>
137 </row>
138 <row>
139 <entry>__u32</entry>
140 <entry><structfield>reserved</structfield>[5]</entry>
141 <entry>Reserved for future extensions. Applications and drivers must
142 set the array to zero.</entry>
143 </row>
144 <row>
145 <entry>__u8&nbsp;*</entry>
146 <entry><structfield>edid</structfield></entry>
147 <entry>Pointer to memory that contains the EDID. The minimum size is
148 <structfield>blocks</structfield>&nbsp;*&nbsp;128.</entry>
149 </row>
150 </tbody>
151 </tgroup>
152 </table>
153 </refsect1>
154
155 <refsect1>
156 &return-value;
157
158 <variablelist>
159 <varlistentry>
160 <term><errorcode>ENODATA</errorcode></term>
161 <listitem>
162 <para>The EDID data is not available.</para>
163 </listitem>
164 </varlistentry>
165 <varlistentry>
166 <term><errorcode>E2BIG</errorcode></term>
167 <listitem>
168 <para>The EDID data you provided is more than the hardware can handle.</para>
169 </listitem>
170 </varlistentry>
171 </variablelist>
172 </refsect1>
173</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml b/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml
deleted file mode 100644
index be25029a16f1..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-enc-index.xml
+++ /dev/null
@@ -1,189 +0,0 @@
1<refentry id="vidioc-g-enc-index">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_ENC_INDEX</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_ENC_INDEX</refname>
9 <refpurpose>Get meta data about a compressed video stream</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_enc_idx *<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_G_ENC_INDEX</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 <para>The <constant>VIDIOC_G_ENC_INDEX</constant> ioctl provides
52meta data about a compressed video stream the same or another
53application currently reads from the driver, which is useful for
54random access into the stream without decoding it.</para>
55
56 <para>To read the data applications must call
57<constant>VIDIOC_G_ENC_INDEX</constant> with a pointer to a
58&v4l2-enc-idx;. On success the driver fills the
59<structfield>entry</structfield> array, stores the number of elements
60written in the <structfield>entries</structfield> field, and
61initializes the <structfield>entries_cap</structfield> field.</para>
62
63 <para>Each element of the <structfield>entry</structfield> array
64contains meta data about one picture. A
65<constant>VIDIOC_G_ENC_INDEX</constant> call reads up to
66<constant>V4L2_ENC_IDX_ENTRIES</constant> entries from a driver
67buffer, which can hold up to <structfield>entries_cap</structfield>
68entries. This number can be lower or higher than
69<constant>V4L2_ENC_IDX_ENTRIES</constant>, but not zero. When the
70application fails to read the meta data in time the oldest entries
71will be lost. When the buffer is empty or no capturing/encoding is in
72progress, <structfield>entries</structfield> will be zero.</para>
73
74 <para>Currently this ioctl is only defined for MPEG-2 program
75streams and video elementary streams.</para>
76
77 <table pgwide="1" frame="none" id="v4l2-enc-idx">
78 <title>struct <structname>v4l2_enc_idx</structname></title>
79 <tgroup cols="3">
80 &cs-str;
81 <tbody valign="top">
82 <row>
83 <entry>__u32</entry>
84 <entry><structfield>entries</structfield></entry>
85 <entry>The number of entries the driver stored in the
86<structfield>entry</structfield> array.</entry>
87 </row>
88 <row>
89 <entry>__u32</entry>
90 <entry><structfield>entries_cap</structfield></entry>
91 <entry>The number of entries the driver can
92buffer. Must be greater than zero.</entry>
93 </row>
94 <row>
95 <entry>__u32</entry>
96 <entry><structfield>reserved</structfield>[4]</entry>
97 <entry spanname="hspan">Reserved for future extensions.
98Drivers must set the array to zero.</entry>
99 </row>
100 <row>
101 <entry>&v4l2-enc-idx-entry;</entry>
102 <entry><structfield>entry</structfield>[<constant>V4L2_ENC_IDX_ENTRIES</constant>]</entry>
103 <entry>Meta data about a compressed video stream. Each
104element of the array corresponds to one picture, sorted in ascending
105order by their <structfield>offset</structfield>.</entry>
106 </row>
107 </tbody>
108 </tgroup>
109 </table>
110
111 <table pgwide="1" frame="none" id="v4l2-enc-idx-entry">
112 <title>struct <structname>v4l2_enc_idx_entry</structname></title>
113 <tgroup cols="3">
114 &cs-str;
115 <tbody valign="top">
116 <row>
117 <entry>__u64</entry>
118 <entry><structfield>offset</structfield></entry>
119 <entry>The offset in bytes from the beginning of the
120compressed video stream to the beginning of this picture, that is a
121<wordasword>PES packet header</wordasword> as defined in <xref
122 linkend="mpeg2part1" /> or a <wordasword>picture
123header</wordasword> as defined in <xref linkend="mpeg2part2" />. When
124the encoder is stopped, the driver resets the offset to zero.</entry>
125 </row>
126 <row>
127 <entry>__u64</entry>
128 <entry><structfield>pts</structfield></entry>
129 <entry>The 33 bit <wordasword>Presentation Time
130Stamp</wordasword> of this picture as defined in <xref
131 linkend="mpeg2part1" />.</entry>
132 </row>
133 <row>
134 <entry>__u32</entry>
135 <entry><structfield>length</structfield></entry>
136 <entry>The length of this picture in bytes.</entry>
137 </row>
138 <row>
139 <entry>__u32</entry>
140 <entry><structfield>flags</structfield></entry>
141 <entry>Flags containing the coding type of this picture, see <xref
142 linkend="enc-idx-flags" />.</entry>
143 </row>
144 <row>
145 <entry>__u32</entry>
146 <entry><structfield>reserved</structfield>[2]</entry>
147 <entry>Reserved for future extensions.
148Drivers must set the array to zero.</entry>
149 </row>
150 </tbody>
151 </tgroup>
152 </table>
153
154 <table pgwide="1" frame="none" id="enc-idx-flags">
155 <title>Index Entry Flags</title>
156 <tgroup cols="3">
157 &cs-def;
158 <tbody valign="top">
159 <row>
160 <entry><constant>V4L2_ENC_IDX_FRAME_I</constant></entry>
161 <entry>0x00</entry>
162 <entry>This is an Intra-coded picture.</entry>
163 </row>
164 <row>
165 <entry><constant>V4L2_ENC_IDX_FRAME_P</constant></entry>
166 <entry>0x01</entry>
167 <entry>This is a Predictive-coded picture.</entry>
168 </row>
169 <row>
170 <entry><constant>V4L2_ENC_IDX_FRAME_B</constant></entry>
171 <entry>0x02</entry>
172 <entry>This is a Bidirectionally predictive-coded
173picture.</entry>
174 </row>
175 <row>
176 <entry><constant>V4L2_ENC_IDX_FRAME_MASK</constant></entry>
177 <entry>0x0F</entry>
178 <entry><wordasword>AND</wordasword> the flags field with
179this mask to obtain the picture coding type.</entry>
180 </row>
181 </tbody>
182 </tgroup>
183 </table>
184 </refsect1>
185
186 <refsect1>
187 &return-value;
188 </refsect1>
189</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
deleted file mode 100644
index eb82f7e7d06b..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
+++ /dev/null
@@ -1,456 +0,0 @@
1<refentry id="vidioc-g-ext-ctrls">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS,
4VIDIOC_TRY_EXT_CTRLS</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_G_EXT_CTRLS</refname>
10 <refname>VIDIOC_S_EXT_CTRLS</refname>
11 <refname>VIDIOC_TRY_EXT_CTRLS</refname>
12 <refpurpose>Get or set the value of several controls, try control
13values</refpurpose>
14 </refnamediv>
15
16 <refsynopsisdiv>
17 <funcsynopsis>
18 <funcprototype>
19 <funcdef>int <function>ioctl</function></funcdef>
20 <paramdef>int <parameter>fd</parameter></paramdef>
21 <paramdef>int <parameter>request</parameter></paramdef>
22 <paramdef>struct v4l2_ext_controls
23*<parameter>argp</parameter></paramdef>
24 </funcprototype>
25 </funcsynopsis>
26 </refsynopsisdiv>
27
28 <refsect1>
29 <title>Arguments</title>
30
31 <variablelist>
32 <varlistentry>
33 <term><parameter>fd</parameter></term>
34 <listitem>
35 <para>&fd;</para>
36 </listitem>
37 </varlistentry>
38 <varlistentry>
39 <term><parameter>request</parameter></term>
40 <listitem>
41 <para>VIDIOC_G_EXT_CTRLS, VIDIOC_S_EXT_CTRLS,
42VIDIOC_TRY_EXT_CTRLS</para>
43 </listitem>
44 </varlistentry>
45 <varlistentry>
46 <term><parameter>argp</parameter></term>
47 <listitem>
48 <para></para>
49 </listitem>
50 </varlistentry>
51 </variablelist>
52 </refsect1>
53
54 <refsect1>
55 <title>Description</title>
56
57 <para>These ioctls allow the caller to get or set multiple
58controls atomically. Control IDs are grouped into control classes (see
59<xref linkend="ctrl-class" />) and all controls in the control array
60must belong to the same control class.</para>
61
62 <para>Applications must always fill in the
63<structfield>count</structfield>,
64<structfield>which</structfield>,
65<structfield>controls</structfield> and
66<structfield>reserved</structfield> fields of &v4l2-ext-controls;, and
67initialize the &v4l2-ext-control; array pointed to by the
68<structfield>controls</structfield> fields.</para>
69
70 <para>To get the current value of a set of controls applications
71initialize the <structfield>id</structfield>,
72<structfield>size</structfield> and <structfield>reserved2</structfield> fields
73of each &v4l2-ext-control; and call the
74<constant>VIDIOC_G_EXT_CTRLS</constant> ioctl. String controls controls
75must also set the <structfield>string</structfield> field. Controls
76of compound types (<constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is set)
77must set the <structfield>ptr</structfield> field.</para>
78
79 <para>If the <structfield>size</structfield> is too small to
80receive the control result (only relevant for pointer-type controls
81like strings), then the driver will set <structfield>size</structfield>
82to a valid value and return an &ENOSPC;. You should re-allocate the
83memory to this new size and try again. For the string type it is possible that
84the same issue occurs again if the string has grown in the meantime. It is
85recommended to call &VIDIOC-QUERYCTRL; first and use
86<structfield>maximum</structfield>+1 as the new <structfield>size</structfield>
87value. It is guaranteed that that is sufficient memory.
88</para>
89
90 <para>N-dimensional arrays are set and retrieved row-by-row. You cannot set a partial
91array, all elements have to be set or retrieved. The total size is calculated
92as <structfield>elems</structfield> * <structfield>elem_size</structfield>.
93These values can be obtained by calling &VIDIOC-QUERY-EXT-CTRL;.</para>
94
95 <para>To change the value of a set of controls applications
96initialize the <structfield>id</structfield>, <structfield>size</structfield>,
97<structfield>reserved2</structfield> and
98<structfield>value/value64/string/ptr</structfield> fields of each &v4l2-ext-control; and
99call the <constant>VIDIOC_S_EXT_CTRLS</constant> ioctl. The controls
100will only be set if <emphasis>all</emphasis> control values are
101valid.</para>
102
103 <para>To check if a set of controls have correct values applications
104initialize the <structfield>id</structfield>, <structfield>size</structfield>,
105<structfield>reserved2</structfield> and
106<structfield>value/value64/string/ptr</structfield> fields of each &v4l2-ext-control; and
107call the <constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctl. It is up to
108the driver whether wrong values are automatically adjusted to a valid
109value or if an error is returned.</para>
110
111 <para>When the <structfield>id</structfield> or
112<structfield>which</structfield> is invalid drivers return an
113&EINVAL;. When the value is out of bounds drivers can choose to take
114the closest valid value or return an &ERANGE;, whatever seems more
115appropriate. In the first case the new value is set in
116&v4l2-ext-control;. If the new control value is inappropriate (e.g. the
117given menu index is not supported by the menu control), then this will
118also result in an &EINVAL; error.</para>
119
120 <para>The driver will only set/get these controls if all control
121values are correct. This prevents the situation where only some of the
122controls were set/get. Only low-level errors (&eg; a failed i2c
123command) can still cause this situation.</para>
124
125 <table pgwide="1" frame="none" id="v4l2-ext-control">
126 <title>struct <structname>v4l2_ext_control</structname></title>
127 <tgroup cols="4">
128 &cs-ustr;
129 <tbody valign="top">
130 <row>
131 <entry>__u32</entry>
132 <entry><structfield>id</structfield></entry>
133 <entry></entry>
134 <entry>Identifies the control, set by the
135application.</entry>
136 </row>
137 <row>
138 <entry>__u32</entry>
139 <entry><structfield>size</structfield></entry>
140 <entry></entry>
141 <entry>The total size in bytes of the payload of this
142control. This is normally 0, but for pointer controls this should be
143set to the size of the memory containing the payload, or that will
144receive the payload. If <constant>VIDIOC_G_EXT_CTRLS</constant> finds
145that this value is less than is required to store
146the payload result, then it is set to a value large enough to store the
147payload result and ENOSPC is returned. Note that for string controls
148this <structfield>size</structfield> field should not be confused with the length of the string.
149This field refers to the size of the memory that contains the string.
150The actual <emphasis>length</emphasis> of the string may well be much smaller.
151</entry>
152 </row>
153 <row>
154 <entry>__u32</entry>
155 <entry><structfield>reserved2</structfield>[1]</entry>
156 <entry></entry>
157 <entry>Reserved for future extensions. Drivers and
158applications must set the array to zero.</entry>
159 </row>
160 <row>
161 <entry>union</entry>
162 <entry>(anonymous)</entry>
163 </row>
164 <row>
165 <entry></entry>
166 <entry>__s32</entry>
167 <entry><structfield>value</structfield></entry>
168 <entry>New value or current value. Valid if this control is not of
169type <constant>V4L2_CTRL_TYPE_INTEGER64</constant> and
170<constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is not set.</entry>
171 </row>
172 <row>
173 <entry></entry>
174 <entry>__s64</entry>
175 <entry><structfield>value64</structfield></entry>
176 <entry>New value or current value. Valid if this control is of
177type <constant>V4L2_CTRL_TYPE_INTEGER64</constant> and
178<constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is not set.</entry>
179 </row>
180 <row>
181 <entry></entry>
182 <entry>char *</entry>
183 <entry><structfield>string</structfield></entry>
184 <entry>A pointer to a string. Valid if this control is of
185type <constant>V4L2_CTRL_TYPE_STRING</constant>.</entry>
186 </row>
187 <row>
188 <entry></entry>
189 <entry>__u8 *</entry>
190 <entry><structfield>p_u8</structfield></entry>
191 <entry>A pointer to a matrix control of unsigned 8-bit values.
192Valid if this control is of type <constant>V4L2_CTRL_TYPE_U8</constant>.</entry>
193 </row>
194 <row>
195 <entry></entry>
196 <entry>__u16 *</entry>
197 <entry><structfield>p_u16</structfield></entry>
198 <entry>A pointer to a matrix control of unsigned 16-bit values.
199Valid if this control is of type <constant>V4L2_CTRL_TYPE_U16</constant>.</entry>
200 </row>
201 <row>
202 <entry></entry>
203 <entry>__u32 *</entry>
204 <entry><structfield>p_u32</structfield></entry>
205 <entry>A pointer to a matrix control of unsigned 32-bit values.
206Valid if this control is of type <constant>V4L2_CTRL_TYPE_U32</constant>.</entry>
207 </row>
208 <row>
209 <entry></entry>
210 <entry>void *</entry>
211 <entry><structfield>ptr</structfield></entry>
212 <entry>A pointer to a compound type which can be an N-dimensional array and/or a
213compound type (the control's type is >= <constant>V4L2_CTRL_COMPOUND_TYPES</constant>).
214Valid if <constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant> is set for this control.
215</entry>
216 </row>
217 </tbody>
218 </tgroup>
219 </table>
220
221 <table pgwide="1" frame="none" id="v4l2-ext-controls">
222 <title>struct <structname>v4l2_ext_controls</structname></title>
223 <tgroup cols="3">
224 &cs-str;
225 <tbody valign="top">
226 <row>
227 <entry>union</entry>
228 <entry>(anonymous)</entry>
229 </row>
230 <row>
231 <entry></entry>
232 <entry>__u32</entry>
233 <entry><structfield>ctrl_class</structfield></entry>
234 <entry>The control class to which all controls belong, see
235<xref linkend="ctrl-class" />. Drivers that use a kernel framework for handling
236controls will also accept a value of 0 here, meaning that the controls can
237belong to any control class. Whether drivers support this can be tested by setting
238<structfield>ctrl_class</structfield> to 0 and calling <constant>VIDIOC_TRY_EXT_CTRLS</constant>
239with a <structfield>count</structfield> of 0. If that succeeds, then the driver
240supports this feature.</entry>
241 </row>
242 <row>
243 <entry></entry>
244 <entry>__u32</entry>
245 <entry><structfield>which</structfield></entry>
246 <entry><para>Which value of the control to get/set/try. <constant>V4L2_CTRL_WHICH_CUR_VAL</constant>
247will return the current value of the control and <constant>V4L2_CTRL_WHICH_DEF_VAL</constant> will
248return the default value of the control. Please note that you can only get the default value of the
249control, you cannot set or try it.</para>
250<para>For backwards compatibility you can also use a control class here (see
251<xref linkend="ctrl-class" />). In that case all controls have to belong to that
252control class. This usage is deprecated, instead just use <constant>V4L2_CTRL_WHICH_CUR_VAL</constant>.
253There are some very old drivers that do not yet support <constant>V4L2_CTRL_WHICH_CUR_VAL</constant>
254and that require a control class here. You can test for such drivers by setting ctrl_class to
255<constant>V4L2_CTRL_WHICH_CUR_VAL</constant> and calling VIDIOC_TRY_EXT_CTRLS with a count of 0.
256If that fails, then the driver does not support <constant>V4L2_CTRL_WHICH_CUR_VAL</constant>.</para>
257</entry>
258 </row>
259 <row>
260 <entry>__u32</entry>
261 <entry><structfield>count</structfield></entry>
262 <entry>The number of controls in the controls array. May
263also be zero.</entry>
264 </row>
265 <row>
266 <entry>__u32</entry>
267 <entry><structfield>error_idx</structfield></entry>
268 <entry><para>Set by the driver in case of an error. If the error is
269associated with a particular control, then <structfield>error_idx</structfield>
270is set to the index of that control. If the error is not related to a specific
271control, or the validation step failed (see below), then
272<structfield>error_idx</structfield> is set to <structfield>count</structfield>.
273The value is undefined if the ioctl returned 0 (success).</para>
274
275<para>Before controls are read from/written to hardware a validation step
276takes place: this checks if all controls in the list are valid controls,
277if no attempt is made to write to a read-only control or read from a write-only
278control, and any other up-front checks that can be done without accessing the
279hardware. The exact validations done during this step are driver dependent
280since some checks might require hardware access for some devices, thus making
281it impossible to do those checks up-front. However, drivers should make a
282best-effort to do as many up-front checks as possible.</para>
283
284<para>This check is done to avoid leaving the hardware in an inconsistent state due
285to easy-to-avoid problems. But it leads to another problem: the application needs to
286know whether an error came from the validation step (meaning that the hardware
287was not touched) or from an error during the actual reading from/writing to hardware.</para>
288
289<para>The, in hindsight quite poor, solution for that is to set <structfield>error_idx</structfield>
290to <structfield>count</structfield> if the validation failed. This has the
291unfortunate side-effect that it is not possible to see which control failed the
292validation. If the validation was successful and the error happened while
293accessing the hardware, then <structfield>error_idx</structfield> is less than
294<structfield>count</structfield> and only the controls up to
295<structfield>error_idx-1</structfield> were read or written correctly, and the
296state of the remaining controls is undefined.</para>
297
298<para>Since <constant>VIDIOC_TRY_EXT_CTRLS</constant> does not access hardware
299there is also no need to handle the validation step in this special way,
300so <structfield>error_idx</structfield> will just be set to the control that
301failed the validation step instead of to <structfield>count</structfield>.
302This means that if <constant>VIDIOC_S_EXT_CTRLS</constant> fails with
303<structfield>error_idx</structfield> set to <structfield>count</structfield>,
304then you can call <constant>VIDIOC_TRY_EXT_CTRLS</constant> to try to discover
305the actual control that failed the validation step. Unfortunately, there
306is no <constant>TRY</constant> equivalent for <constant>VIDIOC_G_EXT_CTRLS</constant>.
307</para></entry>
308 </row>
309 <row>
310 <entry>__u32</entry>
311 <entry><structfield>reserved</structfield>[2]</entry>
312 <entry>Reserved for future extensions. Drivers and
313applications must set the array to zero.</entry>
314 </row>
315 <row>
316 <entry>&v4l2-ext-control; *</entry>
317 <entry><structfield>controls</structfield></entry>
318 <entry>Pointer to an array of
319<structfield>count</structfield> v4l2_ext_control structures. Ignored
320if <structfield>count</structfield> equals zero.</entry>
321 </row>
322 </tbody>
323 </tgroup>
324 </table>
325
326 <table pgwide="1" frame="none" id="ctrl-class">
327 <title>Control classes</title>
328 <tgroup cols="3">
329 &cs-def;
330 <tbody valign="top">
331 <row>
332 <entry><constant>V4L2_CTRL_CLASS_USER</constant></entry>
333 <entry>0x980000</entry>
334 <entry>The class containing user controls. These controls
335are described in <xref linkend="control" />. All controls that can be set
336using the &VIDIOC-S-CTRL; and &VIDIOC-G-CTRL; ioctl belong to this
337class.</entry>
338 </row>
339 <row>
340 <entry><constant>V4L2_CTRL_CLASS_MPEG</constant></entry>
341 <entry>0x990000</entry>
342 <entry>The class containing MPEG compression controls.
343These controls are described in <xref
344 linkend="mpeg-controls" />.</entry>
345 </row>
346 <row>
347 <entry><constant>V4L2_CTRL_CLASS_CAMERA</constant></entry>
348 <entry>0x9a0000</entry>
349 <entry>The class containing camera controls.
350These controls are described in <xref
351 linkend="camera-controls" />.</entry>
352 </row>
353 <row>
354 <entry><constant>V4L2_CTRL_CLASS_FM_TX</constant></entry>
355 <entry>0x9b0000</entry>
356 <entry>The class containing FM Transmitter (FM TX) controls.
357These controls are described in <xref
358 linkend="fm-tx-controls" />.</entry>
359 </row>
360 <row>
361 <entry><constant>V4L2_CTRL_CLASS_FLASH</constant></entry>
362 <entry>0x9c0000</entry>
363 <entry>The class containing flash device controls.
364These controls are described in <xref
365 linkend="flash-controls" />.</entry>
366 </row>
367 <row>
368 <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
369 <entry>0x9d0000</entry>
370 <entry>The class containing JPEG compression controls.
371These controls are described in <xref
372 linkend="jpeg-controls" />.</entry>
373 </row>
374 <row>
375 <entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry>
376 <entry>0x9e0000</entry> <entry>The class containing image
377 source controls. These controls are described in <xref
378 linkend="image-source-controls" />.</entry>
379 </row>
380 <row>
381 <entry><constant>V4L2_CTRL_CLASS_IMAGE_PROC</constant></entry>
382 <entry>0x9f0000</entry> <entry>The class containing image
383 processing controls. These controls are described in <xref
384 linkend="image-process-controls" />.</entry>
385 </row>
386
387 <row>
388 <entry><constant>V4L2_CTRL_CLASS_FM_RX</constant></entry>
389 <entry>0xa10000</entry>
390 <entry>The class containing FM Receiver (FM RX) controls.
391These controls are described in <xref
392 linkend="fm-rx-controls" />.</entry>
393 </row>
394 <row>
395 <entry><constant>V4L2_CTRL_CLASS_RF_TUNER</constant></entry>
396 <entry>0xa20000</entry>
397 <entry>The class containing RF tuner controls.
398These controls are described in <xref linkend="rf-tuner-controls" />.</entry>
399 </row>
400 </tbody>
401 </tgroup>
402 </table>
403
404 </refsect1>
405
406 <refsect1>
407 &return-value;
408
409 <variablelist>
410 <varlistentry>
411 <term><errorcode>EINVAL</errorcode></term>
412 <listitem>
413 <para>The &v4l2-ext-control; <structfield>id</structfield>
414is invalid, the &v4l2-ext-controls;
415<structfield>which</structfield> is invalid, or the &v4l2-ext-control;
416<structfield>value</structfield> was inappropriate (e.g. the given menu
417index is not supported by the driver). This error code is
418also returned by the <constant>VIDIOC_S_EXT_CTRLS</constant> and
419<constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctls if two or more
420control values are in conflict.</para>
421 </listitem>
422 </varlistentry>
423 <varlistentry>
424 <term><errorcode>ERANGE</errorcode></term>
425 <listitem>
426 <para>The &v4l2-ext-control; <structfield>value</structfield>
427is out of bounds.</para>
428 </listitem>
429 </varlistentry>
430 <varlistentry>
431 <term><errorcode>EBUSY</errorcode></term>
432 <listitem>
433 <para>The control is temporarily not changeable, possibly
434because another applications took over control of the device function
435this control belongs to.</para>
436 </listitem>
437 </varlistentry>
438 <varlistentry>
439 <term><errorcode>ENOSPC</errorcode></term>
440 <listitem>
441 <para>The space reserved for the control's payload is insufficient.
442The field <structfield>size</structfield> is set to a value that is enough
443to store the payload and this error code is returned.</para>
444 </listitem>
445 </varlistentry>
446 <varlistentry>
447 <term><errorcode>EACCES</errorcode></term>
448 <listitem>
449 <para>Attempt to try or set a read-only control or to get a
450 write-only control.</para>
451 </listitem>
452 </varlistentry>
453 </variablelist>
454 </refsect1>
455</refentry>
456
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml b/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
deleted file mode 100644
index 77607cc19688..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-fbuf.xml
+++ /dev/null
@@ -1,459 +0,0 @@
1<refentry id="vidioc-g-fbuf">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_FBUF, VIDIOC_S_FBUF</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_FBUF</refname>
9 <refname>VIDIOC_S_FBUF</refname>
10 <refpurpose>Get or set frame buffer overlay parameters</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_framebuffer *<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_framebuffer *<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_G_FBUF, VIDIOC_S_FBUF</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
60 <para>Applications can use the <constant>VIDIOC_G_FBUF</constant> and
61<constant>VIDIOC_S_FBUF</constant> ioctl to get and set the
62framebuffer parameters for a <link linkend="overlay">Video
63Overlay</link> or <link linkend="osd">Video Output Overlay</link>
64(OSD). The type of overlay is implied by the device type (capture or
65output device) and can be determined with the &VIDIOC-QUERYCAP; ioctl.
66One <filename>/dev/videoN</filename> device must not support both
67kinds of overlay.</para>
68
69 <para>The V4L2 API distinguishes destructive and non-destructive
70overlays. A destructive overlay copies captured video images into the
71video memory of a graphics card. A non-destructive overlay blends
72video images into a VGA signal or graphics into a video signal.
73<wordasword>Video Output Overlays</wordasword> are always
74non-destructive.</para>
75
76 <para>To get the current parameters applications call the
77<constant>VIDIOC_G_FBUF</constant> ioctl with a pointer to a
78<structname>v4l2_framebuffer</structname> structure. The driver fills
79all fields of the structure or returns an &EINVAL; when overlays are
80not supported.</para>
81
82 <para>To set the parameters for a <wordasword>Video Output
83Overlay</wordasword>, applications must initialize the
84<structfield>flags</structfield> field of a struct
85<structname>v4l2_framebuffer</structname>. Since the framebuffer is
86implemented on the TV card all other parameters are determined by the
87driver. When an application calls <constant>VIDIOC_S_FBUF</constant>
88with a pointer to this structure, the driver prepares for the overlay
89and returns the framebuffer parameters as
90<constant>VIDIOC_G_FBUF</constant> does, or it returns an error
91code.</para>
92
93 <para>To set the parameters for a <wordasword>non-destructive
94Video Overlay</wordasword>, applications must initialize the
95<structfield>flags</structfield> field, the
96<structfield>fmt</structfield> substructure, and call
97<constant>VIDIOC_S_FBUF</constant>. Again the driver prepares for the
98overlay and returns the framebuffer parameters as
99<constant>VIDIOC_G_FBUF</constant> does, or it returns an error
100code.</para>
101
102 <para>For a <wordasword>destructive Video Overlay</wordasword>
103applications must additionally provide a
104<structfield>base</structfield> address. Setting up a DMA to a
105random memory location can jeopardize the system security, its
106stability or even damage the hardware, therefore only the superuser
107can set the parameters for a destructive video overlay.</para>
108
109 <!-- NB v4l2_pix_format is also specified in pixfmt.sgml.-->
110
111 <table pgwide="1" frame="none" id="v4l2-framebuffer">
112 <title>struct <structname>v4l2_framebuffer</structname></title>
113 <tgroup cols="4">
114 &cs-ustr;
115 <tbody valign="top">
116 <row>
117 <entry>__u32</entry>
118 <entry><structfield>capability</structfield></entry>
119 <entry></entry>
120 <entry>Overlay capability flags set by the driver, see
121<xref linkend="framebuffer-cap" />.</entry>
122 </row>
123 <row>
124 <entry>__u32</entry>
125 <entry><structfield>flags</structfield></entry>
126 <entry></entry>
127 <entry>Overlay control flags set by application and
128driver, see <xref linkend="framebuffer-flags" /></entry>
129 </row>
130 <row>
131 <entry>void *</entry>
132 <entry><structfield>base</structfield></entry>
133 <entry></entry>
134 <entry>Physical base address of the framebuffer,
135that is the address of the pixel in the top left corner of the
136framebuffer.<footnote><para>A physical base address may not suit all
137platforms. GK notes in theory we should pass something like PCI device
138+ memory region + offset instead. If you encounter problems please
139discuss on the linux-media mailing list: &v4l-ml;.</para></footnote></entry>
140 </row>
141 <row>
142 <entry></entry>
143 <entry></entry>
144 <entry></entry>
145 <entry>This field is irrelevant to
146<wordasword>non-destructive Video Overlays</wordasword>. For
147<wordasword>destructive Video Overlays</wordasword> applications must
148provide a base address. The driver may accept only base addresses
149which are a multiple of two, four or eight bytes. For
150<wordasword>Video Output Overlays</wordasword> the driver must return
151a valid base address, so applications can find the corresponding Linux
152framebuffer device (see <xref linkend="osd" />).</entry>
153 </row>
154 <row>
155 <entry>struct</entry>
156 <entry><structfield>fmt</structfield></entry>
157 <entry></entry>
158 <entry>Layout of the frame buffer.</entry>
159 </row>
160 <row>
161 <entry></entry>
162 <entry>__u32</entry>
163 <entry><structfield>width</structfield></entry>
164 <entry>Width of the frame buffer in pixels.</entry>
165 </row>
166 <row>
167 <entry></entry>
168 <entry>__u32</entry>
169 <entry><structfield>height</structfield></entry>
170 <entry>Height of the frame buffer in pixels.</entry>
171 </row>
172 <row>
173 <entry></entry>
174 <entry>__u32</entry>
175 <entry><structfield>pixelformat</structfield></entry>
176 <entry>The pixel format of the
177framebuffer.</entry>
178 </row>
179 <row>
180 <entry></entry>
181 <entry></entry>
182 <entry></entry>
183 <entry>For <wordasword>non-destructive Video
184Overlays</wordasword> this field only defines a format for the
185&v4l2-window; <structfield>chromakey</structfield> field.</entry>
186 </row>
187 <row>
188 <entry></entry>
189 <entry></entry>
190 <entry></entry>
191 <entry>For <wordasword>destructive Video
192Overlays</wordasword> applications must initialize this field. For
193<wordasword>Video Output Overlays</wordasword> the driver must return
194a valid format.</entry>
195 </row>
196 <row>
197 <entry></entry>
198 <entry></entry>
199 <entry></entry>
200 <entry>Usually this is an RGB format (for example
201<link linkend="V4L2-PIX-FMT-RGB565"><constant>V4L2_PIX_FMT_RGB565</constant></link>)
202but YUV formats (only packed YUV formats when chroma keying is used,
203not including <constant>V4L2_PIX_FMT_YUYV</constant> and
204<constant>V4L2_PIX_FMT_UYVY</constant>) and the
205<constant>V4L2_PIX_FMT_PAL8</constant> format are also permitted. The
206behavior of the driver when an application requests a compressed
207format is undefined. See <xref linkend="pixfmt" /> for information on
208pixel formats.</entry>
209 </row>
210 <row>
211 <entry></entry>
212 <entry>&v4l2-field;</entry>
213 <entry><structfield>field</structfield></entry>
214 <entry>Drivers and applications shall ignore this field.
215If applicable, the field order is selected with the &VIDIOC-S-FMT;
216ioctl, using the <structfield>field</structfield> field of
217&v4l2-window;.</entry>
218 </row>
219 <row>
220 <entry></entry>
221 <entry>__u32</entry>
222 <entry><structfield>bytesperline</structfield></entry>
223 <entry>Distance in bytes between the leftmost pixels in
224two adjacent lines.</entry>
225 </row>
226 <row>
227 <entry spanname="hspan"><para>This field is irrelevant to
228<wordasword>non-destructive Video
229Overlays</wordasword>.</para><para>For <wordasword>destructive Video
230Overlays</wordasword> both applications and drivers can set this field
231to request padding bytes at the end of each line. Drivers however may
232ignore the requested value, returning <structfield>width</structfield>
233times bytes-per-pixel or a larger value required by the hardware. That
234implies applications can just set this field to zero to get a
235reasonable default.</para><para>For <wordasword>Video Output
236Overlays</wordasword> the driver must return a valid
237value.</para><para>Video hardware may access padding bytes, therefore
238they must reside in accessible memory. Consider for example the case
239where padding bytes after the last line of an image cross a system
240page boundary. Capture devices may write padding bytes, the value is
241undefined. Output devices ignore the contents of padding
242bytes.</para><para>When the image format is planar the
243<structfield>bytesperline</structfield> value applies to the first
244plane and is divided by the same factor as the
245<structfield>width</structfield> field for the other planes. For
246example the Cb and Cr planes of a YUV 4:2:0 image have half as many
247padding bytes following each line as the Y plane. To avoid ambiguities
248drivers must return a <structfield>bytesperline</structfield> value
249rounded up to a multiple of the scale factor.</para></entry>
250 </row>
251 <row>
252 <entry></entry>
253 <entry>__u32</entry>
254 <entry><structfield>sizeimage</structfield></entry>
255 <entry><para>This field is irrelevant to
256<wordasword>non-destructive Video Overlays</wordasword>. For
257<wordasword>destructive Video Overlays</wordasword> applications must
258initialize this field. For <wordasword>Video Output
259Overlays</wordasword> the driver must return a valid
260format.</para><para>Together with <structfield>base</structfield> it
261defines the framebuffer memory accessible by the
262driver.</para></entry>
263 </row>
264 <row>
265 <entry></entry>
266 <entry>&v4l2-colorspace;</entry>
267 <entry><structfield>colorspace</structfield></entry>
268 <entry>This information supplements the
269<structfield>pixelformat</structfield> and must be set by the driver,
270see <xref linkend="colorspaces" />.</entry>
271 </row>
272 <row>
273 <entry></entry>
274 <entry>__u32</entry>
275 <entry><structfield>priv</structfield></entry>
276 <entry>Reserved. Drivers and applications must set this field to
277zero.</entry>
278 </row>
279 </tbody>
280 </tgroup>
281 </table>
282
283 <table pgwide="1" frame="none" id="framebuffer-cap">
284 <title>Frame Buffer Capability Flags</title>
285 <tgroup cols="3">
286 &cs-def;
287 <tbody valign="top">
288 <row>
289 <entry><constant>V4L2_FBUF_CAP_EXTERNOVERLAY</constant></entry>
290 <entry>0x0001</entry>
291 <entry>The device is capable of non-destructive overlays.
292When the driver clears this flag, only destructive overlays are
293supported. There are no drivers yet which support both destructive and
294non-destructive overlays. Video Output Overlays are in practice always
295non-destructive.</entry>
296 </row>
297 <row>
298 <entry><constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry>
299 <entry>0x0002</entry>
300 <entry>The device supports clipping by chroma-keying the
301images. That is, image pixels replace pixels in the VGA or video
302signal only where the latter assume a certain color. Chroma-keying
303makes no sense for destructive overlays.</entry>
304 </row>
305 <row>
306 <entry><constant>V4L2_FBUF_CAP_LIST_CLIPPING</constant></entry>
307 <entry>0x0004</entry>
308 <entry>The device supports clipping using a list of clip
309rectangles.</entry>
310 </row>
311 <row>
312 <entry><constant>V4L2_FBUF_CAP_BITMAP_CLIPPING</constant></entry>
313 <entry>0x0008</entry>
314 <entry>The device supports clipping using a bit mask.</entry>
315 </row>
316 <row>
317 <entry><constant>V4L2_FBUF_CAP_LOCAL_ALPHA</constant></entry>
318 <entry>0x0010</entry>
319 <entry>The device supports clipping/blending using the
320alpha channel of the framebuffer or VGA signal. Alpha blending makes
321no sense for destructive overlays.</entry>
322 </row>
323 <row>
324 <entry><constant>V4L2_FBUF_CAP_GLOBAL_ALPHA</constant></entry>
325 <entry>0x0020</entry>
326 <entry>The device supports alpha blending using a global
327alpha value. Alpha blending makes no sense for destructive overlays.</entry>
328 </row>
329 <row>
330 <entry><constant>V4L2_FBUF_CAP_LOCAL_INV_ALPHA</constant></entry>
331 <entry>0x0040</entry>
332 <entry>The device supports clipping/blending using the
333inverted alpha channel of the framebuffer or VGA signal. Alpha
334blending makes no sense for destructive overlays.</entry>
335 </row>
336 <row>
337 <entry><constant>V4L2_FBUF_CAP_SRC_CHROMAKEY</constant></entry>
338 <entry>0x0080</entry>
339 <entry>The device supports Source Chroma-keying. Video pixels
340with the chroma-key colors are replaced by framebuffer pixels, which is exactly opposite of
341<constant>V4L2_FBUF_CAP_CHROMAKEY</constant></entry>
342 </row>
343 </tbody>
344 </tgroup>
345 </table>
346
347 <table pgwide="1" frame="none" id="framebuffer-flags">
348 <title>Frame Buffer Flags</title>
349 <tgroup cols="3">
350 &cs-def;
351 <tbody valign="top">
352 <row>
353 <entry><constant>V4L2_FBUF_FLAG_PRIMARY</constant></entry>
354 <entry>0x0001</entry>
355 <entry>The framebuffer is the primary graphics surface.
356In other words, the overlay is destructive. This flag is typically set by any
357driver that doesn't have the <constant>V4L2_FBUF_CAP_EXTERNOVERLAY</constant>
358capability and it is cleared otherwise.</entry>
359 </row>
360 <row>
361 <entry><constant>V4L2_FBUF_FLAG_OVERLAY</constant></entry>
362 <entry>0x0002</entry>
363 <entry>If this flag is set for a video capture device, then the
364driver will set the initial overlay size to cover the full framebuffer size,
365otherwise the existing overlay size (as set by &VIDIOC-S-FMT;) will be used.
366
367Only one video capture driver (bttv) supports this flag. The use of this flag
368for capture devices is deprecated. There is no way to detect which drivers
369support this flag, so the only reliable method of setting the overlay size is
370through &VIDIOC-S-FMT;.
371
372If this flag is set for a video output device, then the video output overlay
373window is relative to the top-left corner of the framebuffer and restricted
374to the size of the framebuffer. If it is cleared, then the video output
375overlay window is relative to the video output display.
376 </entry>
377 </row>
378 <row>
379 <entry><constant>V4L2_FBUF_FLAG_CHROMAKEY</constant></entry>
380 <entry>0x0004</entry>
381 <entry>Use chroma-keying. The chroma-key color is
382determined by the <structfield>chromakey</structfield> field of
383&v4l2-window; and negotiated with the &VIDIOC-S-FMT; ioctl, see <xref
384 linkend="overlay" />
385and
386 <xref linkend="osd" />.</entry>
387 </row>
388 <row>
389 <entry spanname="hspan">There are no flags to enable
390clipping using a list of clip rectangles or a bitmap. These methods
391are negotiated with the &VIDIOC-S-FMT; ioctl, see <xref
392 linkend="overlay" /> and <xref linkend="osd" />.</entry>
393 </row>
394 <row>
395 <entry><constant>V4L2_FBUF_FLAG_LOCAL_ALPHA</constant></entry>
396 <entry>0x0008</entry>
397 <entry>Use the alpha channel of the framebuffer to clip or
398blend framebuffer pixels with video images. The blend
399function is: output = framebuffer pixel * alpha + video pixel * (1 -
400alpha). The actual alpha depth depends on the framebuffer pixel
401format.</entry>
402 </row>
403 <row>
404 <entry><constant>V4L2_FBUF_FLAG_GLOBAL_ALPHA</constant></entry>
405 <entry>0x0010</entry>
406 <entry>Use a global alpha value to blend the framebuffer
407with video images. The blend function is: output = (framebuffer pixel
408* alpha + video pixel * (255 - alpha)) / 255. The alpha value is
409determined by the <structfield>global_alpha</structfield> field of
410&v4l2-window; and negotiated with the &VIDIOC-S-FMT; ioctl, see <xref
411 linkend="overlay" />
412and <xref linkend="osd" />.</entry>
413 </row>
414 <row>
415 <entry><constant>V4L2_FBUF_FLAG_LOCAL_INV_ALPHA</constant></entry>
416 <entry>0x0020</entry>
417 <entry>Like
418<constant>V4L2_FBUF_FLAG_LOCAL_ALPHA</constant>, use the alpha channel
419of the framebuffer to clip or blend framebuffer pixels with video
420images, but with an inverted alpha value. The blend function is:
421output = framebuffer pixel * (1 - alpha) + video pixel * alpha. The
422actual alpha depth depends on the framebuffer pixel format.</entry>
423 </row>
424 <row>
425 <entry><constant>V4L2_FBUF_FLAG_SRC_CHROMAKEY</constant></entry>
426 <entry>0x0040</entry>
427 <entry>Use source chroma-keying. The source chroma-key color is
428determined by the <structfield>chromakey</structfield> field of
429&v4l2-window; and negotiated with the &VIDIOC-S-FMT; ioctl, see <xref
430linkend="overlay" /> and <xref linkend="osd" />.
431Both chroma-keying are mutual exclusive to each other, so same
432<structfield>chromakey</structfield> field of &v4l2-window; is being used.</entry>
433 </row>
434 </tbody>
435 </tgroup>
436 </table>
437 </refsect1>
438
439 <refsect1>
440 &return-value;
441
442 <variablelist>
443 <varlistentry>
444 <term><errorcode>EPERM</errorcode></term>
445 <listitem>
446 <para><constant>VIDIOC_S_FBUF</constant> can only be called
447by a privileged user to negotiate the parameters for a destructive
448overlay.</para>
449 </listitem>
450 </varlistentry>
451 <varlistentry>
452 <term><errorcode>EINVAL</errorcode></term>
453 <listitem>
454 <para>The <constant>VIDIOC_S_FBUF</constant> parameters are unsuitable.</para>
455 </listitem>
456 </varlistentry>
457 </variablelist>
458 </refsect1>
459</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
deleted file mode 100644
index ffcb448251f0..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
+++ /dev/null
@@ -1,204 +0,0 @@
1<refentry id="vidioc-g-fmt">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_FMT, VIDIOC_S_FMT,
4VIDIOC_TRY_FMT</refentrytitle>
5 &manvol;
6 </refmeta>
7
8 <refnamediv>
9 <refname>VIDIOC_G_FMT</refname>
10 <refname>VIDIOC_S_FMT</refname>
11 <refname>VIDIOC_TRY_FMT</refname>
12 <refpurpose>Get or set the data format, try a format</refpurpose>
13 </refnamediv>
14
15 <refsynopsisdiv>
16 <funcsynopsis>
17 <funcprototype>
18 <funcdef>int <function>ioctl</function></funcdef>
19 <paramdef>int <parameter>fd</parameter></paramdef>
20 <paramdef>int <parameter>request</parameter></paramdef>
21 <paramdef>struct v4l2_format
22*<parameter>argp</parameter></paramdef>
23 </funcprototype>
24 </funcsynopsis>
25 </refsynopsisdiv>
26
27 <refsect1>
28 <title>Arguments</title>
29
30 <variablelist>
31 <varlistentry>
32 <term><parameter>fd</parameter></term>
33 <listitem>
34 <para>&fd;</para>
35 </listitem>
36 </varlistentry>
37 <varlistentry>
38 <term><parameter>request</parameter></term>
39 <listitem>
40 <para>VIDIOC_G_FMT, VIDIOC_S_FMT, VIDIOC_TRY_FMT</para>
41 </listitem>
42 </varlistentry>
43 <varlistentry>
44 <term><parameter>argp</parameter></term>
45 <listitem>
46 <para></para>
47 </listitem>
48 </varlistentry>
49 </variablelist>
50 </refsect1>
51
52 <refsect1>
53 <title>Description</title>
54
55 <para>These ioctls are used to negotiate the format of data
56(typically image format) exchanged between driver and
57application.</para>
58
59 <para>To query the current parameters applications set the
60<structfield>type</structfield> field of a struct
61<structname>v4l2_format</structname> to the respective buffer (stream)
62type. For example video capture devices use
63<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant> or
64<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>. When the application
65calls the <constant>VIDIOC_G_FMT</constant> ioctl with a pointer to
66this structure the driver fills the respective member of the
67<structfield>fmt</structfield> union. In case of video capture devices
68that is either the &v4l2-pix-format; <structfield>pix</structfield> or
69the &v4l2-pix-format-mplane; <structfield>pix_mp</structfield> member.
70When the requested buffer type is not supported drivers return an
71&EINVAL;.</para>
72
73 <para>To change the current format parameters applications
74initialize the <structfield>type</structfield> field and all
75fields of the respective <structfield>fmt</structfield>
76union member. For details see the documentation of the various devices
77types in <xref linkend="devices" />. Good practice is to query the
78current parameters first, and to
79modify only those parameters not suitable for the application. When
80the application calls the <constant>VIDIOC_S_FMT</constant> ioctl
81with a pointer to a <structname>v4l2_format</structname> structure
82the driver checks
83and adjusts the parameters against hardware abilities. Drivers
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
86acceptable for both the application and driver. On success the driver
87may program the hardware, allocate resources and generally prepare for
88data exchange.
89Finally the <constant>VIDIOC_S_FMT</constant> ioctl returns the
90current format parameters as <constant>VIDIOC_G_FMT</constant> does.
91Very simple, inflexible devices may even ignore all input and always
92return the default parameters. However all V4L2 devices exchanging
93data with the application must implement the
94<constant>VIDIOC_G_FMT</constant> and
95<constant>VIDIOC_S_FMT</constant> ioctl. When the requested buffer
96type is not supported drivers return an &EINVAL; on a
97<constant>VIDIOC_S_FMT</constant> attempt. When I/O is already in
98progress or the resource is not available for other reasons drivers
99return the &EBUSY;.</para>
100
101 <para>The <constant>VIDIOC_TRY_FMT</constant> ioctl is equivalent
102to <constant>VIDIOC_S_FMT</constant> with one exception: it does not
103change driver state. It can also be called at any time, never
104returning <errorcode>EBUSY</errorcode>. This function is provided to
105negotiate parameters, to learn about hardware limitations, without
106disabling I/O or possibly time consuming hardware preparations.
107Although strongly recommended drivers are not required to implement
108this ioctl.</para>
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
114 <table pgwide="1" frame="none" id="v4l2-format">
115 <title>struct <structname>v4l2_format</structname></title>
116 <tgroup cols="4">
117 <colspec colname="c1" />
118 <colspec colname="c2" />
119 <colspec colname="c3" />
120 <colspec colname="c4" />
121 <tbody valign="top">
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>type</structfield></entry>
125 <entry></entry>
126 <entry>Type of the data stream, see <xref
127 linkend="v4l2-buf-type" />.</entry>
128 </row>
129 <row>
130 <entry>union</entry>
131 <entry><structfield>fmt</structfield></entry>
132 </row>
133 <row>
134 <entry></entry>
135 <entry>&v4l2-pix-format;</entry>
136 <entry><structfield>pix</structfield></entry>
137 <entry>Definition of an image format, see <xref
138 linkend="pixfmt" />, used by video capture and output
139devices.</entry>
140 </row>
141 <row>
142 <entry></entry>
143 <entry>&v4l2-pix-format-mplane;</entry>
144 <entry><structfield>pix_mp</structfield></entry>
145 <entry>Definition of an image format, see <xref
146 linkend="pixfmt" />, used by video capture and output
147devices that support the <link linkend="planar-apis">multi-planar
148version of the API</link>.</entry>
149 </row>
150 <row>
151 <entry></entry>
152 <entry>&v4l2-window;</entry>
153 <entry><structfield>win</structfield></entry>
154 <entry>Definition of an overlaid image, see <xref
155 linkend="overlay" />, used by video overlay devices.</entry>
156 </row>
157 <row>
158 <entry></entry>
159 <entry>&v4l2-vbi-format;</entry>
160 <entry><structfield>vbi</structfield></entry>
161 <entry>Raw VBI capture or output parameters. This is
162discussed in more detail in <xref linkend="raw-vbi" />. Used by raw VBI
163capture and output devices.</entry>
164 </row>
165 <row>
166 <entry></entry>
167 <entry>&v4l2-sliced-vbi-format;</entry>
168 <entry><structfield>sliced</structfield></entry>
169 <entry>Sliced VBI capture or output parameters. See
170<xref linkend="sliced" /> for details. Used by sliced VBI
171capture and output devices.</entry>
172 </row>
173 <row>
174 <entry></entry>
175 <entry>&v4l2-sdr-format;</entry>
176 <entry><structfield>sdr</structfield></entry>
177 <entry>Definition of a data format, see
178<xref linkend="pixfmt" />, used by SDR capture and output devices.</entry>
179 </row>
180 <row>
181 <entry></entry>
182 <entry>__u8</entry>
183 <entry><structfield>raw_data</structfield>[200]</entry>
184 <entry>Place holder for future extensions.</entry>
185 </row>
186 </tbody>
187 </tgroup>
188 </table>
189 </refsect1>
190
191 <refsect1>
192 &return-value;
193
194 <variablelist>
195 <varlistentry>
196 <term><errorcode>EINVAL</errorcode></term>
197 <listitem>
198 <para>The &v4l2-format; <structfield>type</structfield>
199field is invalid or the requested buffer type not supported.</para>
200 </listitem>
201 </varlistentry>
202 </variablelist>
203 </refsect1>
204</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
deleted file mode 100644
index d1034fb61d15..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
+++ /dev/null
@@ -1,148 +0,0 @@
1<refentry id="vidioc-g-frequency">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_FREQUENCY</refname>
9 <refname>VIDIOC_S_FREQUENCY</refname>
10 <refpurpose>Get or set tuner or modulator radio
11frequency</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_frequency
21*<parameter>argp</parameter></paramdef>
22 </funcprototype>
23 </funcsynopsis>
24 <funcsynopsis>
25 <funcprototype>
26 <funcdef>int <function>ioctl</function></funcdef>
27 <paramdef>int <parameter>fd</parameter></paramdef>
28 <paramdef>int <parameter>request</parameter></paramdef>
29 <paramdef>const struct v4l2_frequency
30*<parameter>argp</parameter></paramdef>
31 </funcprototype>
32 </funcsynopsis>
33 </refsynopsisdiv>
34
35 <refsect1>
36 <title>Arguments</title>
37
38 <variablelist>
39 <varlistentry>
40 <term><parameter>fd</parameter></term>
41 <listitem>
42 <para>&fd;</para>
43 </listitem>
44 </varlistentry>
45 <varlistentry>
46 <term><parameter>request</parameter></term>
47 <listitem>
48 <para>VIDIOC_G_FREQUENCY, VIDIOC_S_FREQUENCY</para>
49 </listitem>
50 </varlistentry>
51 <varlistentry>
52 <term><parameter>argp</parameter></term>
53 <listitem>
54 <para></para>
55 </listitem>
56 </varlistentry>
57 </variablelist>
58 </refsect1>
59
60 <refsect1>
61 <title>Description</title>
62
63 <para>To get the current tuner or modulator radio frequency
64applications set the <structfield>tuner</structfield> field of a
65&v4l2-frequency; to the respective tuner or modulator number (only
66input devices have tuners, only output devices have modulators), zero
67out the <structfield>reserved</structfield> array and
68call the <constant>VIDIOC_G_FREQUENCY</constant> ioctl with a pointer
69to this structure. The driver stores the current frequency in the
70<structfield>frequency</structfield> field.</para>
71
72 <para>To change the current tuner or modulator radio frequency
73applications initialize the <structfield>tuner</structfield>,
74<structfield>type</structfield> and
75<structfield>frequency</structfield> fields, and the
76<structfield>reserved</structfield> array of a &v4l2-frequency; and
77call the <constant>VIDIOC_S_FREQUENCY</constant> ioctl with a pointer
78to this structure. When the requested frequency is not possible the
79driver assumes the closest possible value. However
80<constant>VIDIOC_S_FREQUENCY</constant> is a write-only ioctl, it does
81not return the actual new frequency.</para>
82
83 <table pgwide="1" frame="none" id="v4l2-frequency">
84 <title>struct <structname>v4l2_frequency</structname></title>
85 <tgroup cols="3">
86 &cs-str;
87 <tbody valign="top">
88 <row>
89 <entry>__u32</entry>
90 <entry><structfield>tuner</structfield></entry>
91 <entry>The tuner or modulator index number. This is the
92same value as in the &v4l2-input; <structfield>tuner</structfield>
93field and the &v4l2-tuner; <structfield>index</structfield> field, or
94the &v4l2-output; <structfield>modulator</structfield> field and the
95&v4l2-modulator; <structfield>index</structfield> field.</entry>
96 </row>
97 <row>
98 <entry>__u32</entry>
99 <entry><structfield>type</structfield></entry>
100 <entry>The tuner type. This is the same value as in the
101&v4l2-tuner; <structfield>type</structfield> field. The type must be set
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>
107 </row>
108 <row>
109 <entry>__u32</entry>
110 <entry><structfield>frequency</structfield></entry>
111 <entry>Tuning frequency in units of 62.5 kHz, or if the
112&v4l2-tuner; or &v4l2-modulator; <structfield>capability</structfield> flag
113<constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
114Hz. A 1 Hz unit is used when the <structfield>capability</structfield> flag
115<constant>V4L2_TUNER_CAP_1HZ</constant> is set.</entry>
116 </row>
117 <row>
118 <entry>__u32</entry>
119 <entry><structfield>reserved</structfield>[8]</entry>
120 <entry>Reserved for future extensions. Drivers and
121 applications must set the array to zero.</entry>
122 </row>
123 </tbody>
124 </tgroup>
125 </table>
126 </refsect1>
127
128 <refsect1>
129 &return-value;
130
131 <variablelist>
132 <varlistentry>
133 <term><errorcode>EINVAL</errorcode></term>
134 <listitem>
135 <para>The <structfield>tuner</structfield> index is out of
136bounds or the value in the <structfield>type</structfield> field is
137wrong.</para>
138 </listitem>
139 </varlistentry>
140 <varlistentry>
141 <term><errorcode>EBUSY</errorcode></term>
142 <listitem>
143 <para>A hardware seek is in progress.</para>
144 </listitem>
145 </varlistentry>
146 </variablelist>
147 </refsect1>
148</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-input.xml b/Documentation/DocBook/media/v4l/vidioc-g-input.xml
deleted file mode 100644
index 1d43065090dd..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-input.xml
+++ /dev/null
@@ -1,83 +0,0 @@
1<refentry id="vidioc-g-input">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_INPUT, VIDIOC_S_INPUT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_INPUT</refname>
9 <refname>VIDIOC_S_INPUT</refname>
10 <refpurpose>Query or select the current video input</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>int *<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_G_INPUT, VIDIOC_S_INPUT</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>To query the current video input applications call the
53<constant>VIDIOC_G_INPUT</constant> ioctl with a pointer to an integer
54where the driver stores the number of the input, as in the
55&v4l2-input; <structfield>index</structfield> field. This ioctl will
56fail only when there are no video inputs, returning
57<errorcode>EINVAL</errorcode>.</para>
58
59 <para>To select a video input applications store the number of the
60desired input in an integer and call the
61<constant>VIDIOC_S_INPUT</constant> ioctl with a pointer to this
62integer. Side effects are possible. For example inputs may support
63different video standards, so the driver may implicitly switch the
64current standard. Because of these possible side effects applications
65must select an input before querying or negotiating any other parameters.</para>
66
67 <para>Information about video inputs is available using the
68&VIDIOC-ENUMINPUT; ioctl.</para>
69 </refsect1>
70
71 <refsect1>
72 &return-value;
73
74 <variablelist>
75 <varlistentry>
76 <term><errorcode>EINVAL</errorcode></term>
77 <listitem>
78 <para>The number of the video input is out of bounds.</para>
79 </listitem>
80 </varlistentry>
81 </variablelist>
82 </refsect1>
83</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml b/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
deleted file mode 100644
index 098ff483802e..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-jpegcomp.xml
+++ /dev/null
@@ -1,175 +0,0 @@
1<refentry id="vidioc-g-jpegcomp">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_JPEGCOMP, VIDIOC_S_JPEGCOMP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_JPEGCOMP</refname>
9 <refname>VIDIOC_S_JPEGCOMP</refname>
10 <refpurpose></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>v4l2_jpegcompression *<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 v4l2_jpegcompression *<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_G_JPEGCOMP, VIDIOC_S_JPEGCOMP</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
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
65 <para>[to do]</para>
66
67 <para>Ronald Bultje elaborates:</para>
68
69 <!-- See video4linux-list@redhat.com on 16 Oct 2002, subject
70"Re: [V4L] Re: v4l2 api / Zoran v4l2_jpegcompression" -->
71
72 <para>APP is some application-specific information. The
73application can set it itself, and it'll be stored in the JPEG-encoded
74fields (eg; interlacing information for in an AVI or so). COM is the
75same, but it's comments, like 'encoded by me' or so.</para>
76
77 <para>jpeg_markers describes whether the huffman tables,
78quantization tables and the restart interval information (all
79JPEG-specific stuff) should be stored in the JPEG-encoded fields.
80These define how the JPEG field is encoded. If you omit them,
81applications assume you've used standard encoding. You usually do want
82to add them.</para>
83
84 <!-- NB VIDIOC_S_JPEGCOMP is w/o. -->
85
86 <table pgwide="1" frame="none" id="v4l2-jpegcompression">
87 <title>struct <structname>v4l2_jpegcompression</structname></title>
88 <tgroup cols="3">
89 &cs-str;
90 <tbody valign="top">
91 <row>
92 <entry>int</entry>
93 <entry><structfield>quality</structfield></entry>
94 <entry>Deprecated. If <link linkend="jpeg-quality-control"><constant>
95 V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></link> control is exposed
96 by a driver applications should use it instead and ignore this field.
97 </entry>
98 </row>
99 <row>
100 <entry>int</entry>
101 <entry><structfield>APPn</structfield></entry>
102 <entry></entry>
103 </row>
104 <row>
105 <entry>int</entry>
106 <entry><structfield>APP_len</structfield></entry>
107 <entry></entry>
108 </row>
109 <row>
110 <entry>char</entry>
111 <entry><structfield>APP_data</structfield>[60]</entry>
112 <entry></entry>
113 </row>
114 <row>
115 <entry>int</entry>
116 <entry><structfield>COM_len</structfield></entry>
117 <entry></entry>
118 </row>
119 <row>
120 <entry>char</entry>
121 <entry><structfield>COM_data</structfield>[60]</entry>
122 <entry></entry>
123 </row>
124 <row>
125 <entry>__u32</entry>
126 <entry><structfield>jpeg_markers</structfield></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>
132 </row>
133 </tbody>
134 </tgroup>
135 </table>
136
137 <table pgwide="1" frame="none" id="jpeg-markers">
138 <title>JPEG Markers Flags</title>
139 <tgroup cols="3">
140 &cs-def;
141 <tbody valign="top">
142 <row>
143 <entry><constant>V4L2_JPEG_MARKER_DHT</constant></entry>
144 <entry>(1&lt;&lt;3)</entry>
145 <entry>Define Huffman Tables</entry>
146 </row>
147 <row>
148 <entry><constant>V4L2_JPEG_MARKER_DQT</constant></entry>
149 <entry>(1&lt;&lt;4)</entry>
150 <entry>Define Quantization Tables</entry>
151 </row>
152 <row>
153 <entry><constant>V4L2_JPEG_MARKER_DRI</constant></entry>
154 <entry>(1&lt;&lt;5)</entry>
155 <entry>Define Restart Interval</entry>
156 </row>
157 <row>
158 <entry><constant>V4L2_JPEG_MARKER_COM</constant></entry>
159 <entry>(1&lt;&lt;6)</entry>
160 <entry>Comment segment</entry>
161 </row>
162 <row>
163 <entry><constant>V4L2_JPEG_MARKER_APP</constant></entry>
164 <entry>(1&lt;&lt;7)</entry>
165 <entry>App segment, driver will always use APP0</entry>
166 </row>
167 </tbody>
168 </tgroup>
169 </table>
170 </refsect1>
171
172 <refsect1>
173 &return-value;
174 </refsect1>
175</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml b/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml
deleted file mode 100644
index 96e17b344c5d..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-modulator.xml
+++ /dev/null
@@ -1,252 +0,0 @@
1<refentry id="vidioc-g-modulator">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_MODULATOR</refname>
9 <refname>VIDIOC_S_MODULATOR</refname>
10 <refpurpose>Get or set modulator attributes</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_modulator
20*<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 <funcsynopsis>
24 <funcprototype>
25 <funcdef>int <function>ioctl</function></funcdef>
26 <paramdef>int <parameter>fd</parameter></paramdef>
27 <paramdef>int <parameter>request</parameter></paramdef>
28 <paramdef>const struct v4l2_modulator
29*<parameter>argp</parameter></paramdef>
30 </funcprototype>
31 </funcsynopsis>
32 </refsynopsisdiv>
33
34 <refsect1>
35 <title>Arguments</title>
36
37 <variablelist>
38 <varlistentry>
39 <term><parameter>fd</parameter></term>
40 <listitem>
41 <para>&fd;</para>
42 </listitem>
43 </varlistentry>
44 <varlistentry>
45 <term><parameter>request</parameter></term>
46 <listitem>
47 <para>VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR</para>
48 </listitem>
49 </varlistentry>
50 <varlistentry>
51 <term><parameter>argp</parameter></term>
52 <listitem>
53 <para></para>
54 </listitem>
55 </varlistentry>
56 </variablelist>
57 </refsect1>
58
59 <refsect1>
60 <title>Description</title>
61
62 <para>To query the attributes of a modulator applications initialize
63the <structfield>index</structfield> field and zero out the
64<structfield>reserved</structfield> array of a &v4l2-modulator; and
65call the <constant>VIDIOC_G_MODULATOR</constant> ioctl with a pointer
66to this structure. Drivers fill the rest of the structure or return an
67&EINVAL; when the index is out of bounds. To enumerate all modulators
68applications shall begin at index zero, incrementing by one until the
69driver returns <errorcode>EINVAL</errorcode>.</para>
70
71 <para>Modulators have two writable properties, an audio
72modulation set and the radio frequency. To change the modulated audio
73subprograms, applications initialize the <structfield>index
74</structfield> and <structfield>txsubchans</structfield> fields and the
75<structfield>reserved</structfield> array and call the
76<constant>VIDIOC_S_MODULATOR</constant> ioctl. Drivers may choose a
77different audio modulation if the request cannot be satisfied. However
78this is a write-only ioctl, it does not return the actual audio
79modulation selected.</para>
80
81 <para><link linkend="sdr">SDR</link> specific modulator types are
82<constant>V4L2_TUNER_SDR</constant> and <constant>V4L2_TUNER_RF</constant>.
83For SDR devices <structfield>txsubchans</structfield> field must be
84initialized to zero.
85The term 'modulator' means SDR transmitter in this context.</para>
86
87 <para>To change the radio frequency the &VIDIOC-S-FREQUENCY; ioctl
88is available.</para>
89
90 <table pgwide="1" frame="none" id="v4l2-modulator">
91 <title>struct <structname>v4l2_modulator</structname></title>
92 <tgroup cols="3">
93 &cs-str;
94 <tbody valign="top">
95 <row>
96 <entry>__u32</entry>
97 <entry><structfield>index</structfield></entry>
98 <entry>Identifies the modulator, set by the
99application.</entry>
100 </row>
101 <row>
102 <entry>__u8</entry>
103 <entry><structfield>name</structfield>[32]</entry>
104 <entry>Name of the modulator, a NUL-terminated ASCII
105string. This information is intended for the user.</entry>
106 </row>
107 <row>
108 <entry>__u32</entry>
109 <entry><structfield>capability</structfield></entry>
110 <entry>Modulator capability flags. No flags are defined
111for this field, the tuner flags in &v4l2-tuner;
112are used accordingly. The audio flags indicate the ability
113to encode audio subprograms. They will <emphasis>not</emphasis>
114change for example with the current video standard.</entry>
115 </row>
116 <row>
117 <entry>__u32</entry>
118 <entry><structfield>rangelow</structfield></entry>
119 <entry>The lowest tunable frequency in units of 62.5
120KHz, or if the <structfield>capability</structfield> flag
121<constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
122Hz, or if the <structfield>capability</structfield> flag
123<constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.</entry>
124 </row>
125 <row>
126 <entry>__u32</entry>
127 <entry><structfield>rangehigh</structfield></entry>
128 <entry>The highest tunable frequency in units of 62.5
129KHz, or if the <structfield>capability</structfield> flag
130<constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
131Hz, or if the <structfield>capability</structfield> flag
132<constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.</entry>
133 </row>
134 <row>
135 <entry>__u32</entry>
136 <entry><structfield>txsubchans</structfield></entry>
137 <entry>With this field applications can determine how
138audio sub-carriers shall be modulated. It contains a set of flags as
139defined in <xref linkend="modulator-txsubchans" />. Note the tuner
140<structfield>rxsubchans</structfield> flags are reused, but the
141semantics are different. Video output devices are assumed to have an
142analog or PCM audio input with 1-3 channels. The
143<structfield>txsubchans</structfield> flags select one or more
144channels for modulation, together with some audio subprogram
145indicator, for example a stereo pilot tone.</entry>
146 </row>
147 <row>
148 <entry>__u32</entry>
149 <entry><structfield>type</structfield></entry>
150 <entry spanname="hspan">Type of the modulator, see <xref
151 linkend="v4l2-tuner-type" />.</entry>
152 </row>
153 <row>
154 <entry>__u32</entry>
155 <entry><structfield>reserved</structfield>[3]</entry>
156 <entry>Reserved for future extensions. Drivers and
157applications must set the array to zero.</entry>
158 </row>
159 </tbody>
160 </tgroup>
161 </table>
162
163 <table pgwide="1" frame="none" id="modulator-txsubchans">
164 <title>Modulator Audio Transmission Flags</title>
165 <tgroup cols="3">
166 &cs-def;
167 <tbody valign="top">
168 <row>
169 <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry>
170 <entry>0x0001</entry>
171 <entry>Modulate channel 1 as mono audio, when the input
172has more channels, a down-mix of channel 1 and 2. This flag does not
173combine with <constant>V4L2_TUNER_SUB_STEREO</constant> or
174<constant>V4L2_TUNER_SUB_LANG1</constant>.</entry>
175 </row>
176 <row>
177 <entry><constant>V4L2_TUNER_SUB_STEREO</constant></entry>
178 <entry>0x0002</entry>
179 <entry>Modulate channel 1 and 2 as left and right
180channel of a stereo audio signal. When the input has only one channel
181or two channels and <constant>V4L2_TUNER_SUB_SAP</constant> is also
182set, channel 1 is encoded as left and right channel. This flag does
183not combine with <constant>V4L2_TUNER_SUB_MONO</constant> or
184<constant>V4L2_TUNER_SUB_LANG1</constant>. When the driver does not
185support stereo audio it shall fall back to mono.</entry>
186 </row>
187 <row>
188 <entry><constant>V4L2_TUNER_SUB_LANG1</constant></entry>
189 <entry>0x0008</entry>
190 <entry>Modulate channel 1 and 2 as primary and secondary
191language of a bilingual audio signal. When the input has only one
192channel it is used for both languages. It is not possible to encode
193the primary or secondary language only. This flag does not combine
194with <constant>V4L2_TUNER_SUB_MONO</constant>,
195<constant>V4L2_TUNER_SUB_STEREO</constant> or
196<constant>V4L2_TUNER_SUB_SAP</constant>. If the hardware does not
197support the respective audio matrix, or the current video standard
198does not permit bilingual audio the
199<constant>VIDIOC_S_MODULATOR</constant> ioctl shall return an &EINVAL;
200and the driver shall fall back to mono or stereo mode.</entry>
201 </row>
202 <row>
203 <entry><constant>V4L2_TUNER_SUB_LANG2</constant></entry>
204 <entry>0x0004</entry>
205 <entry>Same effect as
206<constant>V4L2_TUNER_SUB_SAP</constant>.</entry>
207 </row>
208 <row>
209 <entry><constant>V4L2_TUNER_SUB_SAP</constant></entry>
210 <entry>0x0004</entry>
211 <entry>When combined with <constant>V4L2_TUNER_SUB_MONO
212</constant> the first channel is encoded as mono audio, the last
213channel as Second Audio Program. When the input has only one channel
214it is used for both audio tracks. When the input has three channels
215the mono track is a down-mix of channel 1 and 2. When combined with
216<constant>V4L2_TUNER_SUB_STEREO</constant> channel 1 and 2 are
217encoded as left and right stereo audio, channel 3 as Second Audio
218Program. When the input has only two channels, the first is encoded as
219left and right channel and the second as SAP. When the input has only
220one channel it is used for all audio tracks. It is not possible to
221encode a Second Audio Program only. This flag must combine with
222<constant>V4L2_TUNER_SUB_MONO</constant> or
223<constant>V4L2_TUNER_SUB_STEREO</constant>. If the hardware does not
224support the respective audio matrix, or the current video standard
225does not permit SAP the <constant>VIDIOC_S_MODULATOR</constant> ioctl
226shall return an &EINVAL; and driver shall fall back to mono or stereo
227mode.</entry>
228 </row>
229 <row>
230 <entry><constant>V4L2_TUNER_SUB_RDS</constant></entry>
231 <entry>0x0010</entry>
232 <entry>Enable the RDS encoder for a radio FM transmitter.</entry>
233 </row>
234 </tbody>
235 </tgroup>
236 </table>
237 </refsect1>
238
239 <refsect1>
240 &return-value;
241
242 <variablelist>
243 <varlistentry>
244 <term><errorcode>EINVAL</errorcode></term>
245 <listitem>
246 <para>The &v4l2-modulator;
247<structfield>index</structfield> is out of bounds.</para>
248 </listitem>
249 </varlistentry>
250 </variablelist>
251 </refsect1>
252</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-output.xml b/Documentation/DocBook/media/v4l/vidioc-g-output.xml
deleted file mode 100644
index 4533068ecb8a..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-output.xml
+++ /dev/null
@@ -1,85 +0,0 @@
1<refentry id="vidioc-g-output">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_OUTPUT, VIDIOC_S_OUTPUT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_OUTPUT</refname>
9 <refname>VIDIOC_S_OUTPUT</refname>
10 <refpurpose>Query or select the current video output</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>int *<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_G_OUTPUT, VIDIOC_S_OUTPUT</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>To query the current video output applications call the
53<constant>VIDIOC_G_OUTPUT</constant> ioctl with a pointer to an integer
54where the driver stores the number of the output, as in the
55&v4l2-output; <structfield>index</structfield> field. This ioctl
56will fail only when there are no video outputs, returning the
57&EINVAL;.</para>
58
59 <para>To select a video output applications store the number of the
60desired output in an integer and call the
61<constant>VIDIOC_S_OUTPUT</constant> ioctl with a pointer to this integer.
62Side effects are possible. For example outputs may support different
63video standards, so the driver may implicitly switch the current
64standard.
65standard. Because of these possible side effects applications
66must select an output before querying or negotiating any other parameters.</para>
67
68 <para>Information about video outputs is available using the
69&VIDIOC-ENUMOUTPUT; ioctl.</para>
70 </refsect1>
71
72 <refsect1>
73 &return-value;
74
75 <variablelist>
76 <varlistentry>
77 <term><errorcode>EINVAL</errorcode></term>
78 <listitem>
79 <para>The number of the video output is out of bounds, or
80there are no video outputs at all.</para>
81 </listitem>
82 </varlistentry>
83 </variablelist>
84 </refsect1>
85</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
deleted file mode 100644
index 721728745407..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
+++ /dev/null
@@ -1,314 +0,0 @@
1<refentry id="vidioc-g-parm">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_PARM, VIDIOC_S_PARM</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_PARM</refname>
9 <refname>VIDIOC_S_PARM</refname>
10 <refpurpose>Get or set streaming parameters</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>v4l2_streamparm *<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_G_PARM, VIDIOC_S_PARM</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>The current video standard determines a nominal number of
53frames per second. If less than this number of frames is to be
54captured or output, applications can request frame skipping or
55duplicating on the driver side. This is especially useful when using
56the <function>read()</function> or <function>write()</function>, which
57are not augmented by timestamps or sequence counters, and to avoid
58unnecessary data copying.</para>
59
60 <para>Further these ioctls can be used to determine the number of
61buffers used internally by a driver in read/write mode. For
62implications see the section discussing the &func-read;
63function.</para>
64
65 <para>To get and set the streaming parameters applications call
66the <constant>VIDIOC_G_PARM</constant> and
67<constant>VIDIOC_S_PARM</constant> ioctl, respectively. They take a
68pointer to a struct <structname>v4l2_streamparm</structname> which
69contains a union holding separate parameters for input and output
70devices.</para>
71
72 <table pgwide="1" frame="none" id="v4l2-streamparm">
73 <title>struct <structname>v4l2_streamparm</structname></title>
74 <tgroup cols="4">
75 &cs-ustr;
76 <tbody valign="top">
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>type</structfield></entry>
80 <entry></entry>
81 <entry>The buffer (stream) type, same as &v4l2-format;
82<structfield>type</structfield>, set by the application. See <xref
83 linkend="v4l2-buf-type" /></entry>
84 </row>
85 <row>
86 <entry>union</entry>
87 <entry><structfield>parm</structfield></entry>
88 <entry></entry>
89 <entry></entry>
90 </row>
91 <row>
92 <entry></entry>
93 <entry>&v4l2-captureparm;</entry>
94 <entry><structfield>capture</structfield></entry>
95 <entry>Parameters for capture devices, used when
96<structfield>type</structfield> is
97<constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>.</entry>
98 </row>
99 <row>
100 <entry></entry>
101 <entry>&v4l2-outputparm;</entry>
102 <entry><structfield>output</structfield></entry>
103 <entry>Parameters for output devices, used when
104<structfield>type</structfield> is
105<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>.</entry>
106 </row>
107 <row>
108 <entry></entry>
109 <entry>__u8</entry>
110 <entry><structfield>raw_data</structfield>[200]</entry>
111 <entry>A place holder for future extensions.</entry>
112 </row>
113 </tbody>
114 </tgroup>
115 </table>
116
117 <table pgwide="1" frame="none" id="v4l2-captureparm">
118 <title>struct <structname>v4l2_captureparm</structname></title>
119 <tgroup cols="3">
120 &cs-str;
121 <tbody valign="top">
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>capability</structfield></entry>
125 <entry>See <xref linkend="parm-caps" />.</entry>
126 </row>
127 <row>
128 <entry>__u32</entry>
129 <entry><structfield>capturemode</structfield></entry>
130 <entry>Set by drivers and applications, see <xref linkend="parm-flags" />.</entry>
131 </row>
132 <row>
133 <entry>&v4l2-fract;</entry>
134 <entry><structfield>timeperframe</structfield></entry>
135 <entry><para>This is the desired period between
136successive frames captured by the driver, in seconds. The
137field is intended to skip frames on the driver side, saving I/O
138bandwidth.</para><para>Applications store here the desired frame
139period, drivers return the actual frame period, which must be greater
140or equal to the nominal frame period determined by the current video
141standard (&v4l2-standard; <structfield>frameperiod</structfield>
142field). Changing the video standard (also implicitly by switching the
143video input) may reset this parameter to the nominal frame period. To
144reset manually applications can just set this field to
145zero.</para><para>Drivers support this function only when they set the
146<constant>V4L2_CAP_TIMEPERFRAME</constant> flag in the
147<structfield>capability</structfield> field.</para></entry>
148 </row>
149 <row>
150 <entry>__u32</entry>
151 <entry><structfield>extendedmode</structfield></entry>
152 <entry>Custom (driver specific) streaming parameters. When
153unused, applications and drivers must set this field to zero.
154Applications using this field should check the driver name and
155version, see <xref linkend="querycap" />.</entry>
156 </row>
157 <row>
158 <entry>__u32</entry>
159 <entry><structfield>readbuffers</structfield></entry>
160 <entry>Applications set this field to the desired number
161of buffers used internally by the driver in &func-read; mode. Drivers
162return the actual number of buffers. When an application requests zero
163buffers, drivers should just return the current setting rather than
164the minimum or an error code. For details see <xref
165 linkend="rw" />.</entry>
166 </row>
167 <row>
168 <entry>__u32</entry>
169 <entry><structfield>reserved</structfield>[4]</entry>
170 <entry>Reserved for future extensions. Drivers and
171applications must set the array to zero.</entry>
172 </row>
173 </tbody>
174 </tgroup>
175 </table>
176
177 <table pgwide="1" frame="none" id="v4l2-outputparm">
178 <title>struct <structname>v4l2_outputparm</structname></title>
179 <tgroup cols="3">
180 &cs-str;
181 <tbody valign="top">
182 <row>
183 <entry>__u32</entry>
184 <entry><structfield>capability</structfield></entry>
185 <entry>See <xref linkend="parm-caps" />.</entry>
186 </row>
187 <row>
188 <entry>__u32</entry>
189 <entry><structfield>outputmode</structfield></entry>
190 <entry>Set by drivers and applications, see <xref
191 linkend="parm-flags" />.</entry>
192 </row>
193 <row>
194 <entry>&v4l2-fract;</entry>
195 <entry><structfield>timeperframe</structfield></entry>
196 <entry>This is the desired period between
197successive frames output by the driver, in seconds.</entry>
198 </row>
199 <row>
200 <entry spanname="hspan"><para>The field is intended to
201repeat frames on the driver side in &func-write; mode (in streaming
202mode timestamps can be used to throttle the output), saving I/O
203bandwidth.</para><para>Applications store here the desired frame
204period, drivers return the actual frame period, which must be greater
205or equal to the nominal frame period determined by the current video
206standard (&v4l2-standard; <structfield>frameperiod</structfield>
207field). Changing the video standard (also implicitly by switching the
208video output) may reset this parameter to the nominal frame period. To
209reset manually applications can just set this field to
210zero.</para><para>Drivers support this function only when they set the
211<constant>V4L2_CAP_TIMEPERFRAME</constant> flag in the
212<structfield>capability</structfield> field.</para></entry>
213 </row>
214 <row>
215 <entry>__u32</entry>
216 <entry><structfield>extendedmode</structfield></entry>
217 <entry>Custom (driver specific) streaming parameters. When
218unused, applications and drivers must set this field to zero.
219Applications using this field should check the driver name and
220version, see <xref linkend="querycap" />.</entry>
221 </row>
222 <row>
223 <entry>__u32</entry>
224 <entry><structfield>writebuffers</structfield></entry>
225 <entry>Applications set this field to the desired number
226of buffers used internally by the driver in
227<function>write()</function> mode. Drivers return the actual number of
228buffers. When an application requests zero buffers, drivers should
229just return the current setting rather than the minimum or an error
230code. For details see <xref linkend="rw" />.</entry>
231 </row>
232 <row>
233 <entry>__u32</entry>
234 <entry><structfield>reserved</structfield>[4]</entry>
235 <entry>Reserved for future extensions. Drivers and
236applications must set the array to zero.</entry>
237 </row>
238 </tbody>
239 </tgroup>
240 </table>
241
242 <table pgwide="1" frame="none" id="parm-caps">
243 <title>Streaming Parameters Capabilites</title>
244 <tgroup cols="3">
245 &cs-def;
246 <tbody valign="top">
247 <row>
248 <entry><constant>V4L2_CAP_TIMEPERFRAME</constant></entry>
249 <entry>0x1000</entry>
250 <entry>The frame skipping/repeating controlled by the
251<structfield>timeperframe</structfield> field is supported.</entry>
252 </row>
253 </tbody>
254 </tgroup>
255 </table>
256
257 <table pgwide="1" frame="none" id="parm-flags">
258 <title>Capture Parameters Flags</title>
259 <tgroup cols="3">
260 &cs-def;
261 <tbody valign="top">
262 <row>
263 <entry><constant>V4L2_MODE_HIGHQUALITY</constant></entry>
264 <entry>0x0001</entry>
265 <entry><para>High quality imaging mode. High quality mode
266is intended for still imaging applications. The idea is to get the
267best possible image quality that the hardware can deliver. It is not
268defined how the driver writer may achieve that; it will depend on the
269hardware and the ingenuity of the driver writer. High quality mode is
270a different mode from the regular motion video capture modes. In
271high quality mode:<itemizedlist>
272 <listitem>
273 <para>The driver may be able to capture higher
274resolutions than for motion capture.</para>
275 </listitem>
276 <listitem>
277 <para>The driver may support fewer pixel formats
278than motion capture (eg; true color).</para>
279 </listitem>
280 <listitem>
281 <para>The driver may capture and arithmetically
282combine multiple successive fields or frames to remove color edge
283artifacts and reduce the noise in the video data.
284</para>
285 </listitem>
286 <listitem>
287 <para>The driver may capture images in slices like
288a scanner in order to handle larger format images than would otherwise
289be possible. </para>
290 </listitem>
291 <listitem>
292 <para>An image capture operation may be
293significantly slower than motion capture. </para>
294 </listitem>
295 <listitem>
296 <para>Moving objects in the image might have
297excessive motion blur. </para>
298 </listitem>
299 <listitem>
300 <para>Capture might only work through the
301<function>read()</function> call.</para>
302 </listitem>
303 </itemizedlist></para></entry>
304 </row>
305 </tbody>
306 </tgroup>
307 </table>
308
309 </refsect1>
310
311 <refsect1>
312 &return-value;
313 </refsect1>
314</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-priority.xml b/Documentation/DocBook/media/v4l/vidioc-g-priority.xml
deleted file mode 100644
index 6a81b4fe9538..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-priority.xml
+++ /dev/null
@@ -1,135 +0,0 @@
1<refentry id="vidioc-g-priority">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_PRIORITY, VIDIOC_S_PRIORITY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_PRIORITY</refname>
9 <refname>VIDIOC_S_PRIORITY</refname>
10 <refpurpose>Query or request the access priority associated with a
11file descriptor</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>enum v4l2_priority *<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 <funcsynopsis>
24 <funcprototype>
25 <funcdef>int <function>ioctl</function></funcdef>
26 <paramdef>int <parameter>fd</parameter></paramdef>
27 <paramdef>int <parameter>request</parameter></paramdef>
28 <paramdef>const enum v4l2_priority *<parameter>argp</parameter></paramdef>
29 </funcprototype>
30 </funcsynopsis>
31 </refsynopsisdiv>
32
33 <refsect1>
34 <title>Arguments</title>
35
36 <variablelist>
37 <varlistentry>
38 <term><parameter>fd</parameter></term>
39 <listitem>
40 <para>&fd;</para>
41 </listitem>
42 </varlistentry>
43 <varlistentry>
44 <term><parameter>request</parameter></term>
45 <listitem>
46 <para>VIDIOC_G_PRIORITY, VIDIOC_S_PRIORITY</para>
47 </listitem>
48 </varlistentry>
49 <varlistentry>
50 <term><parameter>argp</parameter></term>
51 <listitem>
52 <para>Pointer to an enum v4l2_priority type.</para>
53 </listitem>
54 </varlistentry>
55 </variablelist>
56 </refsect1>
57
58 <refsect1>
59 <title>Description</title>
60
61 <para>To query the current access priority
62applications call the <constant>VIDIOC_G_PRIORITY</constant> ioctl
63with a pointer to an enum v4l2_priority variable where the driver stores
64the current priority.</para>
65
66 <para>To request an access priority applications store the
67desired priority in an enum v4l2_priority variable and call
68<constant>VIDIOC_S_PRIORITY</constant> ioctl with a pointer to this
69variable.</para>
70
71 <table frame="none" pgwide="1" id="v4l2-priority">
72 <title>enum v4l2_priority</title>
73 <tgroup cols="3">
74 &cs-def;
75 <tbody valign="top">
76 <row>
77 <entry><constant>V4L2_PRIORITY_UNSET</constant></entry>
78 <entry>0</entry>
79 <entry></entry>
80 </row>
81 <row>
82 <entry><constant>V4L2_PRIORITY_BACKGROUND</constant></entry>
83 <entry>1</entry>
84 <entry>Lowest priority, usually applications running in
85background, for example monitoring VBI transmissions. A proxy
86application running in user space will be necessary if multiple
87applications want to read from a device at this priority.</entry>
88 </row>
89 <row>
90 <entry><constant>V4L2_PRIORITY_INTERACTIVE</constant></entry>
91 <entry>2</entry>
92 <entry></entry>
93 </row>
94 <row>
95 <entry><constant>V4L2_PRIORITY_DEFAULT</constant></entry>
96 <entry>2</entry>
97 <entry>Medium priority, usually applications started and
98interactively controlled by the user. For example TV viewers, Teletext
99browsers, or just "panel" applications to change the channel or video
100controls. This is the default priority unless an application requests
101another.</entry>
102 </row>
103 <row>
104 <entry><constant>V4L2_PRIORITY_RECORD</constant></entry>
105 <entry>3</entry>
106 <entry>Highest priority. Only one file descriptor can have
107this priority, it blocks any other fd from changing device properties.
108Usually applications which must not be interrupted, like video
109recording.</entry>
110 </row>
111 </tbody>
112 </tgroup>
113 </table>
114 </refsect1>
115
116 <refsect1>
117 &return-value;
118
119 <variablelist>
120 <varlistentry>
121 <term><errorcode>EINVAL</errorcode></term>
122 <listitem>
123 <para>The requested priority value is invalid.</para>
124 </listitem>
125 </varlistentry>
126 <varlistentry>
127 <term><errorcode>EBUSY</errorcode></term>
128 <listitem>
129 <para>Another application already requested higher
130priority.</para>
131 </listitem>
132 </varlistentry>
133 </variablelist>
134 </refsect1>
135</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
deleted file mode 100644
index 997f4e96f297..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-selection.xml
+++ /dev/null
@@ -1,233 +0,0 @@
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 <para>The ioctls are used to query and configure selection rectangles.</para>
54
55<para>To query the cropping (composing) rectangle set &v4l2-selection;
56<structfield> type </structfield> field to the respective buffer type.
57Do not use the multiplanar buffer types. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
58instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant> and use
59<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
60<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>. The next step is
61setting the value of &v4l2-selection; <structfield>target</structfield> field
62to <constant>V4L2_SEL_TGT_CROP</constant> (<constant>V4L2_SEL_TGT_COMPOSE</constant>).
63Please refer to table <xref linkend="v4l2-selections-common" /> or <xref linkend="selection-api" />
64for additional targets. The <structfield>flags</structfield> and <structfield>reserved
65</structfield> fields of &v4l2-selection; are ignored and they must be filled
66with zeros. The driver fills the rest of the structure or
67returns &EINVAL; if incorrect buffer type or target was used. If cropping
68(composing) is not supported then the active rectangle is not mutable and it is
69always equal to the bounds rectangle. Finally, the &v4l2-rect;
70<structfield>r</structfield> rectangle is filled with the current cropping
71(composing) coordinates. The coordinates are expressed in driver-dependent
72units. The only exception are rectangles for images in raw formats, whose
73coordinates are always expressed in pixels.</para>
74
75<para>To change the cropping (composing) rectangle set the &v4l2-selection;
76<structfield>type</structfield> field to the respective buffer type. Do not
77use multiplanar buffers. Use <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>
78instead of <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE</constant>. Use
79<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant> instead of
80<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>. The next step is
81setting the value of &v4l2-selection; <structfield>target</structfield> to
82<constant>V4L2_SEL_TGT_CROP</constant> (<constant>V4L2_SEL_TGT_COMPOSE</constant>).
83Please refer to table <xref linkend="v4l2-selections-common" /> or <xref linkend="selection-api" />
84for additional targets. The &v4l2-rect; <structfield>r</structfield> rectangle need to be
85set to the desired active area. Field &v4l2-selection; <structfield> reserved
86</structfield> is ignored and must be filled with zeros. The driver may adjust
87coordinates of the requested rectangle. An application may
88introduce constraints to control rounding behaviour. The &v4l2-selection;
89<structfield>flags</structfield> field must be set to one of the following:
90
91<itemizedlist>
92 <listitem>
93<para><constant>0</constant> - The driver can adjust the rectangle size freely
94and shall choose a crop/compose rectangle as close as possible to the requested
95one.</para>
96 </listitem>
97 <listitem>
98<para><constant>V4L2_SEL_FLAG_GE</constant> - The driver is not allowed to
99shrink the rectangle. The original rectangle must lay inside the adjusted
100one.</para>
101 </listitem>
102 <listitem>
103<para><constant>V4L2_SEL_FLAG_LE</constant> - The driver is not allowed to
104enlarge the rectangle. The adjusted rectangle must lay inside the original
105one.</para>
106 </listitem>
107 <listitem>
108<para><constant>V4L2_SEL_FLAG_GE | V4L2_SEL_FLAG_LE</constant> - The driver
109must choose the size exactly the same as in the requested rectangle.</para>
110 </listitem>
111</itemizedlist>
112
113Please refer to <xref linkend="sel-const-adjust" />.
114
115</para>
116
117<para> The driver may have to adjusts the requested dimensions against hardware
118limits and other parts as the pipeline, i.e. the bounds given by the
119capture/output window or TV display. The closest possible values of horizontal
120and vertical offset and sizes are chosen according to following priority:
121
122<orderedlist>
123 <listitem>
124 <para>Satisfy constraints from &v4l2-selection; <structfield>flags</structfield>.</para>
125 </listitem>
126 <listitem>
127 <para>Adjust width, height, left, and top to hardware limits and alignments.</para>
128 </listitem>
129 <listitem>
130 <para>Keep center of adjusted rectangle as close as possible to the original one.</para>
131 </listitem>
132 <listitem>
133 <para>Keep width and height as close as possible to original ones.</para>
134 </listitem>
135 <listitem>
136 <para>Keep horizontal and vertical offset as close as possible to original ones.</para>
137 </listitem>
138</orderedlist>
139
140On success the &v4l2-rect; <structfield>r</structfield> field contains
141the adjusted rectangle. When the parameters are unsuitable the application may
142modify the cropping (composing) or image parameters and repeat the cycle until
143satisfactory parameters have been negotiated. If constraints flags have to be
144violated at then ERANGE is returned. The error indicates that <emphasis>there
145exist no rectangle</emphasis> that satisfies the constraints.</para>
146
147 <para>Selection targets and flags are documented in <xref
148 linkend="v4l2-selections-common"/>.</para>
149
150 <para>
151 <figure id="sel-const-adjust">
152 <title>Size adjustments with constraint flags.</title>
153 <mediaobject>
154 <imageobject>
155 <imagedata fileref="constraints.png" format="PNG" />
156 </imageobject>
157 <textobject>
158 <phrase>Behaviour of rectangle adjustment for different constraint
159 flags.</phrase>
160 </textobject>
161 </mediaobject>
162 </figure>
163 </para>
164
165 <para>
166 <table pgwide="1" frame="none" id="v4l2-selection">
167 <title>struct <structname>v4l2_selection</structname></title>
168 <tgroup cols="3">
169 &cs-str;
170 <tbody valign="top">
171 <row>
172 <entry>__u32</entry>
173 <entry><structfield>type</structfield></entry>
174 <entry>Type of the buffer (from &v4l2-buf-type;).</entry>
175 </row>
176 <row>
177 <entry>__u32</entry>
178 <entry><structfield>target</structfield></entry>
179 <entry>Used to select between <link linkend="v4l2-selections-common"> cropping
180 and composing rectangles</link>.</entry>
181 </row>
182 <row>
183 <entry>__u32</entry>
184 <entry><structfield>flags</structfield></entry>
185 <entry>Flags controlling the selection rectangle adjustments, refer to
186 <link linkend="v4l2-selection-flags">selection flags</link>.</entry>
187 </row>
188 <row>
189 <entry>&v4l2-rect;</entry>
190 <entry><structfield>r</structfield></entry>
191 <entry>The selection rectangle.</entry>
192 </row>
193 <row>
194 <entry>__u32</entry>
195 <entry><structfield>reserved[9]</structfield></entry>
196 <entry>Reserved fields for future use. Drivers and applications must zero this array.</entry>
197 </row>
198 </tbody>
199 </tgroup>
200 </table>
201 </para>
202 </refsect1>
203
204 <refsect1>
205 &return-value;
206 <variablelist>
207 <varlistentry>
208 <term><errorcode>EINVAL</errorcode></term>
209 <listitem>
210 <para>Given buffer type <structfield>type</structfield> or
211the selection target <structfield>target</structfield> is not supported,
212or the <structfield>flags</structfield> argument is not valid.</para>
213 </listitem>
214 </varlistentry>
215 <varlistentry>
216 <term><errorcode>ERANGE</errorcode></term>
217 <listitem>
218 <para>It is not possible to adjust &v4l2-rect; <structfield>
219r</structfield> rectangle to satisfy all constraints given in the
220<structfield>flags</structfield> argument.</para>
221 </listitem>
222 </varlistentry>
223 <varlistentry>
224 <term><errorcode>EBUSY</errorcode></term>
225 <listitem>
226 <para>It is not possible to apply change of the selection rectangle
227at the moment. Usually because streaming is in progress.</para>
228 </listitem>
229 </varlistentry>
230 </variablelist>
231 </refsect1>
232
233</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
deleted file mode 100644
index d05623c55403..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
+++ /dev/null
@@ -1,255 +0,0 @@
1<refentry id="vidioc-g-sliced-vbi-cap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_SLICED_VBI_CAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_SLICED_VBI_CAP</refname>
9 <refpurpose>Query sliced VBI capabilities</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_sliced_vbi_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_G_SLICED_VBI_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 <para>To find out which data services are supported by a sliced
52VBI capture or output device, applications initialize the
53<structfield>type</structfield> field of a &v4l2-sliced-vbi-cap;,
54clear the <structfield>reserved</structfield> array and
55call the <constant>VIDIOC_G_SLICED_VBI_CAP</constant> ioctl. The
56driver fills in the remaining fields or returns an &EINVAL; if the
57sliced VBI API is unsupported or <structfield>type</structfield>
58is invalid.</para>
59
60 <para>Note the <structfield>type</structfield> field was added,
61and the ioctl changed from read-only to write-read, in Linux 2.6.19.</para>
62
63 <table pgwide="1" frame="none" id="v4l2-sliced-vbi-cap">
64 <title>struct <structname>v4l2_sliced_vbi_cap</structname></title>
65 <tgroup cols="5">
66 <colspec colname="c1" colwidth="3*" />
67 <colspec colname="c2" colwidth="3*" />
68 <colspec colname="c3" colwidth="2*" />
69 <colspec colname="c4" colwidth="2*" />
70 <colspec colname="c5" colwidth="2*" />
71 <spanspec spanname="hspan" namest="c3" nameend="c5" />
72 <tbody valign="top">
73 <row>
74 <entry>__u16</entry>
75 <entry><structfield>service_set</structfield></entry>
76 <entry spanname="hspan">A set of all data services
77supported by the driver. Equal to the union of all elements of the
78<structfield>service_lines </structfield> array.</entry>
79 </row>
80 <row>
81 <entry>__u16</entry>
82 <entry><structfield>service_lines</structfield>[2][24]</entry>
83 <entry spanname="hspan">Each element of this array
84contains a set of data services the hardware can look for or insert
85into a particular scan line. Data services are defined in <xref
86 linkend="vbi-services" />. Array indices map to ITU-R
87line numbers (see also <xref
88 linkend="vbi-525" /> and <xref
89linkend="vbi-625" />) as follows:</entry>
90 </row>
91 <row>
92 <entry></entry>
93 <entry></entry>
94 <entry>Element</entry>
95 <entry>525 line systems</entry>
96 <entry>625 line systems</entry>
97 </row>
98 <row>
99 <entry></entry>
100 <entry></entry>
101 <entry><structfield>service_lines</structfield>[0][1]</entry>
102 <entry align="center">1</entry>
103 <entry align="center">1</entry>
104 </row>
105 <row>
106 <entry></entry>
107 <entry></entry>
108 <entry><structfield>service_lines</structfield>[0][23]</entry>
109 <entry align="center">23</entry>
110 <entry align="center">23</entry>
111 </row>
112 <row>
113 <entry></entry>
114 <entry></entry>
115 <entry><structfield>service_lines</structfield>[1][1]</entry>
116 <entry align="center">264</entry>
117 <entry align="center">314</entry>
118 </row>
119 <row>
120 <entry></entry>
121 <entry></entry>
122 <entry><structfield>service_lines</structfield>[1][23]</entry>
123 <entry align="center">286</entry>
124 <entry align="center">336</entry>
125 </row>
126 <row>
127 <entry></entry>
128 </row>
129 <row>
130 <entry></entry>
131 <entry></entry>
132 <entry spanname="hspan">The number of VBI lines the
133hardware can capture or output per frame, or the number of services it
134can identify on a given line may be limited. For example on PAL line
13516 the hardware may be able to look for a VPS or Teletext signal, but
136not both at the same time. Applications can learn about these limits
137using the &VIDIOC-S-FMT; ioctl as described in <xref
138 linkend="sliced" />.</entry>
139 </row>
140 <row>
141 <entry></entry>
142 </row>
143 <row>
144 <entry></entry>
145 <entry></entry>
146 <entry spanname="hspan">Drivers must set
147<structfield>service_lines</structfield>[0][0] and
148<structfield>service_lines</structfield>[1][0] to zero.</entry>
149 </row>
150 <row>
151 <entry>__u32</entry>
152 <entry><structfield>type</structfield></entry>
153 <entry>Type of the data stream, see <xref
154 linkend="v4l2-buf-type" />. Should be
155<constant>V4L2_BUF_TYPE_SLICED_VBI_CAPTURE</constant> or
156<constant>V4L2_BUF_TYPE_SLICED_VBI_OUTPUT</constant>.</entry>
157 </row>
158 <row>
159 <entry>__u32</entry>
160 <entry><structfield>reserved</structfield>[3]</entry>
161 <entry spanname="hspan">This array is reserved for future
162extensions. Applications and drivers must set it to zero.</entry>
163 </row>
164 </tbody>
165 </tgroup>
166 </table>
167
168 <!-- See also dev-sliced-vbi.sgml -->
169 <table pgwide="1" frame="none" id="vbi-services">
170 <title>Sliced VBI services</title>
171 <tgroup cols="5">
172 <colspec colname="c1" colwidth="2*" />
173 <colspec colname="c2" colwidth="1*" />
174 <colspec colname="c3" colwidth="1*" />
175 <colspec colname="c4" colwidth="2*" />
176 <colspec colname="c5" colwidth="2*" />
177 <spanspec spanname='rlp' namest='c3' nameend='c5' />
178 <thead>
179 <row>
180 <entry>Symbol</entry>
181 <entry>Value</entry>
182 <entry>Reference</entry>
183 <entry>Lines, usually</entry>
184 <entry>Payload</entry>
185 </row>
186 </thead>
187 <tbody valign="top">
188 <row>
189 <entry><constant>V4L2_SLICED_TELETEXT_B</constant> (Teletext
190System B)</entry>
191 <entry>0x0001</entry>
192 <entry><xref linkend="ets300706" />, <xref linkend="itu653" /></entry>
193 <entry>PAL/SECAM line 7-22, 320-335 (second field 7-22)</entry>
194 <entry>Last 42 of the 45 byte Teletext packet, that is
195without clock run-in and framing code, lsb first transmitted.</entry>
196 </row>
197 <row>
198 <entry><constant>V4L2_SLICED_VPS</constant></entry>
199 <entry>0x0400</entry>
200 <entry><xref linkend="ets300231" /></entry>
201 <entry>PAL line 16</entry>
202 <entry>Byte number 3 to 15 according to Figure 9 of
203ETS&nbsp;300&nbsp;231, lsb first transmitted.</entry>
204 </row>
205 <row>
206 <entry><constant>V4L2_SLICED_CAPTION_525</constant></entry>
207 <entry>0x1000</entry>
208 <entry><xref linkend="cea608" /></entry>
209 <entry>NTSC line 21, 284 (second field 21)</entry>
210 <entry>Two bytes in transmission order, including parity
211bit, lsb first transmitted.</entry>
212 </row>
213 <row>
214 <entry><constant>V4L2_SLICED_WSS_625</constant></entry>
215 <entry>0x4000</entry>
216 <entry><xref linkend="en300294" />, <xref linkend="itu1119" /></entry>
217 <entry>PAL/SECAM line 23</entry>
218 <entry><screen>
219Byte 0 1
220 msb lsb msb lsb
221Bit 7 6 5 4 3 2 1 0 x x 13 12 11 10 9
222</screen></entry>
223 </row>
224 <row>
225 <entry><constant>V4L2_SLICED_VBI_525</constant></entry>
226 <entry>0x1000</entry>
227 <entry spanname="rlp">Set of services applicable to 525
228line systems.</entry>
229 </row>
230 <row>
231 <entry><constant>V4L2_SLICED_VBI_625</constant></entry>
232 <entry>0x4401</entry>
233 <entry spanname="rlp">Set of services applicable to 625
234line systems.</entry>
235 </row>
236 </tbody>
237 </tgroup>
238 </table>
239
240 </refsect1>
241
242 <refsect1>
243 &return-value;
244
245 <variablelist>
246 <varlistentry>
247 <term><errorcode>EINVAL</errorcode></term>
248 <listitem>
249 <para>The value in the <structfield>type</structfield> field is
250wrong.</para>
251 </listitem>
252 </varlistentry>
253 </variablelist>
254 </refsect1>
255</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-std.xml b/Documentation/DocBook/media/v4l/vidioc-g-std.xml
deleted file mode 100644
index 4a898417de28..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-std.xml
+++ /dev/null
@@ -1,98 +0,0 @@
1<refentry id="vidioc-g-std">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_STD, VIDIOC_S_STD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_STD</refname>
9 <refname>VIDIOC_S_STD</refname>
10 <refpurpose>Query or select the video standard of the current input</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>v4l2_std_id
20*<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 <funcsynopsis>
24 <funcprototype>
25 <funcdef>int <function>ioctl</function></funcdef>
26 <paramdef>int <parameter>fd</parameter></paramdef>
27 <paramdef>int <parameter>request</parameter></paramdef>
28 <paramdef>const v4l2_std_id
29*<parameter>argp</parameter></paramdef>
30 </funcprototype>
31 </funcsynopsis>
32 </refsynopsisdiv>
33
34 <refsect1>
35 <title>Arguments</title>
36
37 <variablelist>
38 <varlistentry>
39 <term><parameter>fd</parameter></term>
40 <listitem>
41 <para>&fd;</para>
42 </listitem>
43 </varlistentry>
44 <varlistentry>
45 <term><parameter>request</parameter></term>
46 <listitem>
47 <para>VIDIOC_G_STD, VIDIOC_S_STD</para>
48 </listitem>
49 </varlistentry>
50 <varlistentry>
51 <term><parameter>argp</parameter></term>
52 <listitem>
53 <para></para>
54 </listitem>
55 </varlistentry>
56 </variablelist>
57 </refsect1>
58
59 <refsect1>
60 <title>Description</title>
61
62 <para>To query and select the current video standard applications
63use the <constant>VIDIOC_G_STD</constant> and <constant>VIDIOC_S_STD</constant> ioctls which take a pointer to a
64&v4l2-std-id; type as argument. <constant>VIDIOC_G_STD</constant> can
65return a single flag or a set of flags as in &v4l2-standard; field
66<structfield>id</structfield>. The flags must be unambiguous such
67that they appear in only one enumerated <structname>v4l2_standard</structname> structure.</para>
68
69 <para><constant>VIDIOC_S_STD</constant> accepts one or more
70flags, being a write-only ioctl it does not return the actual new standard as
71<constant>VIDIOC_G_STD</constant> does. When no flags are given or
72the current input does not support the requested standard the driver
73returns an &EINVAL;. When the standard set is ambiguous drivers may
74return <errorcode>EINVAL</errorcode> or choose any of the requested
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>
78 </refsect1>
79
80 <refsect1>
81 &return-value;
82
83 <variablelist>
84 <varlistentry>
85 <term><errorcode>EINVAL</errorcode></term>
86 <listitem>
87 <para>The <constant>VIDIOC_S_STD</constant> parameter was unsuitable.</para>
88 </listitem>
89 </varlistentry>
90 <varlistentry>
91 <term><errorcode>ENODATA</errorcode></term>
92 <listitem>
93 <para>Standard video timings are not supported for this input or output.</para>
94 </listitem>
95 </varlistentry>
96 </variablelist>
97 </refsect1>
98</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
deleted file mode 100644
index 459b7e561f3c..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
+++ /dev/null
@@ -1,594 +0,0 @@
1<refentry id="vidioc-g-tuner">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_G_TUNER, VIDIOC_S_TUNER</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_G_TUNER</refname>
9 <refname>VIDIOC_S_TUNER</refname>
10 <refpurpose>Get or set tuner attributes</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_tuner
20*<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 <funcsynopsis>
24 <funcprototype>
25 <funcdef>int <function>ioctl</function></funcdef>
26 <paramdef>int <parameter>fd</parameter></paramdef>
27 <paramdef>int <parameter>request</parameter></paramdef>
28 <paramdef>const struct v4l2_tuner
29*<parameter>argp</parameter></paramdef>
30 </funcprototype>
31 </funcsynopsis>
32 </refsynopsisdiv>
33
34 <refsect1>
35 <title>Arguments</title>
36
37 <variablelist>
38 <varlistentry>
39 <term><parameter>fd</parameter></term>
40 <listitem>
41 <para>&fd;</para>
42 </listitem>
43 </varlistentry>
44 <varlistentry>
45 <term><parameter>request</parameter></term>
46 <listitem>
47 <para>VIDIOC_G_TUNER, VIDIOC_S_TUNER</para>
48 </listitem>
49 </varlistentry>
50 <varlistentry>
51 <term><parameter>argp</parameter></term>
52 <listitem>
53 <para></para>
54 </listitem>
55 </varlistentry>
56 </variablelist>
57 </refsect1>
58
59 <refsect1>
60 <title>Description</title>
61
62 <para>To query the attributes of a tuner applications initialize the
63<structfield>index</structfield> field and zero out the
64<structfield>reserved</structfield> array of a &v4l2-tuner; and call the
65<constant>VIDIOC_G_TUNER</constant> ioctl with a pointer to this
66structure. Drivers fill the rest of the structure or return an
67&EINVAL; when the index is out of bounds. To enumerate all tuners
68applications shall begin at index zero, incrementing by one until the
69driver returns <errorcode>EINVAL</errorcode>.</para>
70
71 <para>Tuners have two writable properties, the audio mode and
72the radio frequency. To change the audio mode, applications initialize
73the <structfield>index</structfield>,
74<structfield>audmode</structfield> and
75<structfield>reserved</structfield> fields and call the
76<constant>VIDIOC_S_TUNER</constant> ioctl. This will
77<emphasis>not</emphasis> change the current tuner, which is determined
78by the current video input. Drivers may choose a different audio mode
79if the requested mode is invalid or unsupported. Since this is a
80<!-- FIXME -->write-only ioctl, it does not return the actually
81selected audio mode.</para>
82
83 <para><link linkend="sdr">SDR</link> specific tuner types are
84<constant>V4L2_TUNER_SDR</constant> and <constant>V4L2_TUNER_RF</constant>.
85For SDR devices <structfield>audmode</structfield> field must be
86initialized to zero.
87The term 'tuner' means SDR receiver in this context.</para>
88
89 <para>To change the radio frequency the &VIDIOC-S-FREQUENCY; ioctl
90is available.</para>
91
92 <table pgwide="1" frame="none" id="v4l2-tuner">
93 <title>struct <structname>v4l2_tuner</structname></title>
94 <tgroup cols="3">
95 <colspec colname="c1" colwidth="1*" />
96 <colspec colname="c2" colwidth="1*" />
97 <colspec colname="c3" colwidth="1*" />
98 <colspec colname="c4" colwidth="1*" />
99 <spanspec spanname="hspan" namest="c3" nameend="c4" />
100 <tbody valign="top">
101 <row>
102 <entry>__u32</entry>
103 <entry><structfield>index</structfield></entry>
104 <entry spanname="hspan">Identifies the tuner, set by the
105application.</entry>
106 </row>
107 <row>
108 <entry>__u8</entry>
109 <entry><structfield>name</structfield>[32]</entry>
110 <entry spanname="hspan"><para>Name of the tuner, a
111NUL-terminated ASCII string. This information is intended for the
112user.<!-- FIXME Video inputs already have a name, the purpose of this
113field is not quite clear.--></para></entry>
114 </row>
115 <row>
116 <entry>__u32</entry>
117 <entry><structfield>type</structfield></entry>
118 <entry spanname="hspan">Type of the tuner, see <xref
119 linkend="v4l2-tuner-type" />.</entry>
120 </row>
121 <row>
122 <entry>__u32</entry>
123 <entry><structfield>capability</structfield></entry>
124 <entry spanname="hspan"><para>Tuner capability flags, see
125<xref linkend="tuner-capability" />. Audio flags indicate the ability
126to decode audio subprograms. They will <emphasis>not</emphasis>
127change, for example with the current video standard.</para><para>When
128the structure refers to a radio tuner the
129<constant>V4L2_TUNER_CAP_LANG1</constant>,
130<constant>V4L2_TUNER_CAP_LANG2</constant> and
131<constant>V4L2_TUNER_CAP_NORM</constant> flags can't be used.</para>
132<para>If multiple frequency bands are supported, then
133<structfield>capability</structfield> is the union of all
134<structfield>capability</structfield> fields of each &v4l2-frequency-band;.
135</para></entry>
136 </row>
137 <row>
138 <entry>__u32</entry>
139 <entry><structfield>rangelow</structfield></entry>
140 <entry spanname="hspan">The lowest tunable frequency in
141units of 62.5 kHz, or if the <structfield>capability</structfield>
142flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
143Hz, or if the <structfield>capability</structfield> flag
144<constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.
145If multiple frequency bands are supported, then
146<structfield>rangelow</structfield> is the lowest frequency
147of all the frequency bands.</entry>
148 </row>
149 <row>
150 <entry>__u32</entry>
151 <entry><structfield>rangehigh</structfield></entry>
152 <entry spanname="hspan">The highest tunable frequency in
153units of 62.5 kHz, or if the <structfield>capability</structfield>
154flag <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
155Hz, or if the <structfield>capability</structfield> flag
156<constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.
157If multiple frequency bands are supported, then
158<structfield>rangehigh</structfield> is the highest frequency
159of all the frequency bands.</entry>
160 </row>
161 <row>
162 <entry>__u32</entry>
163 <entry><structfield>rxsubchans</structfield></entry>
164 <entry spanname="hspan"><para>Some tuners or audio
165decoders can determine the received audio subprograms by analyzing
166audio carriers, pilot tones or other indicators. To pass this
167information drivers set flags defined in <xref
168 linkend="tuner-rxsubchans" /> in this field. For
169example:</para></entry>
170 </row>
171 <row>
172 <entry></entry>
173 <entry></entry>
174 <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry>
175 <entry>receiving mono audio</entry>
176 </row>
177 <row>
178 <entry></entry>
179 <entry></entry>
180 <entry><constant>STEREO | SAP</constant></entry>
181 <entry>receiving stereo audio and a secondary audio
182program</entry>
183 </row>
184 <row>
185 <entry></entry>
186 <entry></entry>
187 <entry><constant>MONO | STEREO</constant></entry>
188 <entry>receiving mono or stereo audio, the hardware cannot
189distinguish</entry>
190 </row>
191 <row>
192 <entry></entry>
193 <entry></entry>
194 <entry><constant>LANG1 | LANG2</constant></entry>
195 <entry>receiving bilingual audio</entry>
196 </row>
197 <row>
198 <entry></entry>
199 <entry></entry>
200 <entry><constant>MONO | STEREO | LANG1 | LANG2</constant></entry>
201 <entry>receiving mono, stereo or bilingual
202audio</entry>
203 </row>
204 <row>
205 <entry></entry>
206 <entry></entry>
207 <entry spanname="hspan"><para>When the
208<constant>V4L2_TUNER_CAP_STEREO</constant>,
209<constant>_LANG1</constant>, <constant>_LANG2</constant> or
210<constant>_SAP</constant> flag is cleared in the
211<structfield>capability</structfield> field, the corresponding
212<constant>V4L2_TUNER_SUB_</constant> flag must not be set
213here.</para><para>This field is valid only if this is the tuner of the
214current video input, or when the structure refers to a radio
215tuner.</para></entry>
216 </row>
217 <row>
218 <entry>__u32</entry>
219 <entry><structfield>audmode</structfield></entry>
220 <entry spanname="hspan"><para>The selected audio mode, see
221<xref linkend="tuner-audmode" /> for valid values. The audio mode does
222not affect audio subprogram detection, and like a <link
223linkend="control">control</link> it does not automatically change
224unless the requested mode is invalid or unsupported. See <xref
225 linkend="tuner-matrix" /> for possible results when
226the selected and received audio programs do not
227match.</para><para>Currently this is the only field of struct
228<structname>v4l2_tuner</structname> applications can
229change.</para></entry>
230 </row>
231 <row>
232 <entry>__u32</entry>
233 <entry><structfield>signal</structfield></entry>
234 <entry spanname="hspan">The signal strength if known, ranging
235from 0 to 65535. Higher values indicate a better signal.</entry>
236 </row>
237 <row>
238 <entry>__s32</entry>
239 <entry><structfield>afc</structfield></entry>
240 <entry spanname="hspan">Automatic frequency control: When the
241<structfield>afc</structfield> value is negative, the frequency is too
242low, when positive too high.<!-- FIXME need example what to do when it never
243settles at zero, &ie; range is what? --></entry>
244 </row>
245 <row>
246 <entry>__u32</entry>
247 <entry><structfield>reserved</structfield>[4]</entry>
248 <entry spanname="hspan">Reserved for future extensions. Drivers and
249applications must set the array to zero.</entry>
250 </row>
251 </tbody>
252 </tgroup>
253 </table>
254
255 <table pgwide="1" frame="none" id="v4l2-tuner-type">
256 <title>enum v4l2_tuner_type</title>
257 <tgroup cols="3">
258 &cs-def;
259 <tbody valign="top">
260 <row>
261 <entry><constant>V4L2_TUNER_RADIO</constant></entry>
262 <entry>1</entry>
263 <entry></entry>
264 </row>
265 <row>
266 <entry><constant>V4L2_TUNER_ANALOG_TV</constant></entry>
267 <entry>2</entry>
268 <entry></entry>
269 </row>
270 <row>
271 <entry><constant>V4L2_TUNER_SDR</constant></entry>
272 <entry>4</entry>
273 <entry></entry>
274 </row>
275 <row>
276 <entry><constant>V4L2_TUNER_RF</constant></entry>
277 <entry>5</entry>
278 <entry></entry>
279 </row>
280 </tbody>
281 </tgroup>
282 </table>
283
284 <table pgwide="1" frame="none" id="tuner-capability">
285 <title>Tuner and Modulator Capability Flags</title>
286 <tgroup cols="3">
287 &cs-def;
288 <tbody valign="top">
289 <row>
290 <entry><constant>V4L2_TUNER_CAP_LOW</constant></entry>
291 <entry>0x0001</entry>
292 <entry>When set, tuning frequencies are expressed in units of
29362.5 Hz instead of 62.5 kHz.</entry>
294 </row>
295 <row>
296 <entry><constant>V4L2_TUNER_CAP_NORM</constant></entry>
297 <entry>0x0002</entry>
298 <entry>This is a multi-standard tuner; the video standard
299can or must be switched. (B/G PAL tuners for example are typically not
300 considered multi-standard because the video standard is automatically
301 determined from the frequency band.) The set of supported video
302 standards is available from the &v4l2-input; pointing to this tuner,
303 see the description of ioctl &VIDIOC-ENUMINPUT; for details. Only
304 <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
305 </row>
306 <row>
307 <entry><constant>V4L2_TUNER_CAP_HWSEEK_BOUNDED</constant></entry>
308 <entry>0x0004</entry>
309 <entry>If set, then this tuner supports the hardware seek functionality
310 where the seek stops when it reaches the end of the frequency range.</entry>
311 </row>
312 <row>
313 <entry><constant>V4L2_TUNER_CAP_HWSEEK_WRAP</constant></entry>
314 <entry>0x0008</entry>
315 <entry>If set, then this tuner supports the hardware seek functionality
316 where the seek wraps around when it reaches the end of the frequency range.</entry>
317 </row>
318 <row>
319 <entry><constant>V4L2_TUNER_CAP_STEREO</constant></entry>
320 <entry>0x0010</entry>
321 <entry>Stereo audio reception is supported.</entry>
322 </row>
323 <row>
324 <entry><constant>V4L2_TUNER_CAP_LANG1</constant></entry>
325 <entry>0x0040</entry>
326 <entry>Reception of the primary language of a bilingual
327audio program is supported. Bilingual audio is a feature of
328two-channel systems, transmitting the primary language monaural on the
329main audio carrier and a secondary language monaural on a second
330carrier. Only
331 <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
332 </row>
333 <row>
334 <entry><constant>V4L2_TUNER_CAP_LANG2</constant></entry>
335 <entry>0x0020</entry>
336 <entry>Reception of the secondary language of a bilingual
337audio program is supported. Only
338 <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</entry>
339 </row>
340 <row>
341 <entry><constant>V4L2_TUNER_CAP_SAP</constant></entry>
342 <entry>0x0020</entry>
343 <entry><para>Reception of a secondary audio program is
344supported. This is a feature of the BTSC system which accompanies the
345NTSC video standard. Two audio carriers are available for mono or
346stereo transmissions of a primary language, and an independent third
347carrier for a monaural secondary language. Only
348 <constant>V4L2_TUNER_ANALOG_TV</constant> tuners can have this capability.</para><para>Note the
349<constant>V4L2_TUNER_CAP_LANG2</constant> and
350<constant>V4L2_TUNER_CAP_SAP</constant> flags are synonyms.
351<constant>V4L2_TUNER_CAP_SAP</constant> applies when the tuner
352supports the <constant>V4L2_STD_NTSC_M</constant> video
353standard.</para><!-- FIXME what if PAL+NTSC and Bi but not SAP? --></entry>
354 </row>
355 <row>
356 <entry><constant>V4L2_TUNER_CAP_RDS</constant></entry>
357 <entry>0x0080</entry>
358 <entry>RDS capture is supported. This capability is only valid for
359radio tuners.</entry>
360 </row>
361 <row>
362 <entry><constant>V4L2_TUNER_CAP_RDS_BLOCK_IO</constant></entry>
363 <entry>0x0100</entry>
364 <entry>The RDS data is passed as unparsed RDS blocks.</entry>
365 </row>
366 <row>
367 <entry><constant>V4L2_TUNER_CAP_RDS_CONTROLS</constant></entry>
368 <entry>0x0200</entry>
369 <entry>The RDS data is parsed by the hardware and set via controls.</entry>
370 </row>
371 <row>
372 <entry><constant>V4L2_TUNER_CAP_FREQ_BANDS</constant></entry>
373 <entry>0x0400</entry>
374 <entry>The &VIDIOC-ENUM-FREQ-BANDS; ioctl can be used to enumerate
375 the available frequency bands.</entry>
376 </row>
377 <row>
378 <entry><constant>V4L2_TUNER_CAP_HWSEEK_PROG_LIM</constant></entry>
379 <entry>0x0800</entry>
380 <entry>The range to search when using the hardware seek functionality
381 is programmable, see &VIDIOC-S-HW-FREQ-SEEK; for details.</entry>
382 </row>
383 <row>
384 <entry><constant>V4L2_TUNER_CAP_1HZ</constant></entry>
385 <entry>0x1000</entry>
386 <entry>When set, tuning frequencies are expressed in units of 1 Hz instead of 62.5 kHz.</entry>
387 </row>
388 </tbody>
389 </tgroup>
390 </table>
391
392 <table pgwide="1" frame="none" id="tuner-rxsubchans">
393 <title>Tuner Audio Reception Flags</title>
394 <tgroup cols="3">
395 &cs-def;
396 <tbody valign="top">
397 <row>
398 <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry>
399 <entry>0x0001</entry>
400 <entry>The tuner receives a mono audio signal.</entry>
401 </row>
402 <row>
403 <entry><constant>V4L2_TUNER_SUB_STEREO</constant></entry>
404 <entry>0x0002</entry>
405 <entry>The tuner receives a stereo audio signal.</entry>
406 </row>
407 <row>
408 <entry><constant>V4L2_TUNER_SUB_LANG1</constant></entry>
409 <entry>0x0008</entry>
410 <entry>The tuner receives the primary language of a
411bilingual audio signal. Drivers must clear this flag when the current
412video standard is <constant>V4L2_STD_NTSC_M</constant>.</entry>
413 </row>
414 <row>
415 <entry><constant>V4L2_TUNER_SUB_LANG2</constant></entry>
416 <entry>0x0004</entry>
417 <entry>The tuner receives the secondary language of a
418bilingual audio signal (or a second audio program).</entry>
419 </row>
420 <row>
421 <entry><constant>V4L2_TUNER_SUB_SAP</constant></entry>
422 <entry>0x0004</entry>
423 <entry>The tuner receives a Second Audio Program. Note the
424<constant>V4L2_TUNER_SUB_LANG2</constant> and
425<constant>V4L2_TUNER_SUB_SAP</constant> flags are synonyms. The
426<constant>V4L2_TUNER_SUB_SAP</constant> flag applies when the
427current video standard is <constant>V4L2_STD_NTSC_M</constant>.</entry>
428 </row>
429 <row>
430 <entry><constant>V4L2_TUNER_SUB_RDS</constant></entry>
431 <entry>0x0010</entry>
432 <entry>The tuner receives an RDS channel.</entry>
433 </row>
434 </tbody>
435 </tgroup>
436 </table>
437
438 <table pgwide="1" frame="none" id="tuner-audmode">
439 <title>Tuner Audio Modes</title>
440 <tgroup cols="3">
441 &cs-def;
442 <tbody valign="top">
443 <row>
444 <entry><constant>V4L2_TUNER_MODE_MONO</constant></entry>
445 <entry>0</entry>
446 <entry>Play mono audio. When the tuner receives a stereo
447signal this a down-mix of the left and right channel. When the tuner
448receives a bilingual or SAP signal this mode selects the primary
449language.</entry>
450 </row>
451 <row>
452 <entry><constant>V4L2_TUNER_MODE_STEREO</constant></entry>
453 <entry>1</entry>
454 <entry><para>Play stereo audio. When the tuner receives
455bilingual audio it may play different languages on the left and right
456channel or the primary language is played on both channels.</para><para>Playing
457different languages in this mode is
458deprecated. New drivers should do this only in
459<constant>MODE_LANG1_LANG2</constant>.</para><para>When the tuner
460receives no stereo signal or does not support stereo reception the
461driver shall fall back to <constant>MODE_MONO</constant>.</para></entry>
462 </row>
463 <row>
464 <entry><constant>V4L2_TUNER_MODE_LANG1</constant></entry>
465 <entry>3</entry>
466 <entry>Play the primary language, mono or stereo. Only
467<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this
468mode.</entry>
469 </row>
470 <row>
471 <entry><constant>V4L2_TUNER_MODE_LANG2</constant></entry>
472 <entry>2</entry>
473 <entry>Play the secondary language, mono. When the tuner
474receives no bilingual audio or SAP, or their reception is not
475supported the driver shall fall back to mono or stereo mode. Only
476<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this
477mode.</entry>
478 </row>
479 <row>
480 <entry><constant>V4L2_TUNER_MODE_SAP</constant></entry>
481 <entry>2</entry>
482 <entry>Play the Second Audio Program. When the tuner
483receives no bilingual audio or SAP, or their reception is not
484supported the driver shall fall back to mono or stereo mode. Only
485<constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this mode.
486Note the <constant>V4L2_TUNER_MODE_LANG2</constant> and
487<constant>V4L2_TUNER_MODE_SAP</constant> are synonyms.</entry>
488 </row>
489 <row>
490 <entry><constant>V4L2_TUNER_MODE_LANG1_LANG2</constant></entry>
491 <entry>4</entry>
492 <entry>Play the primary language on the left channel, the
493secondary language on the right channel. When the tuner receives no
494bilingual audio or SAP, it shall fall back to
495<constant>MODE_LANG1</constant> or <constant>MODE_MONO</constant>.
496Only <constant>V4L2_TUNER_ANALOG_TV</constant> tuners support this
497mode.</entry>
498 </row>
499 </tbody>
500 </tgroup>
501 </table>
502
503 <table pgwide="1" frame="all" id="tuner-matrix">
504 <title>Tuner Audio Matrix</title>
505 <tgroup cols="6" align="center">
506 <colspec align="left" />
507 <colspec colname="c2" colwidth="1*" />
508 <colspec colwidth="1*" />
509 <colspec colwidth="1*" />
510 <colspec colnum="6" colname="c6" colwidth="1*" />
511 <spanspec namest="c2" nameend="c6" spanname="hspan" align="center" />
512 <thead>
513 <row>
514 <entry></entry>
515 <entry spanname="hspan">Selected
516<constant>V4L2_TUNER_MODE_</constant></entry>
517 </row>
518 <row>
519 <entry>Received <constant>V4L2_TUNER_SUB_</constant></entry>
520 <entry><constant>MONO</constant></entry>
521 <entry><constant>STEREO</constant></entry>
522 <entry><constant>LANG1</constant></entry>
523 <entry><constant>LANG2 = SAP</constant></entry>
524 <entry><constant>LANG1_LANG2</constant><footnote><para>This
525mode has been added in Linux 2.6.17 and may not be supported by older
526drivers.</para></footnote></entry>
527 </row>
528 </thead>
529 <tbody valign="top">
530 <row>
531 <entry><constant>MONO</constant></entry>
532 <entry>Mono</entry>
533 <entry>Mono/Mono</entry>
534 <entry>Mono</entry>
535 <entry>Mono</entry>
536 <entry>Mono/Mono</entry>
537 </row>
538 <row>
539 <entry><constant>MONO | SAP</constant></entry>
540 <entry>Mono</entry>
541 <entry>Mono/Mono</entry>
542 <entry>Mono</entry>
543 <entry>SAP</entry>
544 <entry>Mono/SAP (preferred) or Mono/Mono</entry>
545 </row>
546 <row>
547 <entry><constant>STEREO</constant></entry>
548 <entry>L+R</entry>
549 <entry>L/R</entry>
550 <entry>Stereo L/R (preferred) or Mono L+R</entry>
551 <entry>Stereo L/R (preferred) or Mono L+R</entry>
552 <entry>L/R (preferred) or L+R/L+R</entry>
553 </row>
554 <row>
555 <entry><constant>STEREO | SAP</constant></entry>
556 <entry>L+R</entry>
557 <entry>L/R</entry>
558 <entry>Stereo L/R (preferred) or Mono L+R</entry>
559 <entry>SAP</entry>
560 <entry>L+R/SAP (preferred) or L/R or L+R/L+R</entry>
561 </row>
562 <row>
563 <entry><constant>LANG1 | LANG2</constant></entry>
564 <entry>Language&nbsp;1</entry>
565 <entry>Lang1/Lang2 (deprecated<footnote><para>Playback of
566both languages in <constant>MODE_STEREO</constant> is deprecated. In
567the future drivers should produce only the primary language in this
568mode. Applications should request
569<constant>MODE_LANG1_LANG2</constant> to record both languages or a
570stereo signal.</para></footnote>) or
571Lang1/Lang1</entry>
572 <entry>Language&nbsp;1</entry>
573 <entry>Language&nbsp;2</entry>
574 <entry>Lang1/Lang2 (preferred) or Lang1/Lang1</entry>
575 </row>
576 </tbody>
577 </tgroup>
578 </table>
579 </refsect1>
580
581 <refsect1>
582 &return-value;
583
584 <variablelist>
585 <varlistentry>
586 <term><errorcode>EINVAL</errorcode></term>
587 <listitem>
588 <para>The &v4l2-tuner; <structfield>index</structfield> is
589out of bounds.</para>
590 </listitem>
591 </varlistentry>
592 </variablelist>
593 </refsect1>
594</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-log-status.xml b/Documentation/DocBook/media/v4l/vidioc-log-status.xml
deleted file mode 100644
index 5ded7d35e27b..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-log-status.xml
+++ /dev/null
@@ -1,41 +0,0 @@
1<refentry id="vidioc-log-status">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_LOG_STATUS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_LOG_STATUS</refname>
9 <refpurpose>Log driver status information</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 </funcprototype>
19 </funcsynopsis>
20 </refsynopsisdiv>
21
22 <refsect1>
23 <title>Description</title>
24
25 <para>As the video/audio devices become more complicated it
26becomes harder to debug problems. When this ioctl is called the driver
27will output the current device status to the kernel log. This is
28particular useful when dealing with problems like no sound, no video
29and incorrectly tuned channels. Also many modern devices autodetect
30video and audio standards and this ioctl will report what the device
31thinks what the standard is. Mismatches may give an indication where
32the problem is.</para>
33
34 <para>This ioctl is optional and not all drivers support it. It
35was introduced in Linux 2.6.15.</para>
36 </refsect1>
37
38 <refsect1>
39 &return-value;
40 </refsect1>
41</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-overlay.xml b/Documentation/DocBook/media/v4l/vidioc-overlay.xml
deleted file mode 100644
index 250a7de1877f..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-overlay.xml
+++ /dev/null
@@ -1,74 +0,0 @@
1<refentry id="vidioc-overlay">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_OVERLAY</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_OVERLAY</refname>
9 <refpurpose>Start or stop video overlay</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>const int *<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_OVERLAY</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 <para>This ioctl is part of the <link linkend="overlay">video
52 overlay</link> I/O method. Applications call
53 <constant>VIDIOC_OVERLAY</constant> to start or stop the
54 overlay. It takes a pointer to an integer which must be set to
55 zero by the application to stop overlay, to one to start.</para>
56
57 <para>Drivers do not support &VIDIOC-STREAMON; or
58&VIDIOC-STREAMOFF; with <constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>.</para>
59 </refsect1>
60
61 <refsect1>
62 &return-value;
63
64 <variablelist>
65 <varlistentry>
66 <term><errorcode>EINVAL</errorcode></term>
67 <listitem>
68 <para>The overlay parameters have not been set up. See <xref
69linkend="overlay" /> for the necessary steps.</para>
70 </listitem>
71 </varlistentry>
72 </variablelist>
73 </refsect1>
74</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
deleted file mode 100644
index 7bde698760e4..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
+++ /dev/null
@@ -1,88 +0,0 @@
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 <para>Applications can optionally call the
52<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer
53to the driver before actually enqueuing it, using the
54<constant>VIDIOC_QBUF</constant> ioctl, and to prepare it for future I/O.
55Such preparations may include cache invalidation or cleaning. Performing them
56in advance saves time during the actual I/O. In case such cache operations are
57not required, the application can use one of
58<constant>V4L2_BUF_FLAG_NO_CACHE_INVALIDATE</constant> and
59<constant>V4L2_BUF_FLAG_NO_CACHE_CLEAN</constant> flags to skip the respective
60step.</para>
61
62 <para>The <structname>v4l2_buffer</structname> structure is
63specified in <xref linkend="buffer" />.</para>
64 </refsect1>
65
66 <refsect1>
67 &return-value;
68
69 <variablelist>
70 <varlistentry>
71 <term><errorcode>EBUSY</errorcode></term>
72 <listitem>
73 <para>File I/O is in progress.</para>
74 </listitem>
75 </varlistentry>
76 <varlistentry>
77 <term><errorcode>EINVAL</errorcode></term>
78 <listitem>
79 <para>The buffer <structfield>type</structfield> is not
80supported, or the <structfield>index</structfield> is out of bounds,
81or no buffers have been allocated yet, or the
82<structfield>userptr</structfield> or
83<structfield>length</structfield> are invalid.</para>
84 </listitem>
85 </varlistentry>
86 </variablelist>
87 </refsect1>
88</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-qbuf.xml b/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
deleted file mode 100644
index 8b98a0e421fc..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-qbuf.xml
+++ /dev/null
@@ -1,202 +0,0 @@
1<refentry id="vidioc-qbuf">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QBUF, VIDIOC_DQBUF</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QBUF</refname>
9 <refname>VIDIOC_DQBUF</refname>
10 <refpurpose>Exchange a buffer with the driver</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_buffer *<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_QBUF, VIDIOC_DQBUF</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>Applications call the <constant>VIDIOC_QBUF</constant> ioctl
53to enqueue an empty (capturing) or filled (output) buffer in the
54driver's incoming queue. The semantics depend on the selected I/O
55method.</para>
56
57 <para>To enqueue a buffer applications set the <structfield>type</structfield>
58field of a &v4l2-buffer; to the same buffer type as was previously used
59with &v4l2-format; <structfield>type</structfield> and &v4l2-requestbuffers;
60<structfield>type</structfield>. Applications must also set the
61<structfield>index</structfield> field. Valid index numbers range from
62zero to the number of buffers allocated with &VIDIOC-REQBUFS;
63(&v4l2-requestbuffers; <structfield>count</structfield>) minus one. The
64contents of the struct <structname>v4l2_buffer</structname> returned
65by a &VIDIOC-QUERYBUF; ioctl will do as well. When the buffer is
66intended for output (<structfield>type</structfield> is
67<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
68<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, or
69<constant>V4L2_BUF_TYPE_VBI_OUTPUT</constant>) applications must also
70initialize the <structfield>bytesused</structfield>,
71<structfield>field</structfield> and
72<structfield>timestamp</structfield> fields, see <xref
73linkend="buffer" /> for details.
74Applications must also set <structfield>flags</structfield> to 0.
75The <structfield>reserved2</structfield> and
76<structfield>reserved</structfield> fields must be set to 0. When using
77the <link linkend="planar-apis">multi-planar API</link>, the
78<structfield>m.planes</structfield> field must contain a userspace pointer
79to a filled-in array of &v4l2-plane; and the <structfield>length</structfield>
80field must be set to the number of elements in that array.
81</para>
82
83 <para>To enqueue a <link linkend="mmap">memory mapped</link>
84buffer applications set the <structfield>memory</structfield>
85field to <constant>V4L2_MEMORY_MMAP</constant>. When
86<constant>VIDIOC_QBUF</constant> is called with a pointer to this
87structure the driver sets the
88<constant>V4L2_BUF_FLAG_MAPPED</constant> and
89<constant>V4L2_BUF_FLAG_QUEUED</constant> flags and clears the
90<constant>V4L2_BUF_FLAG_DONE</constant> flag in the
91<structfield>flags</structfield> field, or it returns an
92&EINVAL;.</para>
93
94 <para>To enqueue a <link linkend="userp">user pointer</link>
95buffer applications set the <structfield>memory</structfield>
96field to <constant>V4L2_MEMORY_USERPTR</constant>, the
97<structfield>m.userptr</structfield> field to the address of the
98buffer and <structfield>length</structfield> to its size. When the multi-planar
99API is used, <structfield>m.userptr</structfield> and
100<structfield>length</structfield> members of the passed array of &v4l2-plane;
101have to be used instead. When <constant>VIDIOC_QBUF</constant> is called with
102a pointer to this structure the driver sets the
103<constant>V4L2_BUF_FLAG_QUEUED</constant> flag and clears the
104<constant>V4L2_BUF_FLAG_MAPPED</constant> and
105<constant>V4L2_BUF_FLAG_DONE</constant> flags in the
106<structfield>flags</structfield> field, or it returns an error code.
107This ioctl locks the memory pages of the buffer in physical memory,
108they cannot be swapped out to disk. Buffers remain locked until
109dequeued, until the &VIDIOC-STREAMOFF; or &VIDIOC-REQBUFS; ioctl is
110called, or until the device is closed.</para>
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
129 <para>Applications call the <constant>VIDIOC_DQBUF</constant>
130ioctl to dequeue a filled (capturing) or displayed (output) buffer
131from the driver's outgoing queue. They just set the
132<structfield>type</structfield>, <structfield>memory</structfield>
133and <structfield>reserved</structfield>
134fields of a &v4l2-buffer; as above, when <constant>VIDIOC_DQBUF</constant>
135is called with a pointer to this structure the driver fills the
136remaining fields or returns an error code. The driver may also set
137<constant>V4L2_BUF_FLAG_ERROR</constant> in the <structfield>flags</structfield>
138field. It indicates a non-critical (recoverable) streaming error. In such case
139the application may continue as normal, but should be aware that data in the
140dequeued buffer might be corrupted. When using the multi-planar API, the
141planes array must be passed in as well.</para>
142
143 <para>By default <constant>VIDIOC_DQBUF</constant> blocks when no
144buffer is in the outgoing queue. When the
145<constant>O_NONBLOCK</constant> flag was given to the &func-open;
146function, <constant>VIDIOC_DQBUF</constant> returns immediately
147with an &EAGAIN; when no buffer is available.</para>
148
149 <para>The <structname>v4l2_buffer</structname> structure is
150specified in <xref linkend="buffer" />.</para>
151 </refsect1>
152
153 <refsect1>
154 &return-value;
155
156 <variablelist>
157 <varlistentry>
158 <term><errorcode>EAGAIN</errorcode></term>
159 <listitem>
160 <para>Non-blocking I/O has been selected using
161<constant>O_NONBLOCK</constant> and no buffer was in the outgoing
162queue.</para>
163 </listitem>
164 </varlistentry>
165 <varlistentry>
166 <term><errorcode>EINVAL</errorcode></term>
167 <listitem>
168 <para>The buffer <structfield>type</structfield> is not
169supported, or the <structfield>index</structfield> is out of bounds,
170or no buffers have been allocated yet, or the
171<structfield>userptr</structfield> or
172<structfield>length</structfield> are invalid.</para>
173 </listitem>
174 </varlistentry>
175 <varlistentry>
176 <term><errorcode>EIO</errorcode></term>
177 <listitem>
178 <para><constant>VIDIOC_DQBUF</constant> failed due to an
179internal error. Can also indicate temporary problems like signal
180loss. Note the driver might dequeue an (empty) buffer despite
181returning an error, or even stop capturing. Reusing such buffer may be unsafe
182though and its details (e.g. <structfield>index</structfield>) may not be
183returned either. It is recommended that drivers indicate recoverable errors
184by setting the <constant>V4L2_BUF_FLAG_ERROR</constant> and returning 0 instead.
185In that case the application should be able to safely reuse the buffer and
186continue streaming.
187 </para>
188 </listitem>
189 </varlistentry>
190 <varlistentry>
191 <term><errorcode>EPIPE</errorcode></term>
192 <listitem>
193 <para><constant>VIDIOC_DQBUF</constant> returns this on an empty
194capture queue for mem2mem codecs if a buffer with the
195<constant>V4L2_BUF_FLAG_LAST</constant> was already dequeued and no new buffers
196are expected to become available.
197 </para>
198 </listitem>
199 </varlistentry>
200 </variablelist>
201 </refsect1>
202</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
deleted file mode 100644
index d41bf47ee5a2..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
+++ /dev/null
@@ -1,115 +0,0 @@
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 <refname>VIDIOC_SUBDEV_QUERY_DV_TIMINGS</refname>
10 <refpurpose>Sense the DV preset received by the current
11input</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_dv_timings *<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_QUERY_DV_TIMINGS, VIDIOC_SUBDEV_QUERY_DV_TIMINGS</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 <para>The hardware may be able to detect the current DV timings
54automatically, similar to sensing the video standard. To do so, applications
55call <constant>VIDIOC_QUERY_DV_TIMINGS</constant> with a pointer to a
56&v4l2-dv-timings;. Once the hardware detects the timings, it will fill in the
57timings structure.</para>
58
59<para>Please note that drivers shall <emphasis>not</emphasis> switch timings automatically
60if new timings are detected. Instead, drivers should send the
61<constant>V4L2_EVENT_SOURCE_CHANGE</constant> event (if they support this) and expect
62that userspace will take action by calling <constant>VIDIOC_QUERY_DV_TIMINGS</constant>.
63The reason is that new timings usually mean different buffer sizes as well, and you
64cannot change buffer sizes on the fly. In general, applications that receive the
65Source Change event will have to call <constant>VIDIOC_QUERY_DV_TIMINGS</constant>,
66and if the detected timings are valid they will have to stop streaming, set the new
67timings, allocate new buffers and start streaming again.</para>
68
69<para>If the timings could not be detected because there was no signal, then
70<errorcode>ENOLINK</errorcode> is returned. If a signal was detected, but
71it was unstable and the receiver could not lock to the signal, then
72<errorcode>ENOLCK</errorcode> is returned. If the receiver could lock to the signal,
73but the format is unsupported (e.g. because the pixelclock is out of range
74of the hardware capabilities), then the driver fills in whatever timings it
75could find and returns <errorcode>ERANGE</errorcode>. In that case the application
76can call &VIDIOC-DV-TIMINGS-CAP; to compare the found timings with the hardware's
77capabilities in order to give more precise feedback to the user.
78</para>
79 </refsect1>
80
81 <refsect1>
82 &return-value;
83
84 <variablelist>
85 <varlistentry>
86 <term><errorcode>ENODATA</errorcode></term>
87 <listitem>
88 <para>Digital video timings are not supported for this input or output.</para>
89 </listitem>
90 </varlistentry>
91 <varlistentry>
92 <term><errorcode>ENOLINK</errorcode></term>
93 <listitem>
94 <para>No timings could be detected because no signal was found.
95</para>
96 </listitem>
97 </varlistentry>
98 <varlistentry>
99 <term><errorcode>ENOLCK</errorcode></term>
100 <listitem>
101 <para>The signal was unstable and the hardware could not lock on to it.
102</para>
103 </listitem>
104 </varlistentry>
105 <varlistentry>
106 <term><errorcode>ERANGE</errorcode></term>
107 <listitem>
108 <para>Timings were found, but they are out of range of the hardware
109capabilities.
110</para>
111 </listitem>
112 </varlistentry>
113 </variablelist>
114 </refsect1>
115</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-querybuf.xml b/Documentation/DocBook/media/v4l/vidioc-querybuf.xml
deleted file mode 100644
index 50bfcb5e8508..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-querybuf.xml
+++ /dev/null
@@ -1,106 +0,0 @@
1<refentry id="vidioc-querybuf">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERYBUF</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERYBUF</refname>
9 <refpurpose>Query the status of a buffer</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_QUERYBUF</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 <para>This ioctl is part of the <link linkend="mmap">streaming
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
54&VIDIOC-REQBUFS; ioctl.</para>
55
56 <para>Applications set the <structfield>type</structfield> field
57 of a &v4l2-buffer; to the same buffer type as was previously used with
58&v4l2-format; <structfield>type</structfield> and &v4l2-requestbuffers;
59<structfield>type</structfield>, and the <structfield>index</structfield>
60 field. Valid index numbers range from zero
61to the number of buffers allocated with &VIDIOC-REQBUFS;
62 (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.
63The <structfield>reserved</structfield> and <structfield>reserved2 </structfield>
64fields must be set to 0.
65When using the <link linkend="planar-apis">multi-planar API</link>, the
66<structfield>m.planes</structfield> field must contain a userspace pointer to an
67array of &v4l2-plane; and the <structfield>length</structfield> field has
68to be set to the number of elements in that array.
69After calling <constant>VIDIOC_QUERYBUF</constant> with a pointer to
70 this structure drivers return an error code or fill the rest of
71the structure.</para>
72
73 <para>In the <structfield>flags</structfield> field the
74<constant>V4L2_BUF_FLAG_MAPPED</constant>,
75<constant>V4L2_BUF_FLAG_PREPARED</constant>,
76<constant>V4L2_BUF_FLAG_QUEUED</constant> and
77<constant>V4L2_BUF_FLAG_DONE</constant> flags will be valid. The
78<structfield>memory</structfield> field will be set to the current
79I/O method. For the single-planar API, the <structfield>m.offset</structfield>
80contains the offset of the buffer from the start of the device memory,
81the <structfield>length</structfield> field its size. For the multi-planar API,
82fields <structfield>m.mem_offset</structfield> and
83<structfield>length</structfield> in the <structfield>m.planes</structfield>
84array elements will be used instead and the <structfield>length</structfield>
85field of &v4l2-buffer; is set to the number of filled-in array elements.
86The driver may or may not set the remaining fields and flags, they are
87meaningless in this context.</para>
88
89 <para>The <structname>v4l2_buffer</structname> structure is
90 specified in <xref linkend="buffer" />.</para>
91 </refsect1>
92
93 <refsect1>
94 &return-value;
95
96 <variablelist>
97 <varlistentry>
98 <term><errorcode>EINVAL</errorcode></term>
99 <listitem>
100 <para>The buffer <structfield>type</structfield> is not
101supported, or the <structfield>index</structfield> is out of bounds.</para>
102 </listitem>
103 </varlistentry>
104 </variablelist>
105 </refsect1>
106</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-querycap.xml b/Documentation/DocBook/media/v4l/vidioc-querycap.xml
deleted file mode 100644
index cd82148dedd7..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-querycap.xml
+++ /dev/null
@@ -1,350 +0,0 @@
1<refentry id="vidioc-querycap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERYCAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERYCAP</refname>
9 <refpurpose>Query device capabilities</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_capability *<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_QUERYCAP</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 <para>All V4L2 devices support the
52<constant>VIDIOC_QUERYCAP</constant> ioctl. It is used to identify
53kernel devices compatible with this specification and to obtain
54information about driver and hardware capabilities. The ioctl takes a
55pointer to a &v4l2-capability; which is filled by the driver. When the
56driver is not compatible with this specification the ioctl returns an
57&EINVAL;.</para>
58
59 <table pgwide="1" frame="none" id="v4l2-capability">
60 <title>struct <structname>v4l2_capability</structname></title>
61 <tgroup cols="3">
62 &cs-str;
63 <tbody valign="top">
64 <row>
65 <entry>__u8</entry>
66 <entry><structfield>driver</structfield>[16]</entry>
67 <entry><para>Name of the driver, a unique NUL-terminated
68ASCII string. For example: "bttv". Driver specific applications can
69use this information to verify the driver identity. It is also useful
70to work around known bugs, or to identify drivers in error reports.</para>
71<para>Storing strings in fixed sized arrays is bad
72practice but unavoidable here. Drivers and applications should take
73precautions to never read or write beyond the end of the array and to
74make sure the strings are properly NUL-terminated.</para></entry>
75 </row>
76 <row>
77 <entry>__u8</entry>
78 <entry><structfield>card</structfield>[32]</entry>
79 <entry>Name of the device, a NUL-terminated UTF-8 string.
80For example: "Yoyodyne TV/FM". One driver may support different brands
81or models of video hardware. This information is intended for users,
82for example in a menu of available devices. Since multiple TV cards of
83the same brand may be installed which are supported by the same
84driver, this name should be combined with the character device file
85name (&eg; <filename>/dev/video2</filename>) or the
86<structfield>bus_info</structfield> string to avoid
87ambiguities.</entry>
88 </row>
89 <row>
90 <entry>__u8</entry>
91 <entry><structfield>bus_info</structfield>[32]</entry>
92 <entry>Location of the device in the system, a
93NUL-terminated ASCII string. For example: "PCI:0000:05:06.0". This
94information is intended for users, to distinguish multiple
95identical devices. If no such information is available the field must
96simply count the devices controlled by the driver ("platform:vivi-000").
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>
100 </row>
101 <row>
102 <entry>__u32</entry>
103 <entry><structfield>version</structfield></entry>
104 <entry><para>Version number of the driver.</para>
105<para>Starting with kernel 3.1, the version reported is provided by the
106V4L2 subsystem following the kernel numbering scheme. However, it
107may not always return the same version as the kernel if, for example,
108a stable or distribution-modified kernel uses the V4L2 stack from a
109newer kernel.</para>
110<para>The version number is formatted using the
111<constant>KERNEL_VERSION()</constant> macro:</para></entry>
112 </row>
113 <row>
114 <entry spanname="hspan"><para>
115<programlisting>
116#define KERNEL_VERSION(a,b,c) (((a) &lt;&lt; 16) + ((b) &lt;&lt; 8) + (c))
117
118__u32 version = KERNEL_VERSION(0, 8, 1);
119
120printf ("Version: %u.%u.%u\n",
121 (version &gt;&gt; 16) &amp; 0xFF,
122 (version &gt;&gt; 8) &amp; 0xFF,
123 version &amp; 0xFF);
124</programlisting></para></entry>
125 </row>
126 <row>
127 <entry>__u32</entry>
128 <entry><structfield>capabilities</structfield></entry>
129 <entry>Available capabilities of the physical device as a whole, see <xref
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>
140 </row>
141 <row>
142 <entry>__u32</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>
158 <entry>Reserved for future extensions. Drivers must set
159this array to zero.</entry>
160 </row>
161 </tbody>
162 </tgroup>
163 </table>
164
165 <table pgwide="1" frame="none" id="device-capabilities">
166 <title>Device Capabilities Flags</title>
167 <tgroup cols="3">
168 &cs-def;
169 <tbody valign="top">
170 <row>
171 <entry><constant>V4L2_CAP_VIDEO_CAPTURE</constant></entry>
172 <entry>0x00000001</entry>
173 <entry>The device supports the single-planar API through the <link
174linkend="capture">Video Capture</link> interface.</entry>
175 </row>
176 <row>
177 <entry><constant>V4L2_CAP_VIDEO_CAPTURE_MPLANE</constant></entry>
178 <entry>0x00001000</entry>
179 <entry>The device supports the
180 <link linkend="planar-apis">multi-planar API</link> through the
181 <link linkend="capture">Video Capture</link> interface.</entry>
182 </row>
183 <row>
184 <entry><constant>V4L2_CAP_VIDEO_OUTPUT</constant></entry>
185 <entry>0x00000002</entry>
186 <entry>The device supports the single-planar API through the <link
187linkend="output">Video Output</link> interface.</entry>
188 </row>
189 <row>
190 <entry><constant>V4L2_CAP_VIDEO_OUTPUT_MPLANE</constant></entry>
191 <entry>0x00002000</entry>
192 <entry>The device supports the
193 <link linkend="planar-apis">multi-planar API</link> through the
194 <link linkend="output">Video Output</link> interface.</entry>
195 </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>
210 <entry><constant>V4L2_CAP_VIDEO_OVERLAY</constant></entry>
211 <entry>0x00000004</entry>
212 <entry>The device supports the <link
213linkend="overlay">Video Overlay</link> interface. A video overlay device
214typically stores captured images directly in the video memory of a
215graphics card, with hardware clipping and scaling.</entry>
216 </row>
217 <row>
218 <entry><constant>V4L2_CAP_VBI_CAPTURE</constant></entry>
219 <entry>0x00000010</entry>
220 <entry>The device supports the <link linkend="raw-vbi">Raw
221VBI Capture</link> interface, providing Teletext and Closed Caption
222data.</entry>
223 </row>
224 <row>
225 <entry><constant>V4L2_CAP_VBI_OUTPUT</constant></entry>
226 <entry>0x00000020</entry>
227 <entry>The device supports the <link linkend="raw-vbi">Raw VBI Output</link> interface.</entry>
228 </row>
229 <row>
230 <entry><constant>V4L2_CAP_SLICED_VBI_CAPTURE</constant></entry>
231 <entry>0x00000040</entry>
232 <entry>The device supports the <link linkend="sliced">Sliced VBI Capture</link> interface.</entry>
233 </row>
234 <row>
235 <entry><constant>V4L2_CAP_SLICED_VBI_OUTPUT</constant></entry>
236 <entry>0x00000080</entry>
237 <entry>The device supports the <link linkend="sliced">Sliced VBI Output</link> interface.</entry>
238 </row>
239 <row>
240 <entry><constant>V4L2_CAP_RDS_CAPTURE</constant></entry>
241 <entry>0x00000100</entry>
242 <entry>The device supports the <link linkend="rds">RDS</link> capture interface.</entry>
243 </row>
244 <row>
245 <entry><constant>V4L2_CAP_VIDEO_OUTPUT_OVERLAY</constant></entry>
246 <entry>0x00000200</entry>
247 <entry>The device supports the <link linkend="osd">Video
248Output Overlay</link> (OSD) interface. Unlike the <wordasword>Video
249Overlay</wordasword> interface, this is a secondary function of video
250output devices and overlays an image onto an outgoing video signal.
251When the driver sets this flag, it must clear the
252<constant>V4L2_CAP_VIDEO_OVERLAY</constant> flag and vice
253versa.<footnote><para>The &v4l2-framebuffer; lacks an
254&v4l2-buf-type; field, therefore the type of overlay is implied by the
255driver capabilities.</para></footnote></entry>
256 </row>
257 <row>
258 <entry><constant>V4L2_CAP_HW_FREQ_SEEK</constant></entry>
259 <entry>0x00000400</entry>
260 <entry>The device supports the &VIDIOC-S-HW-FREQ-SEEK; ioctl for
261hardware frequency seeking.</entry>
262 </row>
263 <row>
264 <entry><constant>V4L2_CAP_RDS_OUTPUT</constant></entry>
265 <entry>0x00000800</entry>
266 <entry>The device supports the <link linkend="rds">RDS</link> output interface.</entry>
267 </row>
268 <row>
269 <entry><constant>V4L2_CAP_TUNER</constant></entry>
270 <entry>0x00010000</entry>
271 <entry>The device has some sort of tuner to
272receive RF-modulated video signals. For more information about
273tuner programming see
274<xref linkend="tuner" />.</entry>
275 </row>
276 <row>
277 <entry><constant>V4L2_CAP_AUDIO</constant></entry>
278 <entry>0x00020000</entry>
279 <entry>The device has audio inputs or outputs. It may or
280may not support audio recording or playback, in PCM or compressed
281formats. PCM audio support must be implemented as ALSA or OSS
282interface. For more information on audio inputs and outputs see <xref
283 linkend="audio" />.</entry>
284 </row>
285 <row>
286 <entry><constant>V4L2_CAP_RADIO</constant></entry>
287 <entry>0x00040000</entry>
288 <entry>This is a radio receiver.</entry>
289 </row>
290 <row>
291 <entry><constant>V4L2_CAP_MODULATOR</constant></entry>
292 <entry>0x00080000</entry>
293 <entry>The device has some sort of modulator to
294emit RF-modulated video/audio signals. For more information about
295modulator programming see
296<xref linkend="tuner" />.</entry>
297 </row>
298 <row>
299 <entry><constant>V4L2_CAP_SDR_CAPTURE</constant></entry>
300 <entry>0x00100000</entry>
301 <entry>The device supports the
302<link linkend="sdr">SDR Capture</link> interface.</entry>
303 </row>
304 <row>
305 <entry><constant>V4L2_CAP_EXT_PIX_FORMAT</constant></entry>
306 <entry>0x00200000</entry>
307 <entry>The device supports the &v4l2-pix-format; extended
308fields.</entry>
309 </row>
310 <row>
311 <entry><constant>V4L2_CAP_SDR_OUTPUT</constant></entry>
312 <entry>0x00400000</entry>
313 <entry>The device supports the
314<link linkend="sdr">SDR Output</link> interface.</entry>
315 </row>
316 <row>
317 <entry><constant>V4L2_CAP_READWRITE</constant></entry>
318 <entry>0x01000000</entry>
319 <entry>The device supports the <link
320linkend="rw">read()</link> and/or <link linkend="rw">write()</link>
321I/O methods.</entry>
322 </row>
323 <row>
324 <entry><constant>V4L2_CAP_ASYNCIO</constant></entry>
325 <entry>0x02000000</entry>
326 <entry>The device supports the <link
327linkend="async">asynchronous</link> I/O methods.</entry>
328 </row>
329 <row>
330 <entry><constant>V4L2_CAP_STREAMING</constant></entry>
331 <entry>0x04000000</entry>
332 <entry>The device supports the <link
333linkend="mmap">streaming</link> I/O method.</entry>
334 </row>
335 <row>
336 <entry><constant>V4L2_CAP_DEVICE_CAPS</constant></entry>
337 <entry>0x80000000</entry>
338 <entry>The driver fills the <structfield>device_caps</structfield>
339 field. This capability can only appear in the <structfield>capabilities</structfield>
340 field and never in the <structfield>device_caps</structfield> field.</entry>
341 </row>
342 </tbody>
343 </tgroup>
344 </table>
345 </refsect1>
346
347 <refsect1>
348 &return-value;
349 </refsect1>
350</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
deleted file mode 100644
index 55b7582cf314..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
+++ /dev/null
@@ -1,661 +0,0 @@
1<refentry id="vidioc-queryctrl">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERYCTRL, VIDIOC_QUERY_EXT_CTRL, VIDIOC_QUERYMENU</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERYCTRL</refname>
9 <refname>VIDIOC_QUERY_EXT_CTRL</refname>
10 <refname>VIDIOC_QUERYMENU</refname>
11 <refpurpose>Enumerate controls and menu control items</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_queryctrl *<parameter>argp</parameter></paramdef>
21 </funcprototype>
22 </funcsynopsis>
23 <funcsynopsis>
24 <funcprototype>
25 <funcdef>int <function>ioctl</function></funcdef>
26 <paramdef>int <parameter>fd</parameter></paramdef>
27 <paramdef>int <parameter>request</parameter></paramdef>
28 <paramdef>struct v4l2_query_ext_ctrl *<parameter>argp</parameter></paramdef>
29 </funcprototype>
30 </funcsynopsis>
31 <funcsynopsis>
32 <funcprototype>
33 <funcdef>int <function>ioctl</function></funcdef>
34 <paramdef>int <parameter>fd</parameter></paramdef>
35 <paramdef>int <parameter>request</parameter></paramdef>
36 <paramdef>struct v4l2_querymenu *<parameter>argp</parameter></paramdef>
37 </funcprototype>
38 </funcsynopsis>
39 </refsynopsisdiv>
40
41 <refsect1>
42 <title>Arguments</title>
43
44 <variablelist>
45 <varlistentry>
46 <term><parameter>fd</parameter></term>
47 <listitem>
48 <para>&fd;</para>
49 </listitem>
50 </varlistentry>
51 <varlistentry>
52 <term><parameter>request</parameter></term>
53 <listitem>
54 <para>VIDIOC_QUERYCTRL, VIDIOC_QUERY_EXT_CTRL, VIDIOC_QUERYMENU</para>
55 </listitem>
56 </varlistentry>
57 <varlistentry>
58 <term><parameter>argp</parameter></term>
59 <listitem>
60 <para></para>
61 </listitem>
62 </varlistentry>
63 </variablelist>
64 </refsect1>
65
66 <refsect1>
67 <title>Description</title>
68
69 <para>To query the attributes of a control applications set the
70<structfield>id</structfield> field of a &v4l2-queryctrl; and call the
71<constant>VIDIOC_QUERYCTRL</constant> ioctl with a pointer to this
72structure. The driver fills the rest of the structure or returns an
73&EINVAL; when the <structfield>id</structfield> is invalid.</para>
74
75 <para>It is possible to enumerate controls by calling
76<constant>VIDIOC_QUERYCTRL</constant> with successive
77<structfield>id</structfield> values starting from
78<constant>V4L2_CID_BASE</constant> up to and exclusive
79<constant>V4L2_CID_LASTP1</constant>. Drivers may return
80<errorcode>EINVAL</errorcode> if a control in this range is not
81supported. Further applications can enumerate private controls, which
82are not defined in this specification, by starting at
83<constant>V4L2_CID_PRIVATE_BASE</constant> and incrementing
84<structfield>id</structfield> until the driver returns
85<errorcode>EINVAL</errorcode>.</para>
86
87 <para>In both cases, when the driver sets the
88<constant>V4L2_CTRL_FLAG_DISABLED</constant> flag in the
89<structfield>flags</structfield> field this control is permanently
90disabled and should be ignored by the application.<footnote>
91 <para><constant>V4L2_CTRL_FLAG_DISABLED</constant> was
92intended for two purposes: Drivers can skip predefined controls not
93supported by the hardware (although returning EINVAL would do as
94well), or disable predefined and private controls after hardware
95detection without the trouble of reordering control arrays and indices
96(EINVAL cannot be used to skip private controls because it would
97prematurely end the enumeration).</para></footnote></para>
98
99 <para>When the application ORs <structfield>id</structfield> with
100<constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> the driver returns the
101next supported non-compound control, or <errorcode>EINVAL</errorcode>
102if there is none. In addition, the <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant>
103flag can be specified to enumerate all compound controls (i.e. controls
104with type &ge; <constant>V4L2_CTRL_COMPOUND_TYPES</constant> and/or array
105control, in other words controls that contain more than one value).
106Specify both <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> and
107<constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant> in order to enumerate
108all controls, compound or not. Drivers which do not support these flags yet
109always return <errorcode>EINVAL</errorcode>.</para>
110
111 <para>The <constant>VIDIOC_QUERY_EXT_CTRL</constant> ioctl was
112introduced in order to better support controls that can use compound
113types, and to expose additional control information that cannot be
114returned in &v4l2-queryctrl; since that structure is full.</para>
115
116 <para><constant>VIDIOC_QUERY_EXT_CTRL</constant> is used in the
117same way as <constant>VIDIOC_QUERYCTRL</constant>, except that the
118<structfield>reserved</structfield> array must be zeroed as well.</para>
119
120 <para>Additional information is required for menu controls: the
121names of the menu items. To query them applications set the
122<structfield>id</structfield> and <structfield>index</structfield>
123fields of &v4l2-querymenu; and call the
124<constant>VIDIOC_QUERYMENU</constant> ioctl with a pointer to this
125structure. The driver fills the rest of the structure or returns an
126&EINVAL; when the <structfield>id</structfield> or
127<structfield>index</structfield> is invalid. Menu items are enumerated
128by calling <constant>VIDIOC_QUERYMENU</constant> with successive
129<structfield>index</structfield> values from &v4l2-queryctrl;
130<structfield>minimum</structfield> to
131<structfield>maximum</structfield>, inclusive. Note that it is possible
132for <constant>VIDIOC_QUERYMENU</constant> to return an &EINVAL; for some
133indices between <structfield>minimum</structfield> and <structfield>maximum</structfield>.
134In that case that particular menu item is not supported by this driver. Also note that
135the <structfield>minimum</structfield> value is not necessarily 0.</para>
136
137 <para>See also the examples in <xref linkend="control" />.</para>
138
139 <table pgwide="1" frame="none" id="v4l2-queryctrl">
140 <title>struct <structname>v4l2_queryctrl</structname></title>
141 <tgroup cols="3">
142 &cs-str;
143 <tbody valign="top">
144 <row>
145 <entry>__u32</entry>
146 <entry><structfield>id</structfield></entry>
147 <entry>Identifies the control, set by the application. See
148<xref linkend="control-id" /> for predefined IDs. When the ID is ORed
149with V4L2_CTRL_FLAG_NEXT_CTRL the driver clears the flag and returns
150the first control with a higher ID. Drivers which do not support this
151flag yet always return an &EINVAL;.</entry>
152 </row>
153 <row>
154 <entry>__u32</entry>
155 <entry><structfield>type</structfield></entry>
156 <entry>Type of control, see <xref
157 linkend="v4l2-ctrl-type" />.</entry>
158 </row>
159 <row>
160 <entry>__u8</entry>
161 <entry><structfield>name</structfield>[32]</entry>
162 <entry>Name of the control, a NUL-terminated ASCII
163string. This information is intended for the user.</entry>
164 </row>
165 <row>
166 <entry>__s32</entry>
167 <entry><structfield>minimum</structfield></entry>
168 <entry>Minimum value, inclusive. This field gives a lower
169bound for the control. See &v4l2-ctrl-type; how the minimum value is to
170be used for each possible control type. Note that this a signed 32-bit value.</entry>
171 </row>
172 <row>
173 <entry>__s32</entry>
174 <entry><structfield>maximum</structfield></entry>
175 <entry>Maximum value, inclusive. This field gives an upper
176bound for the control. See &v4l2-ctrl-type; how the maximum value is to
177be used for each possible control type. Note that this a signed 32-bit value.</entry>
178 </row>
179 <row>
180 <entry>__s32</entry>
181 <entry><structfield>step</structfield></entry>
182 <entry><para>This field gives a step size for the control.
183See &v4l2-ctrl-type; how the step value is to be used for each possible
184control type. Note that this an unsigned 32-bit value.
185</para><para>Generally drivers should not scale hardware
186control values. It may be necessary for example when the
187<structfield>name</structfield> or <structfield>id</structfield> imply
188a particular unit and the hardware actually accepts only multiples of
189said unit. If so, drivers must take care values are properly rounded
190when scaling, such that errors will not accumulate on repeated
191read-write cycles.</para><para>This field gives the smallest change of
192an integer control actually affecting hardware. Often the information
193is needed when the user can change controls by keyboard or GUI
194buttons, rather than a slider. When for example a hardware register
195accepts values 0-511 and the driver reports 0-65535, step should be
196128.</para><para>Note that although signed, the step value is supposed to
197be always positive.</para></entry>
198 </row>
199 <row>
200 <entry>__s32</entry>
201 <entry><structfield>default_value</structfield></entry>
202 <entry>The default value of a
203<constant>V4L2_CTRL_TYPE_INTEGER</constant>,
204<constant>_BOOLEAN</constant>, <constant>_BITMASK</constant>,
205<constant>_MENU</constant> or <constant>_INTEGER_MENU</constant> control.
206Not valid for other types of controls.
207Note that drivers reset controls to their default value only when the
208driver is first loaded, never afterwards.</entry>
209 </row>
210 <row>
211 <entry>__u32</entry>
212 <entry><structfield>flags</structfield></entry>
213 <entry>Control flags, see <xref
214 linkend="control-flags" />.</entry>
215 </row>
216 <row>
217 <entry>__u32</entry>
218 <entry><structfield>reserved</structfield>[2]</entry>
219 <entry>Reserved for future extensions. Drivers must set
220the array to zero.</entry>
221 </row>
222 </tbody>
223 </tgroup>
224 </table>
225
226 <table pgwide="1" frame="none" id="v4l2-query-ext-ctrl">
227 <title>struct <structname>v4l2_query_ext_ctrl</structname></title>
228 <tgroup cols="3">
229 &cs-str;
230 <tbody valign="top">
231 <row>
232 <entry>__u32</entry>
233 <entry><structfield>id</structfield></entry>
234 <entry>Identifies the control, set by the application. See
235<xref linkend="control-id" /> for predefined IDs. When the ID is ORed
236with <constant>V4L2_CTRL_FLAG_NEXT_CTRL</constant> the driver clears the
237flag and returns the first non-compound control with a higher ID. When the
238ID is ORed with <constant>V4L2_CTRL_FLAG_NEXT_COMPOUND</constant> the driver
239clears the flag and returns the first compound control with a higher ID.
240Set both to get the first control (compound or not) with a higher ID.</entry>
241 </row>
242 <row>
243 <entry>__u32</entry>
244 <entry><structfield>type</structfield></entry>
245 <entry>Type of control, see <xref
246 linkend="v4l2-ctrl-type" />.</entry>
247 </row>
248 <row>
249 <entry>char</entry>
250 <entry><structfield>name</structfield>[32]</entry>
251 <entry>Name of the control, a NUL-terminated ASCII
252string. This information is intended for the user.</entry>
253 </row>
254 <row>
255 <entry>__s64</entry>
256 <entry><structfield>minimum</structfield></entry>
257 <entry>Minimum value, inclusive. This field gives a lower
258bound for the control. See &v4l2-ctrl-type; how the minimum value is to
259be used for each possible control type. Note that this a signed 64-bit value.</entry>
260 </row>
261 <row>
262 <entry>__s64</entry>
263 <entry><structfield>maximum</structfield></entry>
264 <entry>Maximum value, inclusive. This field gives an upper
265bound for the control. See &v4l2-ctrl-type; how the maximum value is to
266be used for each possible control type. Note that this a signed 64-bit value.</entry>
267 </row>
268 <row>
269 <entry>__u64</entry>
270 <entry><structfield>step</structfield></entry>
271 <entry><para>This field gives a step size for the control.
272See &v4l2-ctrl-type; how the step value is to be used for each possible
273control type. Note that this an unsigned 64-bit value.
274</para><para>Generally drivers should not scale hardware
275control values. It may be necessary for example when the
276<structfield>name</structfield> or <structfield>id</structfield> imply
277a particular unit and the hardware actually accepts only multiples of
278said unit. If so, drivers must take care values are properly rounded
279when scaling, such that errors will not accumulate on repeated
280read-write cycles.</para><para>This field gives the smallest change of
281an integer control actually affecting hardware. Often the information
282is needed when the user can change controls by keyboard or GUI
283buttons, rather than a slider. When for example a hardware register
284accepts values 0-511 and the driver reports 0-65535, step should be
285128.</para></entry>
286 </row>
287 <row>
288 <entry>__s64</entry>
289 <entry><structfield>default_value</structfield></entry>
290 <entry>The default value of a
291<constant>V4L2_CTRL_TYPE_INTEGER</constant>, <constant>_INTEGER64</constant>,
292<constant>_BOOLEAN</constant>, <constant>_BITMASK</constant>,
293<constant>_MENU</constant>, <constant>_INTEGER_MENU</constant>,
294<constant>_U8</constant> or <constant>_U16</constant> control.
295Not valid for other types of controls.
296Note that drivers reset controls to their default value only when the
297driver is first loaded, never afterwards.
298</entry>
299 </row>
300 <row>
301 <entry>__u32</entry>
302 <entry><structfield>flags</structfield></entry>
303 <entry>Control flags, see <xref
304 linkend="control-flags" />.</entry>
305 </row>
306 <row>
307 <entry>__u32</entry>
308 <entry><structfield>elem_size</structfield></entry>
309 <entry>The size in bytes of a single element of the array.
310Given a char pointer <constant>p</constant> to a 3-dimensional array you can find the
311position of cell <constant>(z, y, x)</constant> as follows:
312<constant>p + ((z * dims[1] + y) * dims[0] + x) * elem_size</constant>. <structfield>elem_size</structfield>
313is always valid, also when the control isn't an array. For string controls
314<structfield>elem_size</structfield> is equal to <structfield>maximum + 1</structfield>.
315</entry>
316 </row>
317 <row>
318 <entry>__u32</entry>
319 <entry><structfield>elems</structfield></entry>
320 <entry>The number of elements in the N-dimensional array. If this control
321is not an array, then <structfield>elems</structfield> is 1. The <structfield>elems</structfield>
322field can never be 0.</entry>
323 </row>
324 <row>
325 <entry>__u32</entry>
326 <entry><structfield>nr_of_dims</structfield></entry>
327 <entry>The number of dimension in the N-dimensional array. If this control
328is not an array, then this field is 0.</entry>
329 </row>
330 <row>
331 <entry>__u32</entry>
332 <entry><structfield>dims[V4L2_CTRL_MAX_DIMS]</structfield></entry>
333 <entry>The size of each dimension. The first <structfield>nr_of_dims</structfield>
334elements of this array must be non-zero, all remaining elements must be zero.</entry>
335 </row>
336 <row>
337 <entry>__u32</entry>
338 <entry><structfield>reserved</structfield>[32]</entry>
339 <entry>Reserved for future extensions. Applications and drivers
340must set the array to zero.</entry>
341 </row>
342 </tbody>
343 </tgroup>
344 </table>
345
346 <table pgwide="1" frame="none" id="v4l2-querymenu">
347 <title>struct <structname>v4l2_querymenu</structname></title>
348 <tgroup cols="4">
349 &cs-str;
350 <tbody valign="top">
351 <row>
352 <entry>__u32</entry>
353 <entry></entry>
354 <entry><structfield>id</structfield></entry>
355 <entry>Identifies the control, set by the application
356from the respective &v4l2-queryctrl;
357<structfield>id</structfield>.</entry>
358 </row>
359 <row>
360 <entry>__u32</entry>
361 <entry></entry>
362 <entry><structfield>index</structfield></entry>
363 <entry>Index of the menu item, starting at zero, set by
364 the application.</entry>
365 </row>
366 <row>
367 <entry>union</entry>
368 <entry></entry>
369 <entry></entry>
370 <entry></entry>
371 </row>
372 <row>
373 <entry></entry>
374 <entry>__u8</entry>
375 <entry><structfield>name</structfield>[32]</entry>
376 <entry>Name of the menu item, a NUL-terminated ASCII
377string. This information is intended for the user. This field is valid
378for <constant>V4L2_CTRL_FLAG_MENU</constant> type controls.</entry>
379 </row>
380 <row>
381 <entry></entry>
382 <entry>__s64</entry>
383 <entry><structfield>value</structfield></entry>
384 <entry>
385 Value of the integer menu item. This field is valid for
386 <constant>V4L2_CTRL_FLAG_INTEGER_MENU</constant> type
387 controls.
388 </entry>
389 </row>
390 <row>
391 <entry>__u32</entry>
392 <entry></entry>
393 <entry><structfield>reserved</structfield></entry>
394 <entry>Reserved for future extensions. Drivers must set
395the array to zero.</entry>
396 </row>
397 </tbody>
398 </tgroup>
399 </table>
400
401 <table pgwide="1" frame="none" id="v4l2-ctrl-type">
402 <title>enum v4l2_ctrl_type</title>
403 <tgroup cols="5" align="left">
404 <colspec colwidth="30*" />
405 <colspec colwidth="5*" align="center" />
406 <colspec colwidth="5*" align="center" />
407 <colspec colwidth="5*" align="center" />
408 <colspec colwidth="55*" />
409 <thead>
410 <row>
411 <entry>Type</entry>
412 <entry><structfield>minimum</structfield></entry>
413 <entry><structfield>step</structfield></entry>
414 <entry><structfield>maximum</structfield></entry>
415 <entry>Description</entry>
416 </row>
417 </thead>
418 <tbody valign="top">
419 <row>
420 <entry><constant>V4L2_CTRL_TYPE_INTEGER</constant></entry>
421 <entry>any</entry>
422 <entry>any</entry>
423 <entry>any</entry>
424 <entry>An integer-valued control ranging from minimum to
425maximum inclusive. The step value indicates the increment between
426values.</entry>
427 </row>
428 <row>
429 <entry><constant>V4L2_CTRL_TYPE_BOOLEAN</constant></entry>
430 <entry>0</entry>
431 <entry>1</entry>
432 <entry>1</entry>
433 <entry>A boolean-valued control. Zero corresponds to
434"disabled", and one means "enabled".</entry>
435 </row>
436 <row>
437 <entry><constant>V4L2_CTRL_TYPE_MENU</constant></entry>
438 <entry>&ge; 0</entry>
439 <entry>1</entry>
440 <entry>N-1</entry>
441 <entry>The control has a menu of N choices. The names of
442the menu items can be enumerated with the
443<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry>
444 </row>
445 <row>
446 <entry><constant>V4L2_CTRL_TYPE_INTEGER_MENU</constant></entry>
447 <entry>&ge; 0</entry>
448 <entry>1</entry>
449 <entry>N-1</entry>
450 <entry>
451 The control has a menu of N choices. The values of the
452 menu items can be enumerated with the
453 <constant>VIDIOC_QUERYMENU</constant> ioctl. This is
454 similar to <constant>V4L2_CTRL_TYPE_MENU</constant>
455 except that instead of strings, the menu items are
456 signed 64-bit integers.
457 </entry>
458 </row>
459 <row>
460 <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry>
461 <entry>0</entry>
462 <entry>n/a</entry>
463 <entry>any</entry>
464 <entry>A bitmask field. The maximum value is the set of bits that can
465be used, all other bits are to be 0. The maximum value is interpreted as a __u32,
466allowing the use of bit 31 in the bitmask.</entry>
467 </row>
468 <row>
469 <entry><constant>V4L2_CTRL_TYPE_BUTTON</constant></entry>
470 <entry>0</entry>
471 <entry>0</entry>
472 <entry>0</entry>
473 <entry>A control which performs an action when set.
474Drivers must ignore the value passed with
475<constant>VIDIOC_S_CTRL</constant> and return an &EINVAL; on a
476<constant>VIDIOC_G_CTRL</constant> attempt.</entry>
477 </row>
478 <row>
479 <entry><constant>V4L2_CTRL_TYPE_INTEGER64</constant></entry>
480 <entry>any</entry>
481 <entry>any</entry>
482 <entry>any</entry>
483 <entry>A 64-bit integer valued control. Minimum, maximum
484and step size cannot be queried using <constant>VIDIOC_QUERYCTRL</constant>.
485Only <constant>VIDIOC_QUERY_EXT_CTRL</constant> can retrieve the 64-bit
486min/max/step values, they should be interpreted as n/a when using
487<constant>VIDIOC_QUERYCTRL</constant>.</entry>
488 </row>
489 <row>
490 <entry><constant>V4L2_CTRL_TYPE_STRING</constant></entry>
491 <entry>&ge; 0</entry>
492 <entry>&ge; 1</entry>
493 <entry>&ge; 0</entry>
494 <entry>The minimum and maximum string lengths. The step size
495means that the string must be (minimum + N * step) characters long for
496N &ge; 0. These lengths do not include the terminating zero, so in order to
497pass a string of length 8 to &VIDIOC-S-EXT-CTRLS; you need to set the
498<structfield>size</structfield> field of &v4l2-ext-control; to 9. For &VIDIOC-G-EXT-CTRLS; you can
499set the <structfield>size</structfield> field to <structfield>maximum</structfield> + 1.
500Which character encoding is used will depend on the string control itself and
501should be part of the control documentation.</entry>
502 </row>
503 <row>
504 <entry><constant>V4L2_CTRL_TYPE_CTRL_CLASS</constant></entry>
505 <entry>n/a</entry>
506 <entry>n/a</entry>
507 <entry>n/a</entry>
508 <entry>This is not a control. When
509<constant>VIDIOC_QUERYCTRL</constant> is called with a control ID
510equal to a control class code (see <xref linkend="ctrl-class" />) + 1, the
511ioctl returns the name of the control class and this control type.
512Older drivers which do not support this feature return an
513&EINVAL;.</entry>
514 </row>
515 <row>
516 <entry><constant>V4L2_CTRL_TYPE_U8</constant></entry>
517 <entry>any</entry>
518 <entry>any</entry>
519 <entry>any</entry>
520 <entry>An unsigned 8-bit valued control ranging from minimum to
521maximum inclusive. The step value indicates the increment between
522values.
523</entry>
524 </row>
525 <row>
526 <entry><constant>V4L2_CTRL_TYPE_U16</constant></entry>
527 <entry>any</entry>
528 <entry>any</entry>
529 <entry>any</entry>
530 <entry>An unsigned 16-bit valued control ranging from minimum to
531maximum inclusive. The step value indicates the increment between
532values.
533</entry>
534 </row>
535 <row>
536 <entry><constant>V4L2_CTRL_TYPE_U32</constant></entry>
537 <entry>any</entry>
538 <entry>any</entry>
539 <entry>any</entry>
540 <entry>An unsigned 32-bit valued control ranging from minimum to
541maximum inclusive. The step value indicates the increment between
542values.
543</entry>
544 </row>
545 </tbody>
546 </tgroup>
547 </table>
548
549 <table pgwide="1" frame="none" id="control-flags">
550 <title>Control Flags</title>
551 <tgroup cols="3">
552 &cs-def;
553 <tbody valign="top">
554 <row>
555 <entry><constant>V4L2_CTRL_FLAG_DISABLED</constant></entry>
556 <entry>0x0001</entry>
557 <entry>This control is permanently disabled and should be
558ignored by the application. Any attempt to change the control will
559result in an &EINVAL;.</entry>
560 </row>
561 <row>
562 <entry><constant>V4L2_CTRL_FLAG_GRABBED</constant></entry>
563 <entry>0x0002</entry>
564 <entry>This control is temporarily unchangeable, for
565example because another application took over control of the
566respective resource. Such controls may be displayed specially in a
567user interface. Attempts to change the control may result in an
568&EBUSY;.</entry>
569 </row>
570 <row>
571 <entry><constant>V4L2_CTRL_FLAG_READ_ONLY</constant></entry>
572 <entry>0x0004</entry>
573 <entry>This control is permanently readable only. Any
574attempt to change the control will result in an &EINVAL;.</entry>
575 </row>
576 <row>
577 <entry><constant>V4L2_CTRL_FLAG_UPDATE</constant></entry>
578 <entry>0x0008</entry>
579 <entry>A hint that changing this control may affect the
580value of other controls within the same control class. Applications
581should update their user interface accordingly.</entry>
582 </row>
583 <row>
584 <entry><constant>V4L2_CTRL_FLAG_INACTIVE</constant></entry>
585 <entry>0x0010</entry>
586 <entry>This control is not applicable to the current
587configuration and should be displayed accordingly in a user interface.
588For example the flag may be set on a MPEG audio level 2 bitrate
589control when MPEG audio encoding level 1 was selected with another
590control.</entry>
591 </row>
592 <row>
593 <entry><constant>V4L2_CTRL_FLAG_SLIDER</constant></entry>
594 <entry>0x0020</entry>
595 <entry>A hint that this control is best represented as a
596slider-like element in a user interface.</entry>
597 </row>
598 <row>
599 <entry><constant>V4L2_CTRL_FLAG_WRITE_ONLY</constant></entry>
600 <entry>0x0040</entry>
601 <entry>This control is permanently writable only. Any
602attempt to read the control will result in an &EACCES; error code. This
603flag is typically present for relative controls or action controls where
604writing a value will cause the device to carry out a given action
605(&eg; motor control) but no meaningful value can be returned.</entry>
606 </row>
607 <row>
608 <entry><constant>V4L2_CTRL_FLAG_VOLATILE</constant></entry>
609 <entry>0x0080</entry>
610 <entry>This control is volatile, which means that the value of the control
611changes continuously. A typical example would be the current gain value if the device
612is in auto-gain mode. In such a case the hardware calculates the gain value based on
613the lighting conditions which can change over time. Note that setting a new value for
614a volatile control will have no effect and no <constant>V4L2_EVENT_CTRL_CH_VALUE</constant>
615will be sent, unless the <constant>V4L2_CTRL_FLAG_EXECUTE_ON_WRITE</constant> flag
616(see below) is also set. Otherwise the new value will just be ignored.</entry>
617 </row>
618 <row>
619 <entry><constant>V4L2_CTRL_FLAG_HAS_PAYLOAD</constant></entry>
620 <entry>0x0100</entry>
621 <entry>This control has a pointer type, so its value has to be accessed
622using one of the pointer fields of &v4l2-ext-control;. This flag is set for controls
623that are an array, string, or have a compound type. In all cases you have to set a
624pointer to memory containing the payload of the control.</entry>
625 </row>
626 <row>
627 <entry><constant>V4L2_CTRL_FLAG_EXECUTE_ON_WRITE</constant></entry>
628 <entry>0x0200</entry>
629 <entry>The value provided to the control will be propagated to the driver
630even if it remains constant. This is required when the control represents an action
631on the hardware. For example: clearing an error flag or triggering the flash. All the
632controls of the type <constant>V4L2_CTRL_TYPE_BUTTON</constant> have this flag set.</entry>
633 </row>
634 </tbody>
635 </tgroup>
636 </table>
637 </refsect1>
638
639 <refsect1>
640 &return-value;
641
642 <variablelist>
643 <varlistentry>
644 <term><errorcode>EINVAL</errorcode></term>
645 <listitem>
646 <para>The &v4l2-queryctrl; <structfield>id</structfield>
647is invalid. The &v4l2-querymenu; <structfield>id</structfield> is
648invalid or <structfield>index</structfield> is out of range (less than
649<structfield>minimum</structfield> or greater than <structfield>maximum</structfield>)
650or this particular menu item is not supported by the driver.</para>
651 </listitem>
652 </varlistentry>
653 <varlistentry>
654 <term><errorcode>EACCES</errorcode></term>
655 <listitem>
656 <para>An attempt was made to read a write-only control.</para>
657 </listitem>
658 </varlistentry>
659 </variablelist>
660 </refsect1>
661</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-querystd.xml b/Documentation/DocBook/media/v4l/vidioc-querystd.xml
deleted file mode 100644
index 3ceae35fab03..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-querystd.xml
+++ /dev/null
@@ -1,85 +0,0 @@
1<refentry id="vidioc-querystd">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERYSTD</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERYSTD</refname>
9 <refpurpose>Sense the video standard 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>v4l2_std_id *<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_QUERYSTD</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>The hardware may be able to detect the current video
53standard automatically. To do so, applications call <constant>
54VIDIOC_QUERYSTD</constant> with a pointer to a &v4l2-std-id; type. The
55driver stores here a set of candidates, this can be a single flag or a
56set of supported standards if for example the hardware can only
57distinguish between 50 and 60 Hz systems. If no signal was detected,
58then the driver will return V4L2_STD_UNKNOWN. When detection is not
59possible or fails, the set must contain all standards supported by the
60current video input or output.</para>
61
62<para>Please note that drivers shall <emphasis>not</emphasis> switch the video standard
63automatically if a new video standard is detected. Instead, drivers should send the
64<constant>V4L2_EVENT_SOURCE_CHANGE</constant> event (if they support this) and expect
65that userspace will take action by calling <constant>VIDIOC_QUERYSTD</constant>.
66The reason is that a new video standard can mean different buffer sizes as well, and you
67cannot change buffer sizes on the fly. In general, applications that receive the
68Source Change event will have to call <constant>VIDIOC_QUERYSTD</constant>,
69and if the detected video standard is valid they will have to stop streaming, set the new
70standard, allocate new buffers and start streaming again.</para>
71
72 </refsect1>
73
74 <refsect1>
75 &return-value;
76 <variablelist>
77 <varlistentry>
78 <term><errorcode>ENODATA</errorcode></term>
79 <listitem>
80 <para>Standard video timings are not supported for this input or output.</para>
81 </listitem>
82 </varlistentry>
83 </variablelist>
84 </refsect1>
85</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
deleted file mode 100644
index 6f529e100ea4..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
+++ /dev/null
@@ -1,137 +0,0 @@
1<refentry id="vidioc-reqbufs">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_REQBUFS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_REQBUFS</refname>
9 <refpurpose>Initiate Memory Mapping, User Pointer or DMA Buffer 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_requestbuffers *<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_REQBUFS</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<para>This ioctl is used to initiate <link linkend="mmap">memory mapped</link>,
52<link linkend="userp">user pointer</link> or <link
53linkend="dmabuf">DMABUF</link> based I/O. Memory mapped buffers are located in
54device memory and must be allocated with this ioctl before they can be mapped
55into the application's address space. User buffers are allocated by
56applications themselves, and this ioctl is merely used to switch the driver
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>
61
62 <para>To allocate device buffers applications initialize all fields of the
63<structname>v4l2_requestbuffers</structname> structure. They set the
64<structfield>type</structfield> field to the respective stream or buffer type,
65the <structfield>count</structfield> field to the desired number of buffers,
66<structfield>memory</structfield> must be set to the requested I/O method and
67the <structfield>reserved</structfield> array must be zeroed. When the ioctl is
68called with a pointer to this structure the driver will attempt to allocate the
69requested number of buffers and it stores the actual number allocated in the
70<structfield>count</structfield> field. It can be smaller than the number
71requested, even zero, when the driver runs out of free memory. A larger number
72is also possible when the driver requires more buffers to function correctly.
73For example video output requires at least two buffers, one displayed and one
74filled by the application.</para>
75 <para>When the I/O method is not supported the ioctl
76returns an &EINVAL;.</para>
77
78 <para>Applications can call <constant>VIDIOC_REQBUFS</constant>
79again to change the number of buffers, however this cannot succeed
80when any buffers are still mapped. A <structfield>count</structfield>
81value of zero frees all buffers, after aborting or finishing any DMA
82in progress, an implicit &VIDIOC-STREAMOFF;. <!-- mhs: I see no
83reason why munmap()ping one or even all buffers must imply
84streamoff.--></para>
85
86 <table pgwide="1" frame="none" id="v4l2-requestbuffers">
87 <title>struct <structname>v4l2_requestbuffers</structname></title>
88 <tgroup cols="3">
89 &cs-str;
90 <tbody valign="top">
91 <row>
92 <entry>__u32</entry>
93 <entry><structfield>count</structfield></entry>
94 <entry>The number of buffers requested or granted.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>type</structfield></entry>
99 <entry>Type of the stream or buffers, this is the same
100as the &v4l2-format; <structfield>type</structfield> field. See <xref
101 linkend="v4l2-buf-type" /> for valid values.</entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>memory</structfield></entry>
106 <entry>Applications set this field to
107<constant>V4L2_MEMORY_MMAP</constant>,
108<constant>V4L2_MEMORY_DMABUF</constant> or
109<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
110/>.</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>reserved</structfield>[2]</entry>
115 <entry>A place holder for future extensions. Drivers and applications
116must set the array to zero.</entry>
117 </row>
118 </tbody>
119 </tgroup>
120 </table>
121 </refsect1>
122
123 <refsect1>
124 &return-value;
125
126 <variablelist>
127 <varlistentry>
128 <term><errorcode>EINVAL</errorcode></term>
129 <listitem>
130 <para>The buffer type (<structfield>type</structfield> field) or the
131requested I/O method (<structfield>memory</structfield>) is not
132supported.</para>
133 </listitem>
134 </varlistentry>
135 </variablelist>
136 </refsect1>
137</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
deleted file mode 100644
index a5fc4c4880f3..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
+++ /dev/null
@@ -1,188 +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>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 or if the &v4l2-tuner;
125<structfield>capability</structfield> field has the
126<constant>V4L2_TUNER_CAP_1HZ</constant> flag set, in units of 1 Hz.
127If <structfield>rangelow</structfield> is zero a reasonable default value
128is used.</entry>
129 </row>
130 <row>
131 <entry>__u32</entry>
132 <entry><structfield>rangehigh</structfield></entry>
133 <entry>If non-zero, the highest tunable frequency of the band to
134search in units of 62.5 kHz, or if the &v4l2-tuner;
135<structfield>capability</structfield> field has the
136<constant>V4L2_TUNER_CAP_LOW</constant> flag set, in units of 62.5 Hz or if the &v4l2-tuner;
137<structfield>capability</structfield> field has the
138<constant>V4L2_TUNER_CAP_1HZ</constant> flag set, in units of 1 Hz.
139If <structfield>rangehigh</structfield> is zero a reasonable default value
140is used.</entry>
141 </row>
142 <row>
143 <entry>__u32</entry>
144 <entry><structfield>reserved</structfield>[5]</entry>
145 <entry>Reserved for future extensions. Applications
146 must set the array to zero.</entry>
147 </row>
148 </tbody>
149 </tgroup>
150 </table>
151 </refsect1>
152
153 <refsect1>
154 &return-value;
155
156 <variablelist>
157 <varlistentry>
158 <term><errorcode>EINVAL</errorcode></term>
159 <listitem>
160 <para>The <structfield>tuner</structfield> index is out of
161bounds, the <structfield>wrap_around</structfield> value is not supported or
162one of the values in the <structfield>type</structfield>,
163<structfield>rangelow</structfield> or <structfield>rangehigh</structfield>
164fields is wrong.</para>
165 </listitem>
166 </varlistentry>
167 <varlistentry>
168 <term><errorcode>EAGAIN</errorcode></term>
169 <listitem>
170 <para>Attempted to call <constant>VIDIOC_S_HW_FREQ_SEEK</constant>
171 with the filehandle in non-blocking mode.</para>
172 </listitem>
173 </varlistentry>
174 <varlistentry>
175 <term><errorcode>ENODATA</errorcode></term>
176 <listitem>
177 <para>The hardware seek found no channels.</para>
178 </listitem>
179 </varlistentry>
180 <varlistentry>
181 <term><errorcode>EBUSY</errorcode></term>
182 <listitem>
183 <para>Another hardware seek is already in progress.</para>
184 </listitem>
185 </varlistentry>
186 </variablelist>
187 </refsect1>
188</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-streamon.xml b/Documentation/DocBook/media/v4l/vidioc-streamon.xml
deleted file mode 100644
index 89fd7ce964f9..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-streamon.xml
+++ /dev/null
@@ -1,136 +0,0 @@
1<refentry id="vidioc-streamon">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_STREAMON, VIDIOC_STREAMOFF</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_STREAMON</refname>
9 <refname>VIDIOC_STREAMOFF</refname>
10 <refpurpose>Start or stop streaming 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>const int *<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_STREAMON, VIDIOC_STREAMOFF</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>The <constant>VIDIOC_STREAMON</constant> and
53<constant>VIDIOC_STREAMOFF</constant> ioctl start and stop the capture
54or output process during streaming (<link linkend="mmap">memory
55mapping</link>, <link linkend="userp">user pointer</link> or
56<link linkend="dmabuf">DMABUF</link>) I/O.</para>
57
58 <para>Capture hardware is disabled and no input
59buffers are filled (if there are any empty buffers in the incoming
60queue) until <constant>VIDIOC_STREAMON</constant> has been called.
61Output hardware is disabled and no video signal is
62produced until <constant>VIDIOC_STREAMON</constant> has been called.
63The ioctl will succeed when at least one output buffer is in the
64incoming queue.</para>
65
66 <para>Memory-to-memory devices will not start until
67<constant>VIDIOC_STREAMON</constant> has been called for both the capture
68and output stream types.</para>
69
70 <para>If <constant>VIDIOC_STREAMON</constant> fails then any already
71queued buffers will remain queued.</para>
72
73 <para>The <constant>VIDIOC_STREAMOFF</constant> ioctl, apart of
74aborting or finishing any DMA in progress, unlocks any user pointer
75buffers locked in physical memory, and it removes all buffers from the
76incoming and outgoing queues. That means all images captured but not
77dequeued yet will be lost, likewise all images enqueued for output but
78not transmitted yet. I/O returns to the same state as after calling
79&VIDIOC-REQBUFS; and can be restarted accordingly.</para>
80
81 <para>If buffers have been queued with &VIDIOC-QBUF; and
82<constant>VIDIOC_STREAMOFF</constant> is called without ever having
83called <constant>VIDIOC_STREAMON</constant>, then those queued buffers
84will also be removed from the incoming queue and all are returned to the
85same state as after calling &VIDIOC-REQBUFS; and can be restarted
86accordingly.</para>
87
88 <para>Both ioctls take a pointer to an integer, the desired buffer or
89stream type. This is the same as &v4l2-requestbuffers;
90<structfield>type</structfield>.</para>
91
92 <para>If <constant>VIDIOC_STREAMON</constant> is called when streaming
93is already in progress, or if <constant>VIDIOC_STREAMOFF</constant> is called
94when streaming is already stopped, then 0 is returned. Nothing happens in the
95case of <constant>VIDIOC_STREAMON</constant>, but <constant>VIDIOC_STREAMOFF</constant>
96will return queued buffers to their starting state as mentioned above.</para>
97
98 <para>Note that applications can be preempted for unknown periods right
99before or after the <constant>VIDIOC_STREAMON</constant> or
100<constant>VIDIOC_STREAMOFF</constant> calls, there is no notion of
101starting or stopping "now". Buffer timestamps can be used to
102synchronize with other events.</para>
103 </refsect1>
104
105 <refsect1>
106 &return-value;
107
108 <variablelist>
109 <varlistentry>
110 <term><errorcode>EINVAL</errorcode></term>
111 <listitem>
112 <para>The buffer <structfield>type</structfield> is not supported,
113 or no buffers have been allocated (memory mapping) or enqueued
114 (output) yet.</para>
115 </listitem>
116 </varlistentry>
117 <varlistentry>
118 <term><errorcode>EPIPE</errorcode></term>
119 <listitem>
120 <para>The driver implements <link
121 linkend="pad-level-formats">pad-level format configuration</link> and
122 the pipeline configuration is invalid.
123 </para>
124 </listitem>
125 </varlistentry>
126 <varlistentry>
127 <term><errorcode>ENOLINK</errorcode></term>
128 <listitem>
129 <para>The driver implements Media Controller interface and
130 the pipeline link configuration is invalid.
131 </para>
132 </listitem>
133 </varlistentry>
134 </variablelist>
135 </refsect1>
136</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
deleted file mode 100644
index 9d0251a27e5f..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-interval.xml
+++ /dev/null
@@ -1,151 +0,0 @@
1<refentry id="vidioc-subdev-enum-frame-interval">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</refname>
9 <refpurpose>Enumerate frame intervals</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_subdev_frame_interval_enum *
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_SUBDEV_ENUM_FRAME_INTERVAL</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>This ioctl lets applications enumerate available frame intervals on a
53 given sub-device pad. Frame intervals only makes sense for sub-devices that
54 can control the frame period on their own. This includes, for instance,
55 image sensors and TV tuners.</para>
56
57 <para>For the common use case of image sensors, the frame intervals
58 available on the sub-device output pad depend on the frame format and size
59 on the same pad. Applications must thus specify the desired format and size
60 when enumerating frame intervals.</para>
61
62 <para>To enumerate frame intervals applications initialize the
63 <structfield>index</structfield>, <structfield>pad</structfield>,
64 <structfield>which</structfield>, <structfield>code</structfield>,
65 <structfield>width</structfield> and <structfield>height</structfield>
66 fields of &v4l2-subdev-frame-interval-enum; and call the
67 <constant>VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL</constant> ioctl with a pointer
68 to this structure. Drivers fill the rest of the structure or return
69 an &EINVAL; if one of the input fields is invalid. All frame intervals are
70 enumerable by beginning at index zero and incrementing by one until
71 <errorcode>EINVAL</errorcode> is returned.</para>
72
73 <para>Available frame intervals may depend on the current 'try' formats
74 at other pads of the sub-device, as well as on the current active links. See
75 &VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para>
76
77 <para>Sub-devices that support the frame interval enumeration ioctl should
78 implemented it on a single pad only. Its behaviour when supported on
79 multiple pads of the same sub-device is not defined.</para>
80
81 <table pgwide="1" frame="none" id="v4l2-subdev-frame-interval-enum">
82 <title>struct <structname>v4l2_subdev_frame_interval_enum</structname></title>
83 <tgroup cols="3">
84 &cs-str;
85 <tbody valign="top">
86 <row>
87 <entry>__u32</entry>
88 <entry><structfield>index</structfield></entry>
89 <entry>Number of the format in the enumeration, set by the
90 application.</entry>
91 </row>
92 <row>
93 <entry>__u32</entry>
94 <entry><structfield>pad</structfield></entry>
95 <entry>Pad number as reported by the media controller API.</entry>
96 </row>
97 <row>
98 <entry>__u32</entry>
99 <entry><structfield>code</structfield></entry>
100 <entry>The media bus format code, as defined in
101 <xref linkend="v4l2-mbus-format" />.</entry>
102 </row>
103 <row>
104 <entry>__u32</entry>
105 <entry><structfield>width</structfield></entry>
106 <entry>Frame width, in pixels.</entry>
107 </row>
108 <row>
109 <entry>__u32</entry>
110 <entry><structfield>height</structfield></entry>
111 <entry>Frame height, in pixels.</entry>
112 </row>
113 <row>
114 <entry>&v4l2-fract;</entry>
115 <entry><structfield>interval</structfield></entry>
116 <entry>Period, in seconds, between consecutive video frames.</entry>
117 </row>
118 <row>
119 <entry>__u32</entry>
120 <entry><structfield>which</structfield></entry>
121 <entry>Frame intervals to be enumerated, from &v4l2-subdev-format-whence;.</entry>
122 </row>
123 <row>
124 <entry>__u32</entry>
125 <entry><structfield>reserved</structfield>[8]</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>EINVAL</errorcode></term>
140 <listitem>
141 <para>The &v4l2-subdev-frame-interval-enum;
142 <structfield>pad</structfield> references a non-existing pad, one of
143 the <structfield>code</structfield>, <structfield>width</structfield>
144 or <structfield>height</structfield> fields are invalid for the given
145 pad or the <structfield>index</structfield> field is out of bounds.
146 </para>
147 </listitem>
148 </varlistentry>
149 </variablelist>
150 </refsect1>
151</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
deleted file mode 100644
index 9b91b8332ba9..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-frame-size.xml
+++ /dev/null
@@ -1,153 +0,0 @@
1<refentry id="vidioc-subdev-enum-frame-size">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</refname>
9 <refpurpose>Enumerate media bus frame sizes</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_subdev_frame_size_enum *
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_SUBDEV_ENUM_FRAME_SIZE</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>This ioctl allows applications to enumerate all frame sizes
53 supported by a sub-device on the given pad for the given media bus format.
54 Supported formats can be retrieved with the &VIDIOC-SUBDEV-ENUM-MBUS-CODE;
55 ioctl.</para>
56
57 <para>To enumerate frame sizes applications initialize the
58 <structfield>pad</structfield>, <structfield>which</structfield> ,
59 <structfield>code</structfield> and <structfield>index</structfield>
60 fields of the &v4l2-subdev-mbus-code-enum; and call the
61 <constant>VIDIOC_SUBDEV_ENUM_FRAME_SIZE</constant> ioctl with a pointer to
62 the structure. Drivers fill the minimum and maximum frame sizes or return
63 an &EINVAL; if one of the input parameters is invalid.</para>
64
65 <para>Sub-devices that only support discrete frame sizes (such as most
66 sensors) will return one or more frame sizes with identical minimum and
67 maximum values.</para>
68
69 <para>Not all possible sizes in given [minimum, maximum] ranges need to be
70 supported. For instance, a scaler that uses a fixed-point scaling ratio
71 might not be able to produce every frame size between the minimum and
72 maximum values. Applications must use the &VIDIOC-SUBDEV-S-FMT; ioctl to
73 try the sub-device for an exact supported frame size.</para>
74
75 <para>Available frame sizes may depend on the current 'try' formats at other
76 pads of the sub-device, as well as on the current active links and the
77 current values of V4L2 controls. See &VIDIOC-SUBDEV-G-FMT; for more
78 information about try formats.</para>
79
80 <table pgwide="1" frame="none" id="v4l2-subdev-frame-size-enum">
81 <title>struct <structname>v4l2_subdev_frame_size_enum</structname></title>
82 <tgroup cols="3">
83 &cs-str;
84 <tbody valign="top">
85 <row>
86 <entry>__u32</entry>
87 <entry><structfield>index</structfield></entry>
88 <entry>Number of the format in the enumeration, set by the
89 application.</entry>
90 </row>
91 <row>
92 <entry>__u32</entry>
93 <entry><structfield>pad</structfield></entry>
94 <entry>Pad number as reported by the media controller API.</entry>
95 </row>
96 <row>
97 <entry>__u32</entry>
98 <entry><structfield>code</structfield></entry>
99 <entry>The media bus format code, as defined in
100 <xref linkend="v4l2-mbus-format" />.</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>min_width</structfield></entry>
105 <entry>Minimum frame width, in pixels.</entry>
106 </row>
107 <row>
108 <entry>__u32</entry>
109 <entry><structfield>max_width</structfield></entry>
110 <entry>Maximum frame width, in pixels.</entry>
111 </row>
112 <row>
113 <entry>__u32</entry>
114 <entry><structfield>min_height</structfield></entry>
115 <entry>Minimum frame height, in pixels.</entry>
116 </row>
117 <row>
118 <entry>__u32</entry>
119 <entry><structfield>max_height</structfield></entry>
120 <entry>Maximum frame height, in pixels.</entry>
121 </row>
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>which</structfield></entry>
125 <entry>Frame sizes to be enumerated, from &v4l2-subdev-format-whence;.</entry>
126 </row>
127 <row>
128 <entry>__u32</entry>
129 <entry><structfield>reserved</structfield>[8]</entry>
130 <entry>Reserved for future extensions. Applications and drivers must
131 set the array to zero.</entry>
132 </row>
133 </tbody>
134 </tgroup>
135 </table>
136 </refsect1>
137
138 <refsect1>
139 &return-value;
140
141 <variablelist>
142 <varlistentry>
143 <term><errorcode>EINVAL</errorcode></term>
144 <listitem>
145 <para>The &v4l2-subdev-frame-size-enum; <structfield>pad</structfield>
146 references a non-existing pad, the <structfield>code</structfield> is
147 invalid for the given pad or the <structfield>index</structfield>
148 field is out of bounds.</para>
149 </listitem>
150 </varlistentry>
151 </variablelist>
152 </refsect1>
153</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
deleted file mode 100644
index c67256ada87a..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-enum-mbus-code.xml
+++ /dev/null
@@ -1,118 +0,0 @@
1<refentry id="vidioc-subdev-enum-mbus-code">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_ENUM_MBUS_CODE</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_ENUM_MBUS_CODE</refname>
9 <refpurpose>Enumerate media bus formats</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_subdev_mbus_code_enum *
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_SUBDEV_ENUM_MBUS_CODE</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>To enumerate media bus formats available at a given sub-device pad
53 applications initialize the <structfield>pad</structfield>, <structfield>which</structfield>
54 and <structfield>index</structfield> fields of &v4l2-subdev-mbus-code-enum; and
55 call the <constant>VIDIOC_SUBDEV_ENUM_MBUS_CODE</constant> ioctl with a
56 pointer to this structure. Drivers fill the rest of the structure or return
57 an &EINVAL; if either the <structfield>pad</structfield> or
58 <structfield>index</structfield> are invalid. All media bus formats are
59 enumerable by beginning at index zero and incrementing by one until
60 <errorcode>EINVAL</errorcode> is returned.</para>
61
62 <para>Available media bus formats may depend on the current 'try' formats
63 at other pads of the sub-device, as well as on the current active links. See
64 &VIDIOC-SUBDEV-G-FMT; for more information about the try formats.</para>
65
66 <table pgwide="1" frame="none" id="v4l2-subdev-mbus-code-enum">
67 <title>struct <structname>v4l2_subdev_mbus_code_enum</structname></title>
68 <tgroup cols="3">
69 &cs-str;
70 <tbody valign="top">
71 <row>
72 <entry>__u32</entry>
73 <entry><structfield>pad</structfield></entry>
74 <entry>Pad number as reported by the media controller API.</entry>
75 </row>
76 <row>
77 <entry>__u32</entry>
78 <entry><structfield>index</structfield></entry>
79 <entry>Number of the format in the enumeration, set by the
80 application.</entry>
81 </row>
82 <row>
83 <entry>__u32</entry>
84 <entry><structfield>code</structfield></entry>
85 <entry>The media bus format code, as defined in
86 <xref linkend="v4l2-mbus-format" />.</entry>
87 </row>
88 <row>
89 <entry>__u32</entry>
90 <entry><structfield>which</structfield></entry>
91 <entry>Media bus format codes to be enumerated, from &v4l2-subdev-format-whence;.</entry>
92 </row>
93 <row>
94 <entry>__u32</entry>
95 <entry><structfield>reserved</structfield>[8]</entry>
96 <entry>Reserved for future extensions. Applications and drivers must
97 set the array to zero.</entry>
98 </row>
99 </tbody>
100 </tgroup>
101 </table>
102 </refsect1>
103
104 <refsect1>
105 &return-value;
106
107 <variablelist>
108 <varlistentry>
109 <term><errorcode>EINVAL</errorcode></term>
110 <listitem>
111 <para>The &v4l2-subdev-mbus-code-enum; <structfield>pad</structfield>
112 references a non-existing pad, or the <structfield>index</structfield>
113 field is out of bounds.</para>
114 </listitem>
115 </varlistentry>
116 </variablelist>
117 </refsect1>
118</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
deleted file mode 100644
index 4cddd788c589..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
+++ /dev/null
@@ -1,158 +0,0 @@
1<refentry id="vidioc-subdev-g-crop">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_CROP, VIDIOC_SUBDEV_S_CROP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_CROP</refname>
9 <refname>VIDIOC_SUBDEV_S_CROP</refname>
10 <refpurpose>Get or set the crop rectangle 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_crop *<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_crop *<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_CROP, VIDIOC_SUBDEV_S_CROP</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
60 <note>
61 <title>Obsolete</title>
62
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>
67 </note>
68
69 <para>To retrieve the current crop rectangle applications set the
70 <structfield>pad</structfield> field of a &v4l2-subdev-crop; to the
71 desired pad number as reported by the media API and the
72 <structfield>which</structfield> field to
73 <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. They then call the
74 <constant>VIDIOC_SUBDEV_G_CROP</constant> ioctl with a pointer to this
75 structure. The driver fills the members of the <structfield>rect</structfield>
76 field or returns &EINVAL; if the input arguments are invalid, or if cropping
77 is not supported on the given pad.</para>
78
79 <para>To change the current crop rectangle applications set both the
80 <structfield>pad</structfield> and <structfield>which</structfield> fields
81 and all members of the <structfield>rect</structfield> field. They then call
82 the <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctl with a pointer to this
83 structure. The driver verifies the requested crop rectangle, adjusts it
84 based on the hardware capabilities and configures the device. Upon return
85 the &v4l2-subdev-crop; contains the current format as would be returned
86 by a <constant>VIDIOC_SUBDEV_G_CROP</constant> call.</para>
87
88 <para>Applications can query the device capabilities by setting the
89 <structfield>which</structfield> to
90 <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. When set, 'try' crop
91 rectangles are not applied to the device by the driver, but are mangled
92 exactly as active crop rectangles and stored in the sub-device file handle.
93 Two applications querying the same sub-device would thus not interact with
94 each other.</para>
95
96 <para>Drivers must not return an error solely because the requested crop
97 rectangle doesn't match the device capabilities. They must instead modify
98 the rectangle to match what the hardware can provide. The modified format
99 should be as close as possible to the original request.</para>
100
101 <table pgwide="1" frame="none" id="v4l2-subdev-crop">
102 <title>struct <structname>v4l2_subdev_crop</structname></title>
103 <tgroup cols="3">
104 &cs-str;
105 <tbody valign="top">
106 <row>
107 <entry>__u32</entry>
108 <entry><structfield>pad</structfield></entry>
109 <entry>Pad number as reported by the media framework.</entry>
110 </row>
111 <row>
112 <entry>__u32</entry>
113 <entry><structfield>which</structfield></entry>
114 <entry>Crop rectangle to get or set, from
115 &v4l2-subdev-format-whence;.</entry>
116 </row>
117 <row>
118 <entry>&v4l2-rect;</entry>
119 <entry><structfield>rect</structfield></entry>
120 <entry>Crop rectangle boundaries, in pixels.</entry>
121 </row>
122 <row>
123 <entry>__u32</entry>
124 <entry><structfield>reserved</structfield>[8]</entry>
125 <entry>Reserved for future extensions. Applications and drivers must
126 set the array to zero.</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>EBUSY</errorcode></term>
139 <listitem>
140 <para>The crop rectangle can't be changed because the pad is currently
141 busy. This can be caused, for instance, by an active video stream on
142 the pad. The ioctl must not be retried without performing another
143 action to fix the problem first. Only returned by
144 <constant>VIDIOC_SUBDEV_S_CROP</constant></para>
145 </listitem>
146 </varlistentry>
147 <varlistentry>
148 <term><errorcode>EINVAL</errorcode></term>
149 <listitem>
150 <para>The &v4l2-subdev-crop; <structfield>pad</structfield>
151 references a non-existing pad, the <structfield>which</structfield>
152 field references a non-existing format, or cropping is not supported
153 on the given subdev pad.</para>
154 </listitem>
155 </varlistentry>
156 </variablelist>
157 </refsect1>
158</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml
deleted file mode 100644
index 781089cba453..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-fmt.xml
+++ /dev/null
@@ -1,177 +0,0 @@
1<refentry id="vidioc-subdev-g-fmt">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_FMT</refname>
9 <refname>VIDIOC_SUBDEV_S_FMT</refname>
10 <refpurpose>Get or set the data format 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_format *<parameter>argp</parameter>
20 </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_SUBDEV_G_FMT, VIDIOC_SUBDEV_S_FMT</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 <para>These ioctls are used to negotiate the frame format at specific
54 subdev pads in the image pipeline.</para>
55
56 <para>To retrieve the current format applications set the
57 <structfield>pad</structfield> field of a &v4l2-subdev-format; to the
58 desired pad number as reported by the media API and the
59 <structfield>which</structfield> field to
60 <constant>V4L2_SUBDEV_FORMAT_ACTIVE</constant>. When they call the
61 <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl with a pointer to this
62 structure the driver fills the members of the <structfield>format</structfield>
63 field.</para>
64
65 <para>To change the current format applications set both the
66 <structfield>pad</structfield> and <structfield>which</structfield> fields
67 and all members of the <structfield>format</structfield> field. When they
68 call the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl with a pointer to this
69 structure the driver verifies the requested format, adjusts it based on the
70 hardware capabilities and configures the device. Upon return the
71 &v4l2-subdev-format; contains the current format as would be returned by a
72 <constant>VIDIOC_SUBDEV_G_FMT</constant> call.</para>
73
74 <para>Applications can query the device capabilities by setting the
75 <structfield>which</structfield> to
76 <constant>V4L2_SUBDEV_FORMAT_TRY</constant>. When set, 'try' formats are not
77 applied to the device by the driver, but are changed exactly as active
78 formats and stored in the sub-device file handle. Two applications querying
79 the same sub-device would thus not interact with each other.</para>
80
81 <para>For instance, to try a format at the output pad of a sub-device,
82 applications would first set the try format at the sub-device input with the
83 <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl. They would then either
84 retrieve the default format at the output pad with the
85 <constant>VIDIOC_SUBDEV_G_FMT</constant> ioctl, or set the desired output
86 pad format with the <constant>VIDIOC_SUBDEV_S_FMT</constant> ioctl and check
87 the returned value.</para>
88
89 <para>Try formats do not depend on active formats, but can depend on the
90 current links configuration or sub-device controls value. For instance, a
91 low-pass noise filter might crop pixels at the frame boundaries, modifying
92 its output frame size.</para>
93
94 <para>Drivers must not return an error solely because the requested format
95 doesn't match the device capabilities. They must instead modify the format
96 to match what the hardware can provide. The modified format should be as
97 close as possible to the original request.</para>
98
99 <table pgwide="1" frame="none" id="v4l2-subdev-format">
100 <title>struct <structname>v4l2_subdev_format</structname></title>
101 <tgroup cols="3">
102 &cs-str;
103 <tbody valign="top">
104 <row>
105 <entry>__u32</entry>
106 <entry><structfield>pad</structfield></entry>
107 <entry>Pad number as reported by the media controller API.</entry>
108 </row>
109 <row>
110 <entry>__u32</entry>
111 <entry><structfield>which</structfield></entry>
112 <entry>Format to modified, from &v4l2-subdev-format-whence;.</entry>
113 </row>
114 <row>
115 <entry>&v4l2-mbus-framefmt;</entry>
116 <entry><structfield>format</structfield></entry>
117 <entry>Definition of an image format, see <xref
118 linkend="v4l2-mbus-framefmt" /> for details.</entry>
119 </row>
120 <row>
121 <entry>__u32</entry>
122 <entry><structfield>reserved</structfield>[8]</entry>
123 <entry>Reserved for future extensions. Applications and drivers must
124 set the array to zero.</entry>
125 </row>
126 </tbody>
127 </tgroup>
128 </table>
129
130 <table pgwide="1" frame="none" id="v4l2-subdev-format-whence">
131 <title>enum <structname>v4l2_subdev_format_whence</structname></title>
132 <tgroup cols="3">
133 &cs-def;
134 <tbody valign="top">
135 <row>
136 <entry>V4L2_SUBDEV_FORMAT_TRY</entry>
137 <entry>0</entry>
138 <entry>Try formats, used for querying device capabilities.</entry>
139 </row>
140 <row>
141 <entry>V4L2_SUBDEV_FORMAT_ACTIVE</entry>
142 <entry>1</entry>
143 <entry>Active formats, applied to the hardware.</entry>
144 </row>
145 </tbody>
146 </tgroup>
147 </table>
148 </refsect1>
149
150 <refsect1>
151 &return-value;
152
153 <variablelist>
154 <varlistentry>
155 <term><errorcode>EBUSY</errorcode></term>
156 <listitem>
157 <para>The format can't be changed because the pad is currently busy.
158 This can be caused, for instance, by an active video stream on the
159 pad. The ioctl must not be retried without performing another action
160 to fix the problem first. Only returned by
161 <constant>VIDIOC_SUBDEV_S_FMT</constant></para>
162 </listitem>
163 </varlistentry>
164 <varlistentry>
165 <term><errorcode>EINVAL</errorcode></term>
166 <listitem>
167 <para>The &v4l2-subdev-format; <structfield>pad</structfield>
168 references a non-existing pad, or the <structfield>which</structfield>
169 field references a non-existing format.</para>
170 </listitem>
171 </varlistentry>
172 </variablelist>
173 </refsect1>
174 <refsect1>
175 &return-value;
176 </refsect1>
177</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml
deleted file mode 100644
index 848ec789ddaa..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-frame-interval.xml
+++ /dev/null
@@ -1,135 +0,0 @@
1<refentry id="vidioc-subdev-g-frame-interval">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_FRAME_INTERVAL, VIDIOC_SUBDEV_S_FRAME_INTERVAL</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_FRAME_INTERVAL</refname>
9 <refname>VIDIOC_SUBDEV_S_FRAME_INTERVAL</refname>
10 <refpurpose>Get or set the frame interval 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_frame_interval *<parameter>argp</parameter>
20 </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_SUBDEV_G_FRAME_INTERVAL, VIDIOC_SUBDEV_S_FRAME_INTERVAL</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 <para>These ioctls are used to get and set the frame interval at specific
54 subdev pads in the image pipeline. The frame interval only makes sense for
55 sub-devices that can control the frame period on their own. This includes,
56 for instance, image sensors and TV tuners. Sub-devices that don't support
57 frame intervals must not implement these ioctls.</para>
58
59 <para>To retrieve the current frame interval applications set the
60 <structfield>pad</structfield> field of a &v4l2-subdev-frame-interval; to
61 the desired pad number as reported by the media controller API. When they
62 call the <constant>VIDIOC_SUBDEV_G_FRAME_INTERVAL</constant> ioctl with a
63 pointer to this structure the driver fills the members of the
64 <structfield>interval</structfield> field.</para>
65
66 <para>To change the current frame interval applications set both the
67 <structfield>pad</structfield> field and all members of the
68 <structfield>interval</structfield> field. When they call the
69 <constant>VIDIOC_SUBDEV_S_FRAME_INTERVAL</constant> ioctl with a pointer to
70 this structure the driver verifies the requested interval, adjusts it based
71 on the hardware capabilities and configures the device. Upon return the
72 &v4l2-subdev-frame-interval; contains the current frame interval as would be
73 returned by a <constant>VIDIOC_SUBDEV_G_FRAME_INTERVAL</constant> call.
74 </para>
75
76 <para>Drivers must not return an error solely because the requested interval
77 doesn't match the device capabilities. They must instead modify the interval
78 to match what the hardware can provide. The modified interval should be as
79 close as possible to the original request.</para>
80
81 <para>Sub-devices that support the frame interval ioctls should implement
82 them on a single pad only. Their behaviour when supported on multiple pads
83 of the same sub-device is not defined.</para>
84
85 <table pgwide="1" frame="none" id="v4l2-subdev-frame-interval">
86 <title>struct <structname>v4l2_subdev_frame_interval</structname></title>
87 <tgroup cols="3">
88 &cs-str;
89 <tbody valign="top">
90 <row>
91 <entry>__u32</entry>
92 <entry><structfield>pad</structfield></entry>
93 <entry>Pad number as reported by the media controller API.</entry>
94 </row>
95 <row>
96 <entry>&v4l2-fract;</entry>
97 <entry><structfield>interval</structfield></entry>
98 <entry>Period, in seconds, between consecutive video frames.</entry>
99 </row>
100 <row>
101 <entry>__u32</entry>
102 <entry><structfield>reserved</structfield>[9]</entry>
103 <entry>Reserved for future extensions. Applications and drivers must
104 set the array to zero.</entry>
105 </row>
106 </tbody>
107 </tgroup>
108 </table>
109 </refsect1>
110
111 <refsect1>
112 &return-value;
113
114 <variablelist>
115 <varlistentry>
116 <term><errorcode>EBUSY</errorcode></term>
117 <listitem>
118 <para>The frame interval can't be changed because the pad is currently
119 busy. This can be caused, for instance, by an active video stream on
120 the pad. The ioctl must not be retried without performing another
121 action to fix the problem first. Only returned by
122 <constant>VIDIOC_SUBDEV_S_FRAME_INTERVAL</constant></para>
123 </listitem>
124 </varlistentry>
125 <varlistentry>
126 <term><errorcode>EINVAL</errorcode></term>
127 <listitem>
128 <para>The &v4l2-subdev-frame-interval; <structfield>pad</structfield>
129 references a non-existing pad, or the pad doesn't support frame
130 intervals.</para>
131 </listitem>
132 </varlistentry>
133 </variablelist>
134 </refsect1>
135</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
deleted file mode 100644
index 8346b2e4a703..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
+++ /dev/null
@@ -1,159 +0,0 @@
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 <para>The selections are used to configure various image
53 processing functionality performed by the subdevs which affect the
54 image size. This currently includes cropping, scaling and
55 composition.</para>
56
57 <para>The selection API replaces <link
58 linkend="vidioc-subdev-g-crop">the old subdev crop API</link>. All
59 the function of the crop API, and more, are supported by the
60 selections API.</para>
61
62 <para>See <xref linkend="subdev"></xref> for
63 more information on how each selection target affects the image
64 processing pipeline inside the subdevice.</para>
65
66 <refsect2>
67 <title>Types of selection targets</title>
68
69 <para>There are two types of selection targets: actual and bounds. The
70 actual targets are the targets which configure the hardware. The BOUNDS
71 target will return a rectangle that contain all possible actual
72 rectangles.</para>
73 </refsect2>
74
75 <refsect2>
76 <title>Discovering supported features</title>
77
78 <para>To discover which targets are supported, the user can
79 perform <constant>VIDIOC_SUBDEV_G_SELECTION</constant> on them.
80 Any unsupported target will return
81 <constant>EINVAL</constant>.</para>
82
83 <para>Selection targets and flags are documented in <xref
84 linkend="v4l2-selections-common"/>.</para>
85
86 <table pgwide="1" frame="none" id="v4l2-subdev-selection">
87 <title>struct <structname>v4l2_subdev_selection</structname></title>
88 <tgroup cols="3">
89 &cs-str;
90 <tbody valign="top">
91 <row>
92 <entry>__u32</entry>
93 <entry><structfield>which</structfield></entry>
94 <entry>Active or try selection, from
95 &v4l2-subdev-format-whence;.</entry>
96 </row>
97 <row>
98 <entry>__u32</entry>
99 <entry><structfield>pad</structfield></entry>
100 <entry>Pad number as reported by the media framework.</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>target</structfield></entry>
105 <entry>Target selection rectangle. See
106 <xref linkend="v4l2-selections-common" />.</entry>
107 </row>
108 <row>
109 <entry>__u32</entry>
110 <entry><structfield>flags</structfield></entry>
111 <entry>Flags. See
112 <xref linkend="v4l2-selection-flags" />.</entry>
113 </row>
114 <row>
115 <entry>&v4l2-rect;</entry>
116 <entry><structfield>r</structfield></entry>
117 <entry>Selection rectangle, in pixels.</entry>
118 </row>
119 <row>
120 <entry>__u32</entry>
121 <entry><structfield>reserved</structfield>[8]</entry>
122 <entry>Reserved for future extensions. Applications and drivers must
123 set the array to zero.</entry>
124 </row>
125 </tbody>
126 </tgroup>
127 </table>
128 </refsect2>
129
130 </refsect1>
131
132 <refsect1>
133 &return-value;
134
135 <variablelist>
136 <varlistentry>
137 <term><errorcode>EBUSY</errorcode></term>
138 <listitem>
139 <para>The selection rectangle can't be changed because the
140 pad is currently busy. This can be caused, for instance, by
141 an active video stream on the pad. The ioctl must not be
142 retried without performing another action to fix the problem
143 first. Only returned by
144 <constant>VIDIOC_SUBDEV_S_SELECTION</constant></para>
145 </listitem>
146 </varlistentry>
147 <varlistentry>
148 <term><errorcode>EINVAL</errorcode></term>
149 <listitem>
150 <para>The &v4l2-subdev-selection;
151 <structfield>pad</structfield> references a non-existing
152 pad, the <structfield>which</structfield> field references a
153 non-existing format, or the selection target is not
154 supported on the given subdev pad.</para>
155 </listitem>
156 </varlistentry>
157 </variablelist>
158 </refsect1>
159</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml b/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
deleted file mode 100644
index 5fd0ee78f880..000000000000
--- a/Documentation/DocBook/media/v4l/vidioc-subscribe-event.xml
+++ /dev/null
@@ -1,130 +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</refname>
9 <refname>VIDIOC_UNSUBSCRIBE_EVENT</refname>
10 <refpurpose>Subscribe or unsubscribe event</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_event_subscription
20*<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_SUBSCRIBE_EVENT, VIDIOC_UNSUBSCRIBE_EVENT</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 <para>Subscribe or unsubscribe V4L2 event. Subscribed events are
54 dequeued by using the &VIDIOC-DQEVENT; ioctl.</para>
55
56 <table frame="none" pgwide="1" id="v4l2-event-subscription">
57 <title>struct <structname>v4l2_event_subscription</structname></title>
58 <tgroup cols="3">
59 &cs-str;
60 <tbody valign="top">
61 <row>
62 <entry>__u32</entry>
63 <entry><structfield>type</structfield></entry>
64 <entry>Type of the event, see <xref linkend="event-type" />. Note that
65<constant>V4L2_EVENT_ALL</constant> can be used with VIDIOC_UNSUBSCRIBE_EVENT
66for unsubscribing all events at once.</entry>
67 </row>
68 <row>
69 <entry>__u32</entry>
70 <entry><structfield>id</structfield></entry>
71 <entry>ID of the event source. If there is no ID associated with
72 the event source, then set this to 0. Whether or not an event
73 needs an ID depends on the event type.</entry>
74 </row>
75 <row>
76 <entry>__u32</entry>
77 <entry><structfield>flags</structfield></entry>
78 <entry>Event flags, see <xref linkend="event-flags" />.</entry>
79 </row>
80 <row>
81 <entry>__u32</entry>
82 <entry><structfield>reserved</structfield>[5]</entry>
83 <entry>Reserved for future extensions. Drivers and applications
84 must set the array to zero.</entry>
85 </row>
86 </tbody>
87 </tgroup>
88 </table>
89
90 <table pgwide="1" frame="none" id="event-flags">
91 <title>Event Flags</title>
92 <tgroup cols="3">
93 &cs-def;
94 <tbody valign="top">
95 <row>
96 <entry><constant>V4L2_EVENT_SUB_FL_SEND_INITIAL</constant></entry>
97 <entry>0x0001</entry>
98 <entry>When this event is subscribed an initial event will be sent
99 containing the current status. This only makes sense for events
100 that are triggered by a status change such as <constant>V4L2_EVENT_CTRL</constant>.
101 Other events will ignore this flag.</entry>
102 </row>
103 <row>
104 <entry><constant>V4L2_EVENT_SUB_FL_ALLOW_FEEDBACK</constant></entry>
105 <entry>0x0002</entry>
106 <entry><para>If set, then events directly caused by an ioctl will also be sent to
107 the filehandle that called that ioctl. For example, changing a control using
108 &VIDIOC-S-CTRL; will cause a V4L2_EVENT_CTRL to be sent back to that same
109 filehandle. Normally such events are suppressed to prevent feedback loops
110 where an application changes a control to a one value and then another, and
111 then receives an event telling it that that control has changed to the first
112 value.</para>
113
114 <para>Since it can't tell whether that event was caused by another application
115 or by the &VIDIOC-S-CTRL; call it is hard to decide whether to set the
116 control to the value in the event, or ignore it.</para>
117
118 <para>Think carefully when you set this flag so you won't get into situations
119 like that.</para>
120 </entry>
121 </row>
122 </tbody>
123 </tgroup>
124 </table>
125
126 </refsect1>
127 <refsect1>
128 &return-value;
129 </refsect1>
130</refentry>
diff --git a/Documentation/DocBook/media/vbi_525.gif.b64 b/Documentation/DocBook/media/vbi_525.gif.b64
deleted file mode 100644
index d5dcf06f2aef..000000000000
--- a/Documentation/DocBook/media/vbi_525.gif.b64
+++ /dev/null
@@ -1,84 +0,0 @@
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
84E9gqF8bNWgAAOw==
diff --git a/Documentation/DocBook/media/vbi_625.gif.b64 b/Documentation/DocBook/media/vbi_625.gif.b64
deleted file mode 100644
index 831f49a02821..000000000000
--- a/Documentation/DocBook/media/vbi_625.gif.b64
+++ /dev/null
@@ -1,90 +0,0 @@
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
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
deleted file mode 100644
index cdafabed5c11..000000000000
--- a/Documentation/DocBook/media/vbi_hsync.gif.b64
+++ /dev/null
@@ -1,43 +0,0 @@
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_api.tmpl b/Documentation/DocBook/media_api.tmpl
deleted file mode 100644
index a2765d8ad05c..000000000000
--- a/Documentation/DocBook/media_api.tmpl
+++ /dev/null
@@ -1,121 +0,0 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4<!ENTITY % media-entities SYSTEM "./media-entities.tmpl"> %media-entities;
5<!ENTITY media-indices SYSTEM "./media-indices.tmpl">
6
7<!ENTITY eg "e.&nbsp;g.">
8<!ENTITY ie "i.&nbsp;e.">
9<!ENTITY fd "File descriptor returned by <link linkend='func-open'><function>open()</function></link>.">
10<!ENTITY fe_fd "File descriptor returned by <link linkend='frontend_f_open'><function>open()</function></link>.">
11<!ENTITY i2c "I<superscript>2</superscript>C">
12<!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>">
13<!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>">
14<!ENTITY manvol "<manvolnum>2</manvolnum>">
15
16<!-- Table templates: structs, structs w/union, defines. -->
17<!ENTITY cs-str "<colspec colname='c1' colwidth='1*' /><colspec colname='c2' colwidth='1*' /><colspec colname='c3' colwidth='2*' /><spanspec spanname='hspan' namest='c1' nameend='c3' />">
18<!ENTITY cs-ustr "<colspec colname='c1' colwidth='1*' /><colspec colname='c2' colwidth='1*' /><colspec colname='c3' colwidth='1*' /><colspec colname='c4' colwidth='2*' /><spanspec spanname='hspan' namest='c1' nameend='c4' />">
19<!ENTITY cs-def "<colspec colname='c1' colwidth='3*' /><colspec colname='c2' colwidth='1*' /><colspec colname='c3' colwidth='4*' /><spanspec spanname='hspan' namest='c1' nameend='c3' />">
20
21<!-- Video for Linux mailing list address. -->
22<!ENTITY v4l-ml "<ulink url='https://linuxtv.org/lists.php'>https://linuxtv.org/lists.php</ulink>">
23
24<!-- LinuxTV v4l-dvb repository. -->
25<!ENTITY v4l-dvb "<ulink url='https://linuxtv.org/repo/'>https://linuxtv.org/repo/</ulink>">
26<!ENTITY dash-ent-8 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
27<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
28<!ENTITY dash-ent-12 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
29<!ENTITY dash-ent-14 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
30<!ENTITY dash-ent-16 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
31<!ENTITY dash-ent-20 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
32<!ENTITY dash-ent-22 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
33<!ENTITY dash-ent-24 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
34]>
35
36<book id="media_api" lang="en">
37<bookinfo>
38 <title>LINUX MEDIA INFRASTRUCTURE API</title>
39
40 <copyright>
41 <year>2009-2015</year>
42 <holder>LinuxTV Developers</holder>
43 </copyright>
44
45 <legalnotice>
46 <para>Permission is granted to copy, distribute and/or modify
47 this document under the terms of the GNU Free Documentation License,
48 Version 1.1 or any later version published by the Free Software
49 Foundation. A copy of the license is included in the chapter entitled
50 "GNU Free Documentation License"</para>
51 </legalnotice>
52</bookinfo>
53
54<toc></toc> <!-- autogenerated -->
55
56<preface>
57 <title>Introduction</title>
58
59 <para>This document covers the Linux Kernel to Userspace API's used by
60 video and radio streaming devices, including video cameras,
61 analog and digital TV receiver cards, AM/FM receiver cards,
62 streaming capture and output devices, codec devices and remote
63 controllers.</para>
64 <para>A typical media device hardware is shown at
65 <xref linkend="typical_media_device" />.</para>
66 <figure id="typical_media_device">
67 <title>Typical Media Device</title>
68 <mediaobject>
69 <imageobject>
70 <imagedata fileref="typical_media_device.svg" format="SVG" />
71 </imageobject>
72 <textobject>
73 <phrase>Typical Media Device Block Diagram</phrase>
74 </textobject>
75 </mediaobject>
76 </figure>
77 <para>The media infrastructure API was designed to control such
78 devices. It is divided into five parts.</para>
79 <para>The first part covers radio, video capture and output,
80 cameras, analog TV devices and codecs.</para>
81 <para>The second part covers the
82 API used for digital TV and Internet reception via one of the
83 several digital tv standards. While it is called as DVB API,
84 in fact it covers several different video standards including
85 DVB-T/T2, DVB-S/S2, DVB-C, ATSC, ISDB-T, ISDB-S,etc. The complete
86 list of supported standards can be found at
87 <xref linkend="fe-delivery-system-t" />.</para>
88 <para>The third part covers the Remote Controller API.</para>
89 <para>The fourth part covers the Media Controller API.</para>
90 <para>The fifth part covers the CEC (Consumer Electronics Control) API.</para>
91 <para>It should also be noted that a media device may also have audio
92 components, like mixers, PCM capture, PCM playback, etc, which
93 are controlled via ALSA API.</para>
94 <para>For additional information and for the latest development code,
95 see: <ulink url="https://linuxtv.org">https://linuxtv.org</ulink>.</para>
96 <para>For discussing improvements, reporting troubles, sending new drivers, etc, please mail to: <ulink url="http://vger.kernel.org/vger-lists.html#linux-media">Linux Media Mailing List (LMML).</ulink>.</para>
97</preface>
98
99<part id="v4l2spec">
100&sub-v4l2;
101</part>
102<part id="dvbapi">
103&sub-dvbapi;
104</part>
105<part id="remotes">
106&sub-remote_controllers;
107</part>
108<part id="media_common">
109&sub-media-controller;
110</part>
111<part id="cec">
112&sub-cec-api;
113</part>
114
115<chapter id="gen_errors">
116&sub-gen-errors;
117</chapter>
118
119&sub-fdl-appendix;
120
121</book>
diff --git a/Documentation/Makefile.sphinx b/Documentation/Makefile.sphinx
index fd565e1f1368..b10b6c598ae2 100644
--- a/Documentation/Makefile.sphinx
+++ b/Documentation/Makefile.sphinx
@@ -63,7 +63,6 @@ sgmldocs:
63psdocs: 63psdocs:
64mandocs: 64mandocs:
65installmandocs: 65installmandocs:
66cleanmediadocs:
67 66
68cleandocs: 67cleandocs:
69 $(Q)rm -rf $(BUILDDIR) 68 $(Q)rm -rf $(BUILDDIR)
diff --git a/Makefile b/Makefile
index 182a84d0b8ea..35603556023e 100644
--- a/Makefile
+++ b/Makefile
@@ -1432,7 +1432,7 @@ $(help-board-dirs): help-%:
1432 1432
1433# Documentation targets 1433# Documentation targets
1434# --------------------------------------------------------------------------- 1434# ---------------------------------------------------------------------------
1435DOC_TARGETS := xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs epubdocs cleandocs cleanmediadocs 1435DOC_TARGETS := xmldocs sgmldocs psdocs pdfdocs htmldocs mandocs installmandocs epubdocs cleandocs
1436PHONY += $(DOC_TARGETS) 1436PHONY += $(DOC_TARGETS)
1437$(DOC_TARGETS): scripts_basic FORCE 1437$(DOC_TARGETS): scripts_basic FORCE
1438 $(Q)$(MAKE) $(build)=scripts build_docproc build_check-lc_ctype 1438 $(Q)$(MAKE) $(build)=scripts build_docproc build_check-lc_ctype
diff --git a/drivers/media/i2c/adv7180.c b/drivers/media/i2c/adv7180.c
index b77b0a4dbf68..95cbc857f36e 100644
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
@@ -100,7 +100,7 @@
100#define ADV7180_REG_IDENT 0x0011 100#define ADV7180_REG_IDENT 0x0011
101#define ADV7180_ID_7180 0x18 101#define ADV7180_ID_7180 0x18
102 102
103#define ADV7180_REG_ICONF1 0x0040 103#define ADV7180_REG_ICONF1 0x2040
104#define ADV7180_ICONF1_ACTIVE_LOW 0x01 104#define ADV7180_ICONF1_ACTIVE_LOW 0x01
105#define ADV7180_ICONF1_PSYNC_ONLY 0x10 105#define ADV7180_ICONF1_PSYNC_ONLY 0x10
106#define ADV7180_ICONF1_ACTIVE_TO_CLR 0xC0 106#define ADV7180_ICONF1_ACTIVE_TO_CLR 0xC0
@@ -113,15 +113,15 @@
113 113
114#define ADV7180_IRQ1_LOCK 0x01 114#define ADV7180_IRQ1_LOCK 0x01
115#define ADV7180_IRQ1_UNLOCK 0x02 115#define ADV7180_IRQ1_UNLOCK 0x02
116#define ADV7180_REG_ISR1 0x0042 116#define ADV7180_REG_ISR1 0x2042
117#define ADV7180_REG_ICR1 0x0043 117#define ADV7180_REG_ICR1 0x2043
118#define ADV7180_REG_IMR1 0x0044 118#define ADV7180_REG_IMR1 0x2044
119#define ADV7180_REG_IMR2 0x0048 119#define ADV7180_REG_IMR2 0x2048
120#define ADV7180_IRQ3_AD_CHANGE 0x08 120#define ADV7180_IRQ3_AD_CHANGE 0x08
121#define ADV7180_REG_ISR3 0x004A 121#define ADV7180_REG_ISR3 0x204A
122#define ADV7180_REG_ICR3 0x004B 122#define ADV7180_REG_ICR3 0x204B
123#define ADV7180_REG_IMR3 0x004C 123#define ADV7180_REG_IMR3 0x204C
124#define ADV7180_REG_IMR4 0x50 124#define ADV7180_REG_IMR4 0x2050
125 125
126#define ADV7180_REG_NTSC_V_BIT_END 0x00E6 126#define ADV7180_REG_NTSC_V_BIT_END 0x00E6
127#define ADV7180_NTSC_V_BIT_END_MANUAL_NVEND 0x4F 127#define ADV7180_NTSC_V_BIT_END_MANUAL_NVEND 0x4F
diff --git a/drivers/media/i2c/adv7511.c b/drivers/media/i2c/adv7511.c
index 6d7cad54a65d..53030d631653 100644
--- a/drivers/media/i2c/adv7511.c
+++ b/drivers/media/i2c/adv7511.c
@@ -1041,6 +1041,8 @@ static int adv7511_s_dv_timings(struct v4l2_subdev *sd,
1041 struct v4l2_dv_timings *timings) 1041 struct v4l2_dv_timings *timings)
1042{ 1042{
1043 struct adv7511_state *state = get_adv7511_state(sd); 1043 struct adv7511_state *state = get_adv7511_state(sd);
1044 struct v4l2_bt_timings *bt = &timings->bt;
1045 u32 fps;
1044 1046
1045 v4l2_dbg(1, debug, sd, "%s:\n", __func__); 1047 v4l2_dbg(1, debug, sd, "%s:\n", __func__);
1046 1048
@@ -1052,15 +1054,29 @@ static int adv7511_s_dv_timings(struct v4l2_subdev *sd,
1052 if the format is one of the CEA or DMT timings. */ 1054 if the format is one of the CEA or DMT timings. */
1053 v4l2_find_dv_timings_cap(timings, &adv7511_timings_cap, 0, NULL, NULL); 1055 v4l2_find_dv_timings_cap(timings, &adv7511_timings_cap, 0, NULL, NULL);
1054 1056
1055 timings->bt.flags &= ~V4L2_DV_FL_REDUCED_FPS;
1056
1057 /* save timings */ 1057 /* save timings */
1058 state->dv_timings = *timings; 1058 state->dv_timings = *timings;
1059 1059
1060 /* set h/vsync polarities */ 1060 /* set h/vsync polarities */
1061 adv7511_wr_and_or(sd, 0x17, 0x9f, 1061 adv7511_wr_and_or(sd, 0x17, 0x9f,
1062 ((timings->bt.polarities & V4L2_DV_VSYNC_POS_POL) ? 0 : 0x40) | 1062 ((bt->polarities & V4L2_DV_VSYNC_POS_POL) ? 0 : 0x40) |
1063 ((timings->bt.polarities & V4L2_DV_HSYNC_POS_POL) ? 0 : 0x20)); 1063 ((bt->polarities & V4L2_DV_HSYNC_POS_POL) ? 0 : 0x20));
1064
1065 fps = (u32)bt->pixelclock / (V4L2_DV_BT_FRAME_WIDTH(bt) * V4L2_DV_BT_FRAME_HEIGHT(bt));
1066 switch (fps) {
1067 case 24:
1068 adv7511_wr_and_or(sd, 0xfb, 0xf9, 1 << 1);
1069 break;
1070 case 25:
1071 adv7511_wr_and_or(sd, 0xfb, 0xf9, 2 << 1);
1072 break;
1073 case 30:
1074 adv7511_wr_and_or(sd, 0xfb, 0xf9, 3 << 1);
1075 break;
1076 default:
1077 adv7511_wr_and_or(sd, 0xfb, 0xf9, 0);
1078 break;
1079 }
1064 1080
1065 /* update quantization range based on new dv_timings */ 1081 /* update quantization range based on new dv_timings */
1066 adv7511_set_rgb_quantization_mode(sd, state->rgb_quantization_range_ctrl); 1082 adv7511_set_rgb_quantization_mode(sd, state->rgb_quantization_range_ctrl);
diff --git a/drivers/media/platform/vim2m.c b/drivers/media/platform/vim2m.c
index 6b17015048ae..cd0ff4a66fdc 100644
--- a/drivers/media/platform/vim2m.c
+++ b/drivers/media/platform/vim2m.c
@@ -171,6 +171,9 @@ struct vim2m_ctx {
171 int mode; 171 int mode;
172 172
173 enum v4l2_colorspace colorspace; 173 enum v4l2_colorspace colorspace;
174 enum v4l2_ycbcr_encoding ycbcr_enc;
175 enum v4l2_xfer_func xfer_func;
176 enum v4l2_quantization quant;
174 177
175 /* Source and destination queue data */ 178 /* Source and destination queue data */
176 struct vim2m_q_data q_data[2]; 179 struct vim2m_q_data q_data[2];
@@ -493,6 +496,9 @@ static int vidioc_g_fmt(struct vim2m_ctx *ctx, struct v4l2_format *f)
493 f->fmt.pix.bytesperline = (q_data->width * q_data->fmt->depth) >> 3; 496 f->fmt.pix.bytesperline = (q_data->width * q_data->fmt->depth) >> 3;
494 f->fmt.pix.sizeimage = q_data->sizeimage; 497 f->fmt.pix.sizeimage = q_data->sizeimage;
495 f->fmt.pix.colorspace = ctx->colorspace; 498 f->fmt.pix.colorspace = ctx->colorspace;
499 f->fmt.pix.xfer_func = ctx->xfer_func;
500 f->fmt.pix.ycbcr_enc = ctx->ycbcr_enc;
501 f->fmt.pix.quantization = ctx->quant;
496 502
497 return 0; 503 return 0;
498} 504}
@@ -549,6 +555,9 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
549 return -EINVAL; 555 return -EINVAL;
550 } 556 }
551 f->fmt.pix.colorspace = ctx->colorspace; 557 f->fmt.pix.colorspace = ctx->colorspace;
558 f->fmt.pix.xfer_func = ctx->xfer_func;
559 f->fmt.pix.ycbcr_enc = ctx->ycbcr_enc;
560 f->fmt.pix.quantization = ctx->quant;
552 561
553 return vidioc_try_fmt(f, fmt); 562 return vidioc_try_fmt(f, fmt);
554} 563}
@@ -630,8 +639,12 @@ static int vidioc_s_fmt_vid_out(struct file *file, void *priv,
630 return ret; 639 return ret;
631 640
632 ret = vidioc_s_fmt(file2ctx(file), f); 641 ret = vidioc_s_fmt(file2ctx(file), f);
633 if (!ret) 642 if (!ret) {
634 ctx->colorspace = f->fmt.pix.colorspace; 643 ctx->colorspace = f->fmt.pix.colorspace;
644 ctx->xfer_func = f->fmt.pix.xfer_func;
645 ctx->ycbcr_enc = f->fmt.pix.ycbcr_enc;
646 ctx->quant = f->fmt.pix.quantization;
647 }
635 return ret; 648 return ret;
636} 649}
637 650
diff --git a/drivers/media/platform/vivid/vivid-cec.c b/drivers/media/platform/vivid/vivid-cec.c
index 66aa7292076b..f9f878b8e0a7 100644
--- a/drivers/media/platform/vivid/vivid-cec.c
+++ b/drivers/media/platform/vivid/vivid-cec.c
@@ -169,7 +169,6 @@ static int vivid_received(struct cec_adapter *adap, struct cec_msg *msg)
169 struct vivid_dev *dev = adap->priv; 169 struct vivid_dev *dev = adap->priv;
170 struct cec_msg reply; 170 struct cec_msg reply;
171 u8 dest = cec_msg_destination(msg); 171 u8 dest = cec_msg_destination(msg);
172 u16 pa;
173 u8 disp_ctl; 172 u8 disp_ctl;
174 char osd[14]; 173 char osd[14];
175 174
@@ -178,15 +177,6 @@ static int vivid_received(struct cec_adapter *adap, struct cec_msg *msg)
178 cec_msg_init(&reply, dest, cec_msg_initiator(msg)); 177 cec_msg_init(&reply, dest, cec_msg_initiator(msg));
179 178
180 switch (cec_msg_opcode(msg)) { 179 switch (cec_msg_opcode(msg)) {
181 case CEC_MSG_SET_STREAM_PATH:
182 if (cec_is_sink(adap))
183 return -ENOMSG;
184 cec_ops_set_stream_path(msg, &pa);
185 if (pa != adap->phys_addr)
186 return -ENOMSG;
187 cec_msg_active_source(&reply, adap->phys_addr);
188 cec_transmit_msg(adap, &reply, false);
189 break;
190 case CEC_MSG_SET_OSD_STRING: 180 case CEC_MSG_SET_OSD_STRING:
191 if (!cec_is_sink(adap)) 181 if (!cec_is_sink(adap))
192 return -ENOMSG; 182 return -ENOMSG;
diff --git a/drivers/media/v4l2-core/videobuf2-dma-contig.c b/drivers/media/v4l2-core/videobuf2-dma-contig.c
index b09b2c9b6b63..59fa204b15f3 100644
--- a/drivers/media/v4l2-core/videobuf2-dma-contig.c
+++ b/drivers/media/v4l2-core/videobuf2-dma-contig.c
@@ -743,7 +743,7 @@ EXPORT_SYMBOL_GPL(vb2_dma_contig_memops);
743int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size) 743int vb2_dma_contig_set_max_seg_size(struct device *dev, unsigned int size)
744{ 744{
745 if (!dev->dma_parms) { 745 if (!dev->dma_parms) {
746 dev->dma_parms = kzalloc(sizeof(dev->dma_parms), GFP_KERNEL); 746 dev->dma_parms = kzalloc(sizeof(*dev->dma_parms), GFP_KERNEL);
747 if (!dev->dma_parms) 747 if (!dev->dma_parms)
748 return -ENOMEM; 748 return -ENOMEM;
749 } 749 }
diff --git a/drivers/staging/media/Kconfig b/drivers/staging/media/Kconfig
index cae42e56f270..7292f23954df 100644
--- a/drivers/staging/media/Kconfig
+++ b/drivers/staging/media/Kconfig
@@ -16,7 +16,7 @@ menuconfig STAGING_MEDIA
16 If in doubt, say N here. 16 If in doubt, say N here.
17 17
18 18
19if STAGING_MEDIA 19if STAGING_MEDIA && MEDIA_SUPPORT
20 20
21# Please keep them in alphabetic order 21# Please keep them in alphabetic order
22source "drivers/staging/media/bcm2048/Kconfig" 22source "drivers/staging/media/bcm2048/Kconfig"
diff --git a/drivers/staging/media/cec/cec-adap.c b/drivers/staging/media/cec/cec-adap.c
index 9fffddb7ac7e..b2393bbacb26 100644
--- a/drivers/staging/media/cec/cec-adap.c
+++ b/drivers/staging/media/cec/cec-adap.c
@@ -1252,7 +1252,7 @@ int __cec_s_log_addrs(struct cec_adapter *adap,
1252 return -EINVAL; 1252 return -EINVAL;
1253 } 1253 }
1254 /* Zero unused part of the feature array */ 1254 /* Zero unused part of the feature array */
1255 memset(features + i, 0, feature_sz - i); 1255 memset(features + i + 1, 0, feature_sz - i - 1);
1256 } 1256 }
1257 1257
1258 if (log_addrs->cec_version >= CEC_OP_CEC_VERSION_2_0) { 1258 if (log_addrs->cec_version >= CEC_OP_CEC_VERSION_2_0) {