aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation
diff options
context:
space:
mode:
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/DocBook/media/Makefile4
-rw-r--r--Documentation/DocBook/media/dvb/dvbproperty.xml160
-rw-r--r--Documentation/DocBook/media/v4l/biblio.xml29
-rw-r--r--Documentation/DocBook/media/v4l/common.xml38
-rw-r--r--Documentation/DocBook/media/v4l/compat.xml75
-rw-r--r--Documentation/DocBook/media/v4l/controls.xml708
-rw-r--r--Documentation/DocBook/media/v4l/dev-subdev.xml202
-rw-r--r--Documentation/DocBook/media/v4l/io.xml12
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10.xml2
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml29
-rw-r--r--Documentation/DocBook/media/v4l/pixfmt.xml6
-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.xml44
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-create-bufs.xml16
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-cropcap.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml211
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml119
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enuminput.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-enumoutput.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-crop.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml130
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml26
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-fmt.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-frequency.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-parm.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-g-tuner.xml2
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml6
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml4
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml104
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-queryctrl.xml41
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-reqbufs.xml7
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml5
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml9
-rw-r--r--Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml228
-rwxr-xr-xDocumentation/dvb/get_dvb_firmware20
-rw-r--r--Documentation/feature-removal-schedule.txt9
-rw-r--r--Documentation/media-framework.txt19
-rw-r--r--Documentation/video4linux/4CCs.txt32
-rw-r--r--Documentation/video4linux/gspca.txt1
-rw-r--r--Documentation/video4linux/v4l2-controls.txt21
-rw-r--r--Documentation/video4linux/v4l2-framework.txt106
50 files changed, 6028 insertions, 134 deletions
diff --git a/Documentation/DocBook/media/Makefile b/Documentation/DocBook/media/Makefile
index 6628b4b9cac4..362520992ced 100644
--- a/Documentation/DocBook/media/Makefile
+++ b/Documentation/DocBook/media/Makefile
@@ -70,6 +70,8 @@ IOCTLS = \
70 VIDIOC_SUBDEV_ENUM_MBUS_CODE \ 70 VIDIOC_SUBDEV_ENUM_MBUS_CODE \
71 VIDIOC_SUBDEV_ENUM_FRAME_SIZE \ 71 VIDIOC_SUBDEV_ENUM_FRAME_SIZE \
72 VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \ 72 VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL \
73 VIDIOC_SUBDEV_G_SELECTION \
74 VIDIOC_SUBDEV_S_SELECTION \
73 75
74TYPES = \ 76TYPES = \
75 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \ 77 $(shell perl -ne 'print "$$1 " if /^typedef\s+[^\s]+\s+([^\s]+)\;/' $(srctree)/include/linux/videodev2.h) \
@@ -193,7 +195,7 @@ DVB_DOCUMENTED = \
193# 195#
194 196
195install_media_images = \ 197install_media_images = \
196 $(Q)cp $(OBJIMGFILES) $(MEDIA_OBJ_DIR)/media_api 198 $(Q)cp $(OBJIMGFILES) $(MEDIA_SRC_DIR)/v4l/*.svg $(MEDIA_OBJ_DIR)/media_api
197 199
198$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64 200$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%.b64
199 $(Q)base64 -d $< >$@ 201 $(Q)base64 -d $< >$@
diff --git a/Documentation/DocBook/media/dvb/dvbproperty.xml b/Documentation/DocBook/media/dvb/dvbproperty.xml
index c7a4ca517859..e633c097a8d1 100644
--- a/Documentation/DocBook/media/dvb/dvbproperty.xml
+++ b/Documentation/DocBook/media/dvb/dvbproperty.xml
@@ -531,6 +531,139 @@ typedef enum fe_delivery_system {
531 here are referring to what can be found in the TMCC-structure - 531 here are referring to what can be found in the TMCC-structure -
532 independent of the mode.</para> 532 independent of the mode.</para>
533 </section> 533 </section>
534 <section id="DTV-ATSCMH-FIC-VER">
535 <title><constant>DTV_ATSCMH_FIC_VER</constant></title>
536 <para>Version number of the FIC (Fast Information Channel) signaling data.</para>
537 <para>FIC is used for relaying information to allow rapid service acquisition by the receiver.</para>
538 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
539 </section>
540 <section id="DTV-ATSCMH-PARADE-ID">
541 <title><constant>DTV_ATSCMH_PARADE_ID</constant></title>
542 <para>Parade identification number</para>
543 <para>A parade is a collection of up to eight MH groups, conveying one or two ensembles.</para>
544 <para>Possible values: 0, 1, 2, 3, ..., 126, 127</para>
545 </section>
546 <section id="DTV-ATSCMH-NOG">
547 <title><constant>DTV_ATSCMH_NOG</constant></title>
548 <para>Number of MH groups per MH subframe for a designated parade.</para>
549 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
550 </section>
551 <section id="DTV-ATSCMH-TNOG">
552 <title><constant>DTV_ATSCMH_TNOG</constant></title>
553 <para>Total number of MH groups including all MH groups belonging to all MH parades in one MH subframe.</para>
554 <para>Possible values: 0, 1, 2, 3, ..., 30, 31</para>
555 </section>
556 <section id="DTV-ATSCMH-SGN">
557 <title><constant>DTV_ATSCMH_SGN</constant></title>
558 <para>Start group number.</para>
559 <para>Possible values: 0, 1, 2, 3, ..., 14, 15</para>
560 </section>
561 <section id="DTV-ATSCMH-PRC">
562 <title><constant>DTV_ATSCMH_PRC</constant></title>
563 <para>Parade repetition cycle.</para>
564 <para>Possible values: 1, 2, 3, 4, 5, 6, 7, 8</para>
565 </section>
566 <section id="DTV-ATSCMH-RS-FRAME-MODE">
567 <title><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></title>
568 <para>RS frame mode.</para>
569 <para>Possible values are:</para>
570<programlisting>
571typedef enum atscmh_rs_frame_mode {
572 ATSCMH_RSFRAME_PRI_ONLY = 0,
573 ATSCMH_RSFRAME_PRI_SEC = 1,
574} atscmh_rs_frame_mode_t;
575</programlisting>
576 </section>
577 <section id="DTV-ATSCMH-RS-FRAME-ENSEMBLE">
578 <title><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></title>
579 <para>RS frame ensemble.</para>
580 <para>Possible values are:</para>
581<programlisting>
582typedef enum atscmh_rs_frame_ensemble {
583 ATSCMH_RSFRAME_ENS_PRI = 0,
584 ATSCMH_RSFRAME_ENS_SEC = 1,
585} atscmh_rs_frame_ensemble_t;
586</programlisting>
587 </section>
588 <section id="DTV-ATSCMH-RS-CODE-MODE-PRI">
589 <title><constant>DTV_ATSCMH_RS_CODE_MODE_PRI</constant></title>
590 <para>RS code mode (primary).</para>
591 <para>Possible values are:</para>
592<programlisting>
593typedef enum atscmh_rs_code_mode {
594 ATSCMH_RSCODE_211_187 = 0,
595 ATSCMH_RSCODE_223_187 = 1,
596 ATSCMH_RSCODE_235_187 = 2,
597} atscmh_rs_code_mode_t;
598</programlisting>
599 </section>
600 <section id="DTV-ATSCMH-RS-CODE-MODE-SEC">
601 <title><constant>DTV_ATSCMH_RS_CODE_MODE_SEC</constant></title>
602 <para>RS code mode (secondary).</para>
603 <para>Possible values are:</para>
604<programlisting>
605typedef enum atscmh_rs_code_mode {
606 ATSCMH_RSCODE_211_187 = 0,
607 ATSCMH_RSCODE_223_187 = 1,
608 ATSCMH_RSCODE_235_187 = 2,
609} atscmh_rs_code_mode_t;
610</programlisting>
611 </section>
612 <section id="DTV-ATSCMH-SCCC-BLOCK-MODE">
613 <title><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></title>
614 <para>Series Concatenated Convolutional Code Block Mode.</para>
615 <para>Possible values are:</para>
616<programlisting>
617typedef enum atscmh_sccc_block_mode {
618 ATSCMH_SCCC_BLK_SEP = 0,
619 ATSCMH_SCCC_BLK_COMB = 1,
620} atscmh_sccc_block_mode_t;
621</programlisting>
622 </section>
623 <section id="DTV-ATSCMH-SCCC-CODE-MODE-A">
624 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></title>
625 <para>Series Concatenated Convolutional Code Rate.</para>
626 <para>Possible values are:</para>
627<programlisting>
628typedef enum atscmh_sccc_code_mode {
629 ATSCMH_SCCC_CODE_HLF = 0,
630 ATSCMH_SCCC_CODE_QTR = 1,
631} atscmh_sccc_code_mode_t;
632</programlisting>
633 </section>
634 <section id="DTV-ATSCMH-SCCC-CODE-MODE-B">
635 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></title>
636 <para>Series Concatenated Convolutional Code Rate.</para>
637 <para>Possible values are:</para>
638<programlisting>
639typedef enum atscmh_sccc_code_mode {
640 ATSCMH_SCCC_CODE_HLF = 0,
641 ATSCMH_SCCC_CODE_QTR = 1,
642} atscmh_sccc_code_mode_t;
643</programlisting>
644 </section>
645 <section id="DTV-ATSCMH-SCCC-CODE-MODE-C">
646 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></title>
647 <para>Series Concatenated Convolutional Code Rate.</para>
648 <para>Possible values are:</para>
649<programlisting>
650typedef enum atscmh_sccc_code_mode {
651 ATSCMH_SCCC_CODE_HLF = 0,
652 ATSCMH_SCCC_CODE_QTR = 1,
653} atscmh_sccc_code_mode_t;
654</programlisting>
655 </section>
656 <section id="DTV-ATSCMH-SCCC-CODE-MODE-D">
657 <title><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></title>
658 <para>Series Concatenated Convolutional Code Rate.</para>
659 <para>Possible values are:</para>
660<programlisting>
661typedef enum atscmh_sccc_code_mode {
662 ATSCMH_SCCC_CODE_HLF = 0,
663 ATSCMH_SCCC_CODE_QTR = 1,
664} atscmh_sccc_code_mode_t;
665</programlisting>
666 </section>
534 </section> 667 </section>
535 <section id="DTV-API-VERSION"> 668 <section id="DTV-API-VERSION">
536 <title><constant>DTV_API_VERSION</constant></title> 669 <title><constant>DTV_API_VERSION</constant></title>
@@ -774,6 +907,33 @@ typedef enum fe_hierarchy {
774 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem> 907 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
775 </itemizedlist> 908 </itemizedlist>
776 </section> 909 </section>
910 <section id="atscmh-params">
911 <title>ATSC-MH delivery system</title>
912 <para>The following parameters are valid for ATSC-MH:</para>
913 <itemizedlist mark='opencircle'>
914 <listitem><para><link linkend="DTV-API-VERSION"><constant>DTV_API_VERSION</constant></link></para></listitem>
915 <listitem><para><link linkend="DTV-DELIVERY-SYSTEM"><constant>DTV_DELIVERY_SYSTEM</constant></link></para></listitem>
916 <listitem><para><link linkend="DTV-TUNE"><constant>DTV_TUNE</constant></link></para></listitem>
917 <listitem><para><link linkend="DTV-CLEAR"><constant>DTV_CLEAR</constant></link></para></listitem>
918 <listitem><para><link linkend="DTV-FREQUENCY"><constant>DTV_FREQUENCY</constant></link></para></listitem>
919 <listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
920 <listitem><para><link linkend="DTV-ATSCMH-FIC-VER"><constant>DTV_ATSCMH_FIC_VER</constant></link></para></listitem>
921 <listitem><para><link linkend="DTV-ATSCMH-PARADE-ID"><constant>DTV_ATSCMH_PARADE_ID</constant></link></para></listitem>
922 <listitem><para><link linkend="DTV-ATSCMH-NOG"><constant>DTV_ATSCMH_NOG</constant></link></para></listitem>
923 <listitem><para><link linkend="DTV-ATSCMH-TNOG"><constant>DTV_ATSCMH_TNOG</constant></link></para></listitem>
924 <listitem><para><link linkend="DTV-ATSCMH-SGN"><constant>DTV_ATSCMH_SGN</constant></link></para></listitem>
925 <listitem><para><link linkend="DTV-ATSCMH-PRC"><constant>DTV_ATSCMH_PRC</constant></link></para></listitem>
926 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-MODE"><constant>DTV_ATSCMH_RS_FRAME_MODE</constant></link></para></listitem>
927 <listitem><para><link linkend="DTV-ATSCMH-RS-FRAME-ENSEMBLE"><constant>DTV_ATSCMH_RS_FRAME_ENSEMBLE</constant></link></para></listitem>
928 <listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-PRI"><constant>DTV_ATSCMH_CODE_MODE_PRI</constant></link></para></listitem>
929 <listitem><para><link linkend="DTV-ATSCMH-CODE-MODE-SEC"><constant>DTV_ATSCMH_CODE_MODE_SEC</constant></link></para></listitem>
930 <listitem><para><link linkend="DTV-ATSCMH-SCCC-BLOCK-MODE"><constant>DTV_ATSCMH_SCCC_BLOCK_MODE</constant></link></para></listitem>
931 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-A"><constant>DTV_ATSCMH_SCCC_CODE_MODE_A</constant></link></para></listitem>
932 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-B"><constant>DTV_ATSCMH_SCCC_CODE_MODE_B</constant></link></para></listitem>
933 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
934 <listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE_MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
935 </itemizedlist>
936 </section>
777 </section> 937 </section>
778 <section id="frontend-property-cable-systems"> 938 <section id="frontend-property-cable-systems">
779 <title>Properties used on cable delivery systems</title> 939 <title>Properties used on cable delivery systems</title>
diff --git a/Documentation/DocBook/media/v4l/biblio.xml b/Documentation/DocBook/media/v4l/biblio.xml
index 7dc65c592a87..7c49facecd25 100644
--- a/Documentation/DocBook/media/v4l/biblio.xml
+++ b/Documentation/DocBook/media/v4l/biblio.xml
@@ -197,4 +197,33 @@ in the frequency range from 87,5 to 108,0 MHz</title>
197 <title>NTSC-4: United States RBDS Standard</title> 197 <title>NTSC-4: United States RBDS Standard</title>
198 </biblioentry> 198 </biblioentry>
199 199
200 <biblioentry id="iso12232">
201 <abbrev>ISO&nbsp;12232:2006</abbrev>
202 <authorgroup>
203 <corpauthor>International Organization for Standardization
204(<ulink url="http://www.iso.org">http://www.iso.org</ulink>)</corpauthor>
205 </authorgroup>
206 <title>Photography &mdash; Digital still cameras &mdash; Determination
207 of exposure index, ISO speed ratings, standard output sensitivity, and
208 recommended exposure index</title>
209 </biblioentry>
210
211 <biblioentry id="cea861">
212 <abbrev>CEA-861-E</abbrev>
213 <authorgroup>
214 <corpauthor>Consumer Electronics Association
215(<ulink url="http://www.ce.org">http://www.ce.org</ulink>)</corpauthor>
216 </authorgroup>
217 <title>A DTV Profile for Uncompressed High Speed Digital Interfaces</title>
218 </biblioentry>
219
220 <biblioentry id="vesadmt">
221 <abbrev>VESA&nbsp;DMT</abbrev>
222 <authorgroup>
223 <corpauthor>Video Electronics Standards Association
224(<ulink url="http://www.vesa.org">http://www.vesa.org</ulink>)</corpauthor>
225 </authorgroup>
226 <title>VESA and Industry Standards and Guidelines for Computer Display Monitor Timing (DMT)</title>
227 </biblioentry>
228
200 </bibliography> 229 </bibliography>
diff --git a/Documentation/DocBook/media/v4l/common.xml b/Documentation/DocBook/media/v4l/common.xml
index c79278acfb0e..4101aeb56540 100644
--- a/Documentation/DocBook/media/v4l/common.xml
+++ b/Documentation/DocBook/media/v4l/common.xml
@@ -724,41 +724,49 @@ if (-1 == ioctl (fd, &VIDIOC-S-STD;, &amp;std_id)) {
724} 724}
725 </programlisting> 725 </programlisting>
726 </example> 726 </example>
727 </section>
727 <section id="dv-timings"> 728 <section id="dv-timings">
728 <title>Digital Video (DV) Timings</title> 729 <title>Digital Video (DV) Timings</title>
729 <para> 730 <para>
730 The video standards discussed so far has been dealing with Analog TV and the 731 The video standards discussed so far have been dealing with Analog TV and the
731corresponding video timings. Today there are many more different hardware interfaces 732corresponding video timings. Today there are many more different hardware interfaces
732such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry 733such as High Definition TV interfaces (HDMI), VGA, DVI connectors etc., that carry
733video signals and there is a need to extend the API to select the video timings 734video signals and there is a need to extend the API to select the video timings
734for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to 735for these interfaces. Since it is not possible to extend the &v4l2-std-id; due to
735the limited bits available, a new set of IOCTLs is added to set/get video timings at 736the limited bits available, a new set of IOCTLs was added to set/get video timings at
736the input and output: </para><itemizedlist> 737the input and output: </para><itemizedlist>
737 <listitem> 738 <listitem>
738 <para>DV Presets: Digital Video (DV) presets. These are IDs representing a 739 <para>DV Timings: This will allow applications to define detailed
740video timings for the interface. This includes parameters such as width, height,
741polarities, frontporch, backporch etc. The <filename>linux/v4l2-dv-timings.h</filename>
742header can be used to get the timings of the formats in the <xref linkend="cea861" /> and
743<xref linkend="vesadmt" /> standards.
744 </para>
745 </listitem>
746 <listitem>
747 <para>DV Presets: Digital Video (DV) presets (<emphasis role="bold">deprecated</emphasis>).
748 These are IDs representing a
739video timing at the input/output. Presets are pre-defined timings implemented 749video timing at the input/output. Presets are pre-defined timings implemented
740by the hardware according to video standards. A __u32 data type is used to represent 750by the hardware according to video standards. A __u32 data type is used to represent
741a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions 751a preset unlike the bit mask that is used in &v4l2-std-id; allowing future extensions
742to support as many different presets as needed.</para> 752to support as many different presets as needed. This API is deprecated in favor of the DV Timings
743 </listitem> 753API.</para>
744 <listitem>
745 <para>Custom DV Timings: This will allow applications to define more detailed
746custom video timings for the interface. This includes parameters such as width, height,
747polarities, frontporch, backporch etc.
748 </para>
749 </listitem> 754 </listitem>
750 </itemizedlist> 755 </itemizedlist>
756 <para>To enumerate and query the attributes of the DV timings supported by a device,
757 applications use the &VIDIOC-ENUM-DV-TIMINGS; and &VIDIOC-DV-TIMINGS-CAP; ioctls.
758 To set DV timings for the device, applications use the
759&VIDIOC-S-DV-TIMINGS; ioctl and to get current DV timings they use the
760&VIDIOC-G-DV-TIMINGS; ioctl. To detect the DV timings as seen by the video receiver applications
761use the &VIDIOC-QUERY-DV-TIMINGS; ioctl.</para>
751 <para>To enumerate and query the attributes of DV presets supported by a device, 762 <para>To enumerate and query the attributes of DV presets supported by a device,
752applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset, 763applications use the &VIDIOC-ENUM-DV-PRESETS; ioctl. To get the current DV preset,
753applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the 764applications use the &VIDIOC-G-DV-PRESET; ioctl and to set a preset they use the
754&VIDIOC-S-DV-PRESET; ioctl.</para> 765&VIDIOC-S-DV-PRESET; ioctl. To detect the preset as seen by the video receiver applications
755 <para>To set custom DV timings for the device, applications use the 766use the &VIDIOC-QUERY-DV-PRESET; ioctl.</para>
756&VIDIOC-S-DV-TIMINGS; ioctl and to get current custom DV timings they use the
757&VIDIOC-G-DV-TIMINGS; ioctl.</para>
758 <para>Applications can make use of the <xref linkend="input-capabilities" /> and 767 <para>Applications can make use of the <xref linkend="input-capabilities" /> and
759<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the 768<xref linkend="output-capabilities"/> flags to decide what ioctls are available to set the
760video timings for the device.</para> 769video timings for the device.</para>
761 </section>
762 </section> 770 </section>
763 771
764 &sub-controls; 772 &sub-controls;
diff --git a/Documentation/DocBook/media/v4l/compat.xml b/Documentation/DocBook/media/v4l/compat.xml
index bce97c50391b..ea42ef824948 100644
--- a/Documentation/DocBook/media/v4l/compat.xml
+++ b/Documentation/DocBook/media/v4l/compat.xml
@@ -2407,6 +2407,54 @@ details.</para>
2407 <para>Added <link linkend="jpeg-controls">JPEG compression control 2407 <para>Added <link linkend="jpeg-controls">JPEG compression control
2408 class</link>.</para> 2408 class</link>.</para>
2409 </listitem> 2409 </listitem>
2410 <listitem>
2411 <para>Extended the DV Timings API:
2412 &VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2413 &VIDIOC-DV-TIMINGS-CAP;.</para>
2414 </listitem>
2415 </orderedlist>
2416 </section>
2417
2418 <section>
2419 <title>V4L2 in Linux 3.5</title>
2420 <orderedlist>
2421 <listitem>
2422 <para>Added integer menus, the new type will be
2423 V4L2_CTRL_TYPE_INTEGER_MENU.</para>
2424 </listitem>
2425 <listitem>
2426 <para>Added selection API for V4L2 subdev interface:
2427 &VIDIOC-SUBDEV-G-SELECTION; and
2428 &VIDIOC-SUBDEV-S-SELECTION;.</para>
2429 </listitem>
2430 <listitem>
2431 <para> Added <constant>V4L2_COLORFX_ANTIQUE</constant>,
2432 <constant>V4L2_COLORFX_ART_FREEZE</constant>,
2433 <constant>V4L2_COLORFX_AQUA</constant>,
2434 <constant>V4L2_COLORFX_SILHOUETTE</constant>,
2435 <constant>V4L2_COLORFX_SOLARIZATION</constant>,
2436 <constant>V4L2_COLORFX_VIVID</constant> and
2437 <constant>V4L2_COLORFX_ARBITRARY_CBCR</constant> menu items
2438 to the <constant>V4L2_CID_COLORFX</constant> control.</para>
2439 </listitem>
2440 <listitem>
2441 <para> Added <constant>V4L2_CID_COLORFX_CBCR</constant> control.</para>
2442 </listitem>
2443 <listitem>
2444 <para> Added camera controls <constant>V4L2_CID_AUTO_EXPOSURE_BIAS</constant>,
2445 <constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>,
2446 <constant>V4L2_CID_IMAGE_STABILIZATION</constant>,
2447 <constant>V4L2_CID_ISO_SENSITIVITY</constant>,
2448 <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>,
2449 <constant>V4L2_CID_EXPOSURE_METERING</constant>,
2450 <constant>V4L2_CID_SCENE_MODE</constant>,
2451 <constant>V4L2_CID_3A_LOCK</constant>,
2452 <constant>V4L2_CID_AUTO_FOCUS_START</constant>,
2453 <constant>V4L2_CID_AUTO_FOCUS_STOP</constant>,
2454 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant> and
2455 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>.
2456 </para>
2457 </listitem>
2410 </orderedlist> 2458 </orderedlist>
2411 </section> 2459 </section>
2412 2460
@@ -2508,6 +2556,10 @@ and may change in the future.</para>
2508ioctls.</para> 2556ioctls.</para>
2509 </listitem> 2557 </listitem>
2510 <listitem> 2558 <listitem>
2559 <para>&VIDIOC-DECODER-CMD; and &VIDIOC-TRY-DECODER-CMD;
2560ioctls.</para>
2561 </listitem>
2562 <listitem>
2511 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER; 2563 <para>&VIDIOC-DBG-G-REGISTER; and &VIDIOC-DBG-S-REGISTER;
2512ioctls.</para> 2564ioctls.</para>
2513 </listitem> 2565 </listitem>
@@ -2515,6 +2567,10 @@ ioctls.</para>
2515 <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para> 2567 <para>&VIDIOC-DBG-G-CHIP-IDENT; ioctl.</para>
2516 </listitem> 2568 </listitem>
2517 <listitem> 2569 <listitem>
2570 <para>&VIDIOC-ENUM-DV-TIMINGS;, &VIDIOC-QUERY-DV-TIMINGS; and
2571 &VIDIOC-DV-TIMINGS-CAP; ioctls.</para>
2572 </listitem>
2573 <listitem>
2518 <para>Flash API. <xref linkend="flash-controls" /></para> 2574 <para>Flash API. <xref linkend="flash-controls" /></para>
2519 </listitem> 2575 </listitem>
2520 <listitem> 2576 <listitem>
@@ -2523,6 +2579,14 @@ ioctls.</para>
2523 <listitem> 2579 <listitem>
2524 <para>Selection API. <xref linkend="selection-api" /></para> 2580 <para>Selection API. <xref linkend="selection-api" /></para>
2525 </listitem> 2581 </listitem>
2582 <listitem>
2583 <para>Sub-device selection API: &VIDIOC-SUBDEV-G-SELECTION;
2584 and &VIDIOC-SUBDEV-S-SELECTION; ioctls.</para>
2585 </listitem>
2586 <listitem>
2587 <para><link linkend="v4l2-auto-focus-area"><constant>
2588 V4L2_CID_AUTO_FOCUS_AREA</constant></link> control.</para>
2589 </listitem>
2526 </itemizedlist> 2590 </itemizedlist>
2527 </section> 2591 </section>
2528 2592
@@ -2538,6 +2602,17 @@ interfaces and should not be implemented in new drivers.</para>
2538<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls, 2602<constant>VIDIOC_S_MPEGCOMP</constant> ioctls. Use Extended Controls,
2539<xref linkend="extended-controls" />.</para> 2603<xref linkend="extended-controls" />.</para>
2540 </listitem> 2604 </listitem>
2605 <listitem>
2606 <para>&VIDIOC-G-DV-PRESET;, &VIDIOC-S-DV-PRESET;, &VIDIOC-ENUM-DV-PRESETS; and
2607 &VIDIOC-QUERY-DV-PRESET; ioctls. Use the DV Timings API (<xref linkend="dv-timings" />).</para>
2608 </listitem>
2609 <listitem>
2610 <para><constant>VIDIOC_SUBDEV_G_CROP</constant> and
2611 <constant>VIDIOC_SUBDEV_S_CROP</constant> ioctls. Use
2612 <constant>VIDIOC_SUBDEV_G_SELECTION</constant> and
2613 <constant>VIDIOC_SUBDEV_S_SELECTION</constant>, <xref
2614 linkend="vidioc-subdev-g-selection" />.</para>
2615 </listitem>
2541 </itemizedlist> 2616 </itemizedlist>
2542 </section> 2617 </section>
2543 </section> 2618 </section>
diff --git a/Documentation/DocBook/media/v4l/controls.xml b/Documentation/DocBook/media/v4l/controls.xml
index dd03cf4a6539..676bc46f9c52 100644
--- a/Documentation/DocBook/media/v4l/controls.xml
+++ b/Documentation/DocBook/media/v4l/controls.xml
@@ -285,18 +285,92 @@ minimum value disables backlight compensation.</entry>
285 <row id="v4l2-colorfx"> 285 <row id="v4l2-colorfx">
286 <entry><constant>V4L2_CID_COLORFX</constant></entry> 286 <entry><constant>V4L2_CID_COLORFX</constant></entry>
287 <entry>enum</entry> 287 <entry>enum</entry>
288 <entry>Selects a color effect. Possible values for 288 <entry>Selects a color effect. The following values are defined:
289<constant>enum v4l2_colorfx</constant> are: 289 </entry>
290<constant>V4L2_COLORFX_NONE</constant> (0), 290 </row><row>
291<constant>V4L2_COLORFX_BW</constant> (1), 291 <entry></entry>
292<constant>V4L2_COLORFX_SEPIA</constant> (2), 292 <entry></entry>
293<constant>V4L2_COLORFX_NEGATIVE</constant> (3), 293 <entrytbl spanname="descr" cols="2">
294<constant>V4L2_COLORFX_EMBOSS</constant> (4), 294 <tbody valign="top">
295<constant>V4L2_COLORFX_SKETCH</constant> (5), 295 <row>
296<constant>V4L2_COLORFX_SKY_BLUE</constant> (6), 296 <entry><constant>V4L2_COLORFX_NONE</constant>&nbsp;</entry>
297<constant>V4L2_COLORFX_GRASS_GREEN</constant> (7), 297 <entry>Color effect is disabled.</entry>
298<constant>V4L2_COLORFX_SKIN_WHITEN</constant> (8) and 298 </row>
299<constant>V4L2_COLORFX_VIVID</constant> (9).</entry> 299 <row>
300 <entry><constant>V4L2_COLORFX_ANTIQUE</constant>&nbsp;</entry>
301 <entry>An aging (old photo) effect.</entry>
302 </row>
303 <row>
304 <entry><constant>V4L2_COLORFX_ART_FREEZE</constant>&nbsp;</entry>
305 <entry>Frost color effect.</entry>
306 </row>
307 <row>
308 <entry><constant>V4L2_COLORFX_AQUA</constant>&nbsp;</entry>
309 <entry>Water color, cool tone.</entry>
310 </row>
311 <row>
312 <entry><constant>V4L2_COLORFX_BW</constant>&nbsp;</entry>
313 <entry>Black and white.</entry>
314 </row>
315 <row>
316 <entry><constant>V4L2_COLORFX_EMBOSS</constant>&nbsp;</entry>
317 <entry>Emboss, the highlights and shadows replace light/dark boundaries
318 and low contrast areas are set to a gray background.</entry>
319 </row>
320 <row>
321 <entry><constant>V4L2_COLORFX_GRASS_GREEN</constant>&nbsp;</entry>
322 <entry>Grass green.</entry>
323 </row>
324 <row>
325 <entry><constant>V4L2_COLORFX_NEGATIVE</constant>&nbsp;</entry>
326 <entry>Negative.</entry>
327 </row>
328 <row>
329 <entry><constant>V4L2_COLORFX_SEPIA</constant>&nbsp;</entry>
330 <entry>Sepia tone.</entry>
331 </row>
332 <row>
333 <entry><constant>V4L2_COLORFX_SKETCH</constant>&nbsp;</entry>
334 <entry>Sketch.</entry>
335 </row>
336 <row>
337 <entry><constant>V4L2_COLORFX_SKIN_WHITEN</constant>&nbsp;</entry>
338 <entry>Skin whiten.</entry>
339 </row>
340 <row>
341 <entry><constant>V4L2_COLORFX_SKY_BLUE</constant>&nbsp;</entry>
342 <entry>Sky blue.</entry>
343 </row>
344 <row>
345 <entry><constant>V4L2_COLORFX_SOLARIZATION</constant>&nbsp;</entry>
346 <entry>Solarization, the image is partially reversed in tone,
347 only color values above or below a certain threshold are inverted.
348 </entry>
349 </row>
350 <row>
351 <entry><constant>V4L2_COLORFX_SILHOUETTE</constant>&nbsp;</entry>
352 <entry>Silhouette (outline).</entry>
353 </row>
354 <row>
355 <entry><constant>V4L2_COLORFX_VIVID</constant>&nbsp;</entry>
356 <entry>Vivid colors.</entry>
357 </row>
358 <row>
359 <entry><constant>V4L2_COLORFX_SET_CBCR</constant>&nbsp;</entry>
360 <entry>The Cb and Cr chroma components are replaced by fixed
361 coefficients determined by <constant>V4L2_CID_COLORFX_CBCR</constant>
362 control.</entry>
363 </row>
364 </tbody>
365 </entrytbl>
366 </row>
367 <row>
368 <entry><constant>V4L2_CID_COLORFX_CBCR</constant></entry>
369 <entry>integer</entry>
370 <entry>Determines the Cb and Cr coefficients for <constant>V4L2_COLORFX_SET_CBCR</constant>
371 color effect. Bits [7:0] of the supplied 32 bit value are interpreted as
372 Cr component, bits [15:8] as Cb component and bits [31:16] must be zero.
373 </entry>
300 </row> 374 </row>
301 <row> 375 <row>
302 <entry><constant>V4L2_CID_ROTATE</constant></entry> 376 <entry><constant>V4L2_CID_ROTATE</constant></entry>
@@ -2775,6 +2849,51 @@ remain constant.</entry>
2775 <row><entry></entry></row> 2849 <row><entry></entry></row>
2776 2850
2777 <row> 2851 <row>
2852 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_BIAS</constant>&nbsp;</entry>
2853 <entry>integer menu</entry>
2854 </row><row><entry spanname="descr"> Determines the automatic
2855exposure compensation, it is effective only when <constant>V4L2_CID_EXPOSURE_AUTO</constant>
2856control is set to <constant>AUTO</constant>, <constant>SHUTTER_PRIORITY </constant>
2857or <constant>APERTURE_PRIORITY</constant>.
2858It is expressed in terms of EV, drivers should interpret the values as 0.001 EV
2859units, where the value 1000 stands for +1 EV.
2860<para>Increasing the exposure compensation value is equivalent to decreasing
2861the exposure value (EV) and will increase the amount of light at the image
2862sensor. The camera performs the exposure compensation by adjusting absolute
2863exposure time and/or aperture.</para></entry>
2864 </row>
2865 <row><entry></entry></row>
2866
2867 <row id="v4l2-exposure-metering">
2868 <entry spanname="id"><constant>V4L2_CID_EXPOSURE_METERING</constant>&nbsp;</entry>
2869 <entry>enum&nbsp;v4l2_exposure_metering</entry>
2870 </row><row><entry spanname="descr">Determines how the camera measures
2871the amount of light available for the frame exposure. Possible values are:</entry>
2872 </row>
2873 <row>
2874 <entrytbl spanname="descr" cols="2">
2875 <tbody valign="top">
2876 <row>
2877 <entry><constant>V4L2_EXPOSURE_METERING_AVERAGE</constant>&nbsp;</entry>
2878 <entry>Use the light information coming from the entire frame
2879and average giving no weighting to any particular portion of the metered area.
2880 </entry>
2881 </row>
2882 <row>
2883 <entry><constant>V4L2_EXPOSURE_METERING_CENTER_WEIGHTED</constant>&nbsp;</entry>
2884 <entry>Average the light information coming from the entire frame
2885giving priority to the center of the metered area.</entry>
2886 </row>
2887 <row>
2888 <entry><constant>V4L2_EXPOSURE_METERING_SPOT</constant>&nbsp;</entry>
2889 <entry>Measure only very small area at the center of the frame.</entry>
2890 </row>
2891 </tbody>
2892 </entrytbl>
2893 </row>
2894 <row><entry></entry></row>
2895
2896 <row>
2778 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry> 2897 <entry spanname="id"><constant>V4L2_CID_PAN_RELATIVE</constant>&nbsp;</entry>
2779 <entry>integer</entry> 2898 <entry>integer</entry>
2780 </row><row><entry spanname="descr">This control turns the 2899 </row><row><entry spanname="descr">This control turns the
@@ -2857,13 +2976,107 @@ negative values towards infinity. This is a write-only control.</entry>
2857 <row> 2976 <row>
2858 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry> 2977 <entry spanname="id"><constant>V4L2_CID_FOCUS_AUTO</constant>&nbsp;</entry>
2859 <entry>boolean</entry> 2978 <entry>boolean</entry>
2860 </row><row><entry spanname="descr">Enables automatic focus 2979 </row><row><entry spanname="descr">Enables continuous automatic
2861adjustments. The effect of manual focus adjustments while this feature 2980focus adjustments. The effect of manual focus adjustments while this feature
2862is enabled is undefined, drivers should ignore such requests.</entry> 2981is enabled is undefined, drivers should ignore such requests.</entry>
2863 </row> 2982 </row>
2864 <row><entry></entry></row> 2983 <row><entry></entry></row>
2865 2984
2866 <row> 2985 <row>
2986 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_START</constant>&nbsp;</entry>
2987 <entry>button</entry>
2988 </row><row><entry spanname="descr">Starts single auto focus process.
2989The effect of setting this control when <constant>V4L2_CID_FOCUS_AUTO</constant>
2990is set to <constant>TRUE</constant> (1) is undefined, drivers should ignore
2991such requests.</entry>
2992 </row>
2993 <row><entry></entry></row>
2994
2995 <row>
2996 <entry spanname="id"><constant>V4L2_CID_AUTO_FOCUS_STOP</constant>&nbsp;</entry>
2997 <entry>button</entry>
2998 </row><row><entry spanname="descr">Aborts automatic focusing
2999started with <constant>V4L2_CID_AUTO_FOCUS_START</constant> control. It is
3000effective only when the continuous autofocus is disabled, that is when
3001<constant>V4L2_CID_FOCUS_AUTO</constant> control is set to <constant>FALSE
3002</constant> (0).</entry>
3003 </row>
3004 <row><entry></entry></row>
3005
3006 <row id="v4l2-auto-focus-status">
3007 <entry spanname="id">
3008 <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>&nbsp;</entry>
3009 <entry>bitmask</entry>
3010 </row>
3011 <row><entry spanname="descr">The automatic focus status. This is a read-only
3012 control.</entry>
3013 </row>
3014 <row>
3015 <entrytbl spanname="descr" cols="2">
3016 <tbody valign="top">
3017 <row>
3018 <entry><constant>V4L2_AUTO_FOCUS_STATUS_IDLE</constant>&nbsp;</entry>
3019 <entry>Automatic focus is not active.</entry>
3020 </row>
3021 <row>
3022 <entry><constant>V4L2_AUTO_FOCUS_STATUS_BUSY</constant>&nbsp;</entry>
3023 <entry>Automatic focusing is in progress.</entry>
3024 </row>
3025 <row>
3026 <entry><constant>V4L2_AUTO_FOCUS_STATUS_REACHED</constant>&nbsp;</entry>
3027 <entry>Focus has been reached.</entry>
3028 </row>
3029 <row>
3030 <entry><constant>V4L2_AUTO_FOCUS_STATUS_FAILED</constant>&nbsp;</entry>
3031 <entry>Automatic focus has failed, the driver will not
3032 transition from this state until another action is
3033 performed by an application.</entry>
3034 </row>
3035 </tbody>
3036 </entrytbl>
3037 </row>
3038 <row><entry spanname="descr">
3039Setting <constant>V4L2_LOCK_FOCUS</constant> lock bit of the <constant>V4L2_CID_3A_LOCK
3040</constant> control may stop updates of the <constant>V4L2_CID_AUTO_FOCUS_STATUS</constant>
3041control value.</entry>
3042 </row>
3043 <row><entry></entry></row>
3044
3045 <row id="v4l2-auto-focus-range">
3046 <entry spanname="id">
3047 <constant>V4L2_CID_AUTO_FOCUS_RANGE</constant>&nbsp;</entry>
3048 <entry>enum&nbsp;v4l2_auto_focus_range</entry>
3049 </row>
3050 <row><entry spanname="descr">Determines auto focus distance range
3051for which lens may be adjusted. </entry>
3052 </row>
3053 <row>
3054 <entrytbl spanname="descr" cols="2">
3055 <tbody valign="top">
3056 <row>
3057 <entry><constant>V4L2_AUTO_FOCUS_RANGE_AUTO</constant>&nbsp;</entry>
3058 <entry>The camera automatically selects the focus range.</entry>
3059 </row>
3060 <row>
3061 <entry><constant>V4L2_AUTO_FOCUS_RANGE_NORMAL</constant>&nbsp;</entry>
3062 <entry>Normal distance range, limited for best automatic focus
3063performance.</entry>
3064 </row>
3065 <row>
3066 <entry><constant>V4L2_AUTO_FOCUS_RANGE_MACRO</constant>&nbsp;</entry>
3067 <entry>Macro (close-up) auto focus. The camera will
3068use its minimum possible distance for auto focus.</entry>
3069 </row>
3070 <row>
3071 <entry><constant>V4L2_AUTO_FOCUS_RANGE_INFINITY</constant>&nbsp;</entry>
3072 <entry>The lens is set to focus on an object at infinite distance.</entry>
3073 </row>
3074 </tbody>
3075 </entrytbl>
3076 </row>
3077 <row><entry></entry></row>
3078
3079 <row>
2867 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry> 3080 <entry spanname="id"><constant>V4L2_CID_ZOOM_ABSOLUTE</constant>&nbsp;</entry>
2868 <entry>integer</entry> 3081 <entry>integer</entry>
2869 </row><row><entry spanname="descr">Specify the objective lens 3082 </row><row><entry spanname="descr">Specify the objective lens
@@ -2932,6 +3145,295 @@ camera sensor on or off, or specify its strength. Such band-stop filters can
2932be used, for example, to filter out the fluorescent light component.</entry> 3145be used, for example, to filter out the fluorescent light component.</entry>
2933 </row> 3146 </row>
2934 <row><entry></entry></row> 3147 <row><entry></entry></row>
3148
3149 <row id="v4l2-auto-n-preset-white-balance">
3150 <entry spanname="id"><constant>V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE</constant>&nbsp;</entry>
3151 <entry>enum&nbsp;v4l2_auto_n_preset_white_balance</entry>
3152 </row><row><entry spanname="descr">Sets white balance to automatic,
3153manual or a preset. The presets determine color temperature of the light as
3154a hint to the camera for white balance adjustments resulting in most accurate
3155color representation. The following white balance presets are listed in order
3156of increasing color temperature.</entry>
3157 </row>
3158 <row>
3159 <entrytbl spanname="descr" cols="2">
3160 <tbody valign="top">
3161 <row>
3162 <entry><constant>V4L2_WHITE_BALANCE_MANUAL</constant>&nbsp;</entry>
3163 <entry>Manual white balance.</entry>
3164 </row>
3165 <row>
3166 <entry><constant>V4L2_WHITE_BALANCE_AUTO</constant>&nbsp;</entry>
3167 <entry>Automatic white balance adjustments.</entry>
3168 </row>
3169 <row>
3170 <entry><constant>V4L2_WHITE_BALANCE_INCANDESCENT</constant>&nbsp;</entry>
3171 <entry>White balance setting for incandescent (tungsten) lighting.
3172It generally cools down the colors and corresponds approximately to 2500...3500 K
3173color temperature range.</entry>
3174 </row>
3175 <row>
3176 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT</constant>&nbsp;</entry>
3177 <entry>White balance preset for fluorescent lighting.
3178It corresponds approximately to 4000...5000 K color temperature.</entry>
3179 </row>
3180 <row>
3181 <entry><constant>V4L2_WHITE_BALANCE_FLUORESCENT_H</constant>&nbsp;</entry>
3182 <entry>With this setting the camera will compensate for
3183fluorescent H lighting.</entry>
3184 </row>
3185 <row>
3186 <entry><constant>V4L2_WHITE_BALANCE_HORIZON</constant>&nbsp;</entry>
3187 <entry>White balance setting for horizon daylight.
3188It corresponds approximately to 5000 K color temperature.</entry>
3189 </row>
3190 <row>
3191 <entry><constant>V4L2_WHITE_BALANCE_DAYLIGHT</constant>&nbsp;</entry>
3192 <entry>White balance preset for daylight (with clear sky).
3193It corresponds approximately to 5000...6500 K color temperature.</entry>
3194 </row>
3195 <row>
3196 <entry><constant>V4L2_WHITE_BALANCE_FLASH</constant>&nbsp;</entry>
3197 <entry>With this setting the camera will compensate for the flash
3198light. It slightly warms up the colors and corresponds roughly to 5000...5500 K
3199color temperature.</entry>
3200 </row>
3201 <row>
3202 <entry><constant>V4L2_WHITE_BALANCE_CLOUDY</constant>&nbsp;</entry>
3203 <entry>White balance preset for moderately overcast sky.
3204This option corresponds approximately to 6500...8000 K color temperature
3205range.</entry>
3206 </row>
3207 <row>
3208 <entry><constant>V4L2_WHITE_BALANCE_SHADE</constant>&nbsp;</entry>
3209 <entry>White balance preset for shade or heavily overcast
3210sky. It corresponds approximately to 9000...10000 K color temperature.
3211</entry>
3212 </row>
3213 </tbody>
3214 </entrytbl>
3215 </row>
3216 <row><entry></entry></row>
3217
3218 <row id="v4l2-wide-dynamic-range">
3219 <entry spanname="id"><constant>V4L2_CID_WIDE_DYNAMIC_RANGE</constant></entry>
3220 <entry>boolean</entry>
3221 </row>
3222 <row>
3223 <entry spanname="descr">Enables or disables the camera's wide dynamic
3224range feature. This feature allows to obtain clear images in situations where
3225intensity of the illumination varies significantly throughout the scene, i.e.
3226there are simultaneously very dark and very bright areas. It is most commonly
3227realized in cameras by combining two subsequent frames with different exposure
3228times. <footnote id="ctypeconv"><para> This control may be changed to a menu
3229control in the future, if more options are required.</para></footnote></entry>
3230 </row>
3231 <row><entry></entry></row>
3232
3233 <row id="v4l2-image-stabilization">
3234 <entry spanname="id"><constant>V4L2_CID_IMAGE_STABILIZATION</constant></entry>
3235 <entry>boolean</entry>
3236 </row>
3237 <row>
3238 <entry spanname="descr">Enables or disables image stabilization.
3239 <footnoteref linkend="ctypeconv"/></entry>
3240 </row>
3241 <row><entry></entry></row>
3242
3243 <row>
3244 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY</constant>&nbsp;</entry>
3245 <entry>integer menu</entry>
3246 </row><row><entry spanname="descr">Determines ISO equivalent of an
3247image sensor indicating the sensor's sensitivity to light. The numbers are
3248expressed in arithmetic scale, as per <xref linkend="iso12232" /> standard,
3249where doubling the sensor sensitivity is represented by doubling the numerical
3250ISO value. Applications should interpret the values as standard ISO values
3251multiplied by 1000, e.g. control value 800 stands for ISO 0.8. Drivers will
3252usually support only a subset of standard ISO values. The effect of setting
3253this control while the <constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>
3254control is set to a value other than <constant>V4L2_CID_ISO_SENSITIVITY_MANUAL
3255</constant> is undefined, drivers should ignore such requests.</entry>
3256 </row>
3257 <row><entry></entry></row>
3258
3259 <row id="v4l2-iso-sensitivity-auto-type">
3260 <entry spanname="id"><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3261 <entry>enum&nbsp;v4l2_iso_sensitivity_type</entry>
3262 </row><row><entry spanname="descr">Enables or disables automatic ISO
3263sensitivity adjustments.</entry>
3264 </row>
3265 <row>
3266 <entrytbl spanname="descr" cols="2">
3267 <tbody valign="top">
3268 <row>
3269 <entry><constant>V4L2_CID_ISO_SENSITIVITY_MANUAL</constant>&nbsp;</entry>
3270 <entry>Manual ISO sensitivity.</entry>
3271 </row>
3272 <row>
3273 <entry><constant>V4L2_CID_ISO_SENSITIVITY_AUTO</constant>&nbsp;</entry>
3274 <entry>Automatic ISO sensitivity adjustments.</entry>
3275 </row>
3276 </tbody>
3277 </entrytbl>
3278 </row>
3279 <row><entry></entry></row>
3280
3281 <row id="v4l2-scene-mode">
3282 <entry spanname="id"><constant>V4L2_CID_SCENE_MODE</constant>&nbsp;</entry>
3283 <entry>enum&nbsp;v4l2_scene_mode</entry>
3284 </row><row><entry spanname="descr">This control allows to select
3285scene programs as the camera automatic modes optimized for common shooting
3286scenes. Within these modes the camera determines best exposure, aperture,
3287focusing, light metering, white balance and equivalent sensitivity. The
3288controls of those parameters are influenced by the scene mode control.
3289An exact behavior in each mode is subject to the camera specification.
3290
3291<para>When the scene mode feature is not used, this control should be set to
3292<constant>V4L2_SCENE_MODE_NONE</constant> to make sure the other possibly
3293related controls are accessible. The following scene programs are defined:
3294</para>
3295</entry>
3296 </row>
3297 <row>
3298 <entrytbl spanname="descr" cols="2">
3299 <tbody valign="top">
3300 <row>
3301 <entry><constant>V4L2_SCENE_MODE_NONE</constant>&nbsp;</entry>
3302 <entry>The scene mode feature is disabled.</entry>
3303 </row>
3304 <row>
3305 <entry><constant>V4L2_SCENE_MODE_BACKLIGHT</constant>&nbsp;</entry>
3306 <entry>Backlight. Compensates for dark shadows when light is
3307 coming from behind a subject, also by automatically turning
3308 on the flash.</entry>
3309 </row>
3310 <row>
3311 <entry><constant>V4L2_SCENE_MODE_BEACH_SNOW</constant>&nbsp;</entry>
3312 <entry>Beach and snow. This mode compensates for all-white or
3313bright scenes, which tend to look gray and low contrast, when camera's automatic
3314exposure is based on an average scene brightness. To compensate, this mode
3315automatically slightly overexposes the frames. The white balance may also be
3316adjusted to compensate for the fact that reflected snow looks bluish rather
3317than white.</entry>
3318 </row>
3319 <row>
3320 <entry><constant>V4L2_SCENE_MODE_CANDLELIGHT</constant>&nbsp;</entry>
3321 <entry>Candle light. The camera generally raises the ISO
3322sensitivity and lowers the shutter speed. This mode compensates for relatively
3323close subject in the scene. The flash is disabled in order to preserve the
3324ambiance of the light.</entry>
3325 </row>
3326 <row>
3327 <entry><constant>V4L2_SCENE_MODE_DAWN_DUSK</constant>&nbsp;</entry>
3328 <entry>Dawn and dusk. Preserves the colors seen in low
3329natural light before dusk and after down. The camera may turn off the flash,
3330and automatically focus at infinity. It will usually boost saturation and
3331lower the shutter speed.</entry>
3332 </row>
3333 <row>
3334 <entry><constant>V4L2_SCENE_MODE_FALL_COLORS</constant>&nbsp;</entry>
3335 <entry>Fall colors. Increases saturation and adjusts white
3336balance for color enhancement. Pictures of autumn leaves get saturated reds
3337and yellows.</entry>
3338 </row>
3339 <row>
3340 <entry><constant>V4L2_SCENE_MODE_FIREWORKS</constant>&nbsp;</entry>
3341 <entry>Fireworks. Long exposure times are used to capture
3342the expanding burst of light from a firework. The camera may invoke image
3343stabilization.</entry>
3344 </row>
3345 <row>
3346 <entry><constant>V4L2_SCENE_MODE_LANDSCAPE</constant>&nbsp;</entry>
3347 <entry>Landscape. The camera may choose a small aperture to
3348provide deep depth of field and long exposure duration to help capture detail
3349in dim light conditions. The focus is fixed at infinity. Suitable for distant
3350and wide scenery.</entry>
3351 </row>
3352 <row>
3353 <entry><constant>V4L2_SCENE_MODE_NIGHT</constant>&nbsp;</entry>
3354 <entry>Night, also known as Night Landscape. Designed for low
3355light conditions, it preserves detail in the dark areas without blowing out bright
3356objects. The camera generally sets itself to a medium-to-high ISO sensitivity,
3357with a relatively long exposure time, and turns flash off. As such, there will be
3358increased image noise and the possibility of blurred image.</entry>
3359 </row>
3360 <row>
3361 <entry><constant>V4L2_SCENE_MODE_PARTY_INDOOR</constant>&nbsp;</entry>
3362 <entry>Party and indoor. Designed to capture indoor scenes
3363that are lit by indoor background lighting as well as the flash. The camera
3364usually increases ISO sensitivity, and adjusts exposure for the low light
3365conditions.</entry>
3366 </row>
3367 <row>
3368 <entry><constant>V4L2_SCENE_MODE_PORTRAIT</constant>&nbsp;</entry>
3369 <entry>Portrait. The camera adjusts the aperture so that the
3370depth of field is reduced, which helps to isolate the subject against a smooth
3371background. Most cameras recognize the presence of faces in the scene and focus
3372on them. The color hue is adjusted to enhance skin tones. The intensity of the
3373flash is often reduced.</entry>
3374 </row>
3375 <row>
3376 <entry><constant>V4L2_SCENE_MODE_SPORTS</constant>&nbsp;</entry>
3377 <entry>Sports. Significantly increases ISO and uses a fast
3378shutter speed to freeze motion of rapidly-moving subjects. Increased image
3379noise may be seen in this mode.</entry>
3380 </row>
3381 <row>
3382 <entry><constant>V4L2_SCENE_MODE_SUNSET</constant>&nbsp;</entry>
3383 <entry>Sunset. Preserves deep hues seen in sunsets and
3384sunrises. It bumps up the saturation.</entry>
3385 </row>
3386 <row>
3387 <entry><constant>V4L2_SCENE_MODE_TEXT</constant>&nbsp;</entry>
3388 <entry>Text. It applies extra contrast and sharpness, it is
3389typically a black-and-white mode optimized for readability. Automatic focus
3390may be switched to close-up mode and this setting may also involve some
3391lens-distortion correction.</entry>
3392 </row>
3393 </tbody>
3394 </entrytbl>
3395 </row>
3396 <row><entry></entry></row>
3397
3398 <row>
3399 <entry spanname="id"><constant>V4L2_CID_3A_LOCK</constant></entry>
3400 <entry>bitmask</entry>
3401 </row>
3402 <row>
3403 <entry spanname="descr">This control locks or unlocks the automatic
3404focus, exposure and white balance. The automatic adjustments can be paused
3405independently by setting the corresponding lock bit to 1. The camera then retains
3406the settings until the lock bit is cleared. The following lock bits are defined:
3407</entry>
3408 </row>
3409 <row>
3410 <entrytbl spanname="descr" cols="2">
3411 <tbody valign="top">
3412 <row>
3413 <entry><constant>V4L2_LOCK_EXPOSURE</constant></entry>
3414 <entry>Automatic exposure adjustments lock.</entry>
3415 </row>
3416 <row>
3417 <entry><constant>V4L2_LOCK_WHITE_BALANCE</constant></entry>
3418 <entry>Automatic white balance adjustments lock.</entry>
3419 </row>
3420 <row>
3421 <entry><constant>V4L2_LOCK_FOCUS</constant></entry>
3422 <entry>Automatic focus lock.</entry>
3423 </row>
3424 </tbody>
3425 </entrytbl>
3426 </row>
3427 <row><entry spanname="descr">
3428When a given algorithm is not enabled, drivers should ignore requests
3429to lock it and should return no error. An example might be an application
3430setting bit <constant>V4L2_LOCK_WHITE_BALANCE</constant> when the
3431<constant>V4L2_CID_AUTO_WHITE_BALANCE</constant> control is set to
3432<constant>FALSE</constant>. The value of this control may be changed
3433by exposure, white balance or focus controls.</entry>
3434 </row>
3435 <row><entry></entry></row>
3436
2935 </tbody> 3437 </tbody>
2936 </tgroup> 3438 </tgroup>
2937 </table> 3439 </table>
@@ -3476,7 +3978,7 @@ interface and may change in the future.</para>
3476 <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry> 3978 <entry spanname="id"><constant>V4L2_CID_JPEG_CHROMA_SUBSAMPLING</constant></entry>
3477 <entry>menu</entry> 3979 <entry>menu</entry>
3478 </row> 3980 </row>
3479 <row id="jpeg-chroma-subsampling-control"> 3981 <row id="v4l2-jpeg-chroma-subsampling">
3480 <entry spanname="descr">The chroma subsampling factors describe how 3982 <entry spanname="descr">The chroma subsampling factors describe how
3481 each component of an input image is sampled, in respect to maximum 3983 each component of an input image is sampled, in respect to maximum
3482 sample rate in each spatial dimension. See <xref linkend="itu-t81"/>, 3984 sample rate in each spatial dimension. See <xref linkend="itu-t81"/>,
@@ -3486,7 +3988,7 @@ interface and may change in the future.</para>
3486 from RGB to Y'CbCr color space. 3988 from RGB to Y'CbCr color space.
3487 </entry> 3989 </entry>
3488 </row> 3990 </row>
3489 <row> 3991 <row id = "v4l2-jpeg-chroma-subsampling">
3490 <entrytbl spanname="descr" cols="2"> 3992 <entrytbl spanname="descr" cols="2">
3491 <tbody valign="top"> 3993 <tbody valign="top">
3492 <row> 3994 <row>
@@ -3538,12 +4040,12 @@ interface and may change in the future.</para>
3538 </entry> 4040 </entry>
3539 </row> 4041 </row>
3540 <row id="jpeg-quality-control"> 4042 <row id="jpeg-quality-control">
3541 <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant></entry> 4043 <entry spanname="id"><constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant></entry>
3542 <entry>integer</entry> 4044 <entry>integer</entry>
3543 </row> 4045 </row>
3544 <row> 4046 <row>
3545 <entry spanname="descr"> 4047 <entry spanname="descr">
3546 <constant>V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control 4048 <constant>V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control
3547 determines trade-off between image quality and size. 4049 determines trade-off between image quality and size.
3548 It provides simpler method for applications to control image quality, 4050 It provides simpler method for applications to control image quality,
3549 without a need for direct reconfiguration of luminance and chrominance 4051 without a need for direct reconfiguration of luminance and chrominance
@@ -3551,7 +4053,7 @@ interface and may change in the future.</para>
3551 4053
3552 In cases where a driver uses quantization tables configured directly 4054 In cases where a driver uses quantization tables configured directly
3553 by an application, using interfaces defined elsewhere, <constant> 4055 by an application, using interfaces defined elsewhere, <constant>
3554 V4L2_CID_JPEG_COMPRESION_QUALITY</constant> control should be set 4056 V4L2_CID_JPEG_COMPRESSION_QUALITY</constant> control should be set
3555 by driver to 0. 4057 by driver to 0.
3556 4058
3557 <para>The value range of this control is driver-specific. Only 4059 <para>The value range of this control is driver-specific. Only
@@ -3599,4 +4101,172 @@ interface and may change in the future.</para>
3599 to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>, 4101 to <xref linkend="itu-t81"/>, <xref linkend="jfif"/>,
3600 <xref linkend="w3c-jpeg-jfif"/>.</para> 4102 <xref linkend="w3c-jpeg-jfif"/>.</para>
3601 </section> 4103 </section>
4104
4105 <section id="image-source-controls">
4106 <title>Image Source Control Reference</title>
4107
4108 <note>
4109 <title>Experimental</title>
4110
4111 <para>This is an <link
4112 linkend="experimental">experimental</link> interface and may
4113 change in the future.</para>
4114 </note>
4115
4116 <para>
4117 The Image Source control class is intended for low-level
4118 control of image source devices such as image sensors. The
4119 devices feature an analogue to digital converter and a bus
4120 transmitter to transmit the image data out of the device.
4121 </para>
4122
4123 <table pgwide="1" frame="none" id="image-source-control-id">
4124 <title>Image Source Control IDs</title>
4125
4126 <tgroup cols="4">
4127 <colspec colname="c1" colwidth="1*" />
4128 <colspec colname="c2" colwidth="6*" />
4129 <colspec colname="c3" colwidth="2*" />
4130 <colspec colname="c4" colwidth="6*" />
4131 <spanspec namest="c1" nameend="c2" spanname="id" />
4132 <spanspec namest="c2" nameend="c4" spanname="descr" />
4133 <thead>
4134 <row>
4135 <entry spanname="id" align="left">ID</entry>
4136 <entry align="left">Type</entry>
4137 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4138 </row>
4139 </thead>
4140 <tbody valign="top">
4141 <row><entry></entry></row>
4142 <row>
4143 <entry spanname="id"><constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant></entry>
4144 <entry>class</entry>
4145 </row>
4146 <row>
4147 <entry spanname="descr">The IMAGE_SOURCE class descriptor.</entry>
4148 </row>
4149 <row>
4150 <entry spanname="id"><constant>V4L2_CID_VBLANK</constant></entry>
4151 <entry>integer</entry>
4152 </row>
4153 <row>
4154 <entry spanname="descr">Vertical blanking. The idle period
4155 after every frame during which no image data is produced.
4156 The unit of vertical blanking is a line. Every line has
4157 length of the image width plus horizontal blanking at the
4158 pixel rate defined by
4159 <constant>V4L2_CID_PIXEL_RATE</constant> control in the
4160 same sub-device.</entry>
4161 </row>
4162 <row>
4163 <entry spanname="id"><constant>V4L2_CID_HBLANK</constant></entry>
4164 <entry>integer</entry>
4165 </row>
4166 <row>
4167 <entry spanname="descr">Horizontal blanking. The idle
4168 period after every line of image data during which no
4169 image data is produced. The unit of horizontal blanking is
4170 pixels.</entry>
4171 </row>
4172 <row>
4173 <entry spanname="id"><constant>V4L2_CID_ANALOGUE_GAIN</constant></entry>
4174 <entry>integer</entry>
4175 </row>
4176 <row>
4177 <entry spanname="descr">Analogue gain is gain affecting
4178 all colour components in the pixel matrix. The gain
4179 operation is performed in the analogue domain before A/D
4180 conversion.
4181 </entry>
4182 </row>
4183 <row><entry></entry></row>
4184 </tbody>
4185 </tgroup>
4186 </table>
4187
4188 </section>
4189
4190 <section id="image-process-controls">
4191 <title>Image Process Control Reference</title>
4192
4193 <note>
4194 <title>Experimental</title>
4195
4196 <para>This is an <link
4197 linkend="experimental">experimental</link> interface and may
4198 change in the future.</para>
4199 </note>
4200
4201 <para>
4202 The Image Source control class is intended for low-level control of
4203 image processing functions. Unlike
4204 <constant>V4L2_CID_IMAGE_SOURCE_CLASS</constant>, the controls in
4205 this class affect processing the image, and do not control capturing
4206 of it.
4207 </para>
4208
4209 <table pgwide="1" frame="none" id="image-process-control-id">
4210 <title>Image Source Control IDs</title>
4211
4212 <tgroup cols="4">
4213 <colspec colname="c1" colwidth="1*" />
4214 <colspec colname="c2" colwidth="6*" />
4215 <colspec colname="c3" colwidth="2*" />
4216 <colspec colname="c4" colwidth="6*" />
4217 <spanspec namest="c1" nameend="c2" spanname="id" />
4218 <spanspec namest="c2" nameend="c4" spanname="descr" />
4219 <thead>
4220 <row>
4221 <entry spanname="id" align="left">ID</entry>
4222 <entry align="left">Type</entry>
4223 </row><row rowsep="1"><entry spanname="descr" align="left">Description</entry>
4224 </row>
4225 </thead>
4226 <tbody valign="top">
4227 <row><entry></entry></row>
4228 <row>
4229 <entry spanname="id"><constant>V4L2_CID_IMAGE_PROC_CLASS</constant></entry>
4230 <entry>class</entry>
4231 </row>
4232 <row>
4233 <entry spanname="descr">The IMAGE_PROC class descriptor.</entry>
4234 </row>
4235 <row>
4236 <entry spanname="id"><constant>V4L2_CID_LINK_FREQ</constant></entry>
4237 <entry>integer menu</entry>
4238 </row>
4239 <row>
4240 <entry spanname="descr">Data bus frequency. Together with the
4241 media bus pixel code, bus type (clock cycles per sample), the
4242 data bus frequency defines the pixel rate
4243 (<constant>V4L2_CID_PIXEL_RATE</constant>) in the
4244 pixel array (or possibly elsewhere, if the device is not an
4245 image sensor). The frame rate can be calculated from the pixel
4246 clock, image width and height and horizontal and vertical
4247 blanking. While the pixel rate control may be defined elsewhere
4248 than in the subdev containing the pixel array, the frame rate
4249 cannot be obtained from that information. This is because only
4250 on the pixel array it can be assumed that the vertical and
4251 horizontal blanking information is exact: no other blanking is
4252 allowed in the pixel array. The selection of frame rate is
4253 performed by selecting the desired horizontal and vertical
4254 blanking. The unit of this control is Hz. </entry>
4255 </row>
4256 <row>
4257 <entry spanname="id"><constant>V4L2_CID_PIXEL_RATE</constant></entry>
4258 <entry>64-bit integer</entry>
4259 </row>
4260 <row>
4261 <entry spanname="descr">Pixel rate in the source pads of
4262 the subdev. This control is read-only and its unit is
4263 pixels / second.
4264 </entry>
4265 </row>
4266 <row><entry></entry></row>
4267 </tbody>
4268 </tgroup>
4269 </table>
4270
4271 </section>
3602</section> 4272</section>
diff --git a/Documentation/DocBook/media/v4l/dev-subdev.xml b/Documentation/DocBook/media/v4l/dev-subdev.xml
index 0916a7343a16..4afcbbec5eda 100644
--- a/Documentation/DocBook/media/v4l/dev-subdev.xml
+++ b/Documentation/DocBook/media/v4l/dev-subdev.xml
@@ -76,11 +76,12 @@
76 <wordasword>format</wordasword> means the combination of media bus data 76 <wordasword>format</wordasword> means the combination of media bus data
77 format, frame width and frame height.</para></note> 77 format, frame width and frame height.</para></note>
78 78
79 <para>Image formats are typically negotiated on video capture and output 79 <para>Image formats are typically negotiated on video capture and
80 devices using the <link linkend="crop">cropping and scaling</link> ioctls. 80 output devices using the format and <link
81 The driver is responsible for configuring every block in the video pipeline 81 linkend="vidioc-subdev-g-selection">selection</link> ioctls. The
82 according to the requested format at the pipeline input and/or 82 driver is responsible for configuring every block in the video
83 output.</para> 83 pipeline according to the requested format at the pipeline input
84 and/or output.</para>
84 85
85 <para>For complex devices, such as often found in embedded systems, 86 <para>For complex devices, such as often found in embedded systems,
86 identical image sizes at the output of a pipeline can be achieved using 87 identical image sizes at the output of a pipeline can be achieved using
@@ -276,11 +277,11 @@
276 </section> 277 </section>
277 278
278 <section> 279 <section>
279 <title>Cropping and scaling</title> 280 <title>Selections: cropping, scaling and composition</title>
280 281
281 <para>Many sub-devices support cropping frames on their input or output 282 <para>Many sub-devices support cropping frames on their input or output
282 pads (or possible even on both). Cropping is used to select the area of 283 pads (or possible even on both). Cropping is used to select the area of
283 interest in an image, typically on a video sensor or video decoder. It can 284 interest in an image, typically on an image sensor or a video decoder. It can
284 also be used as part of digital zoom implementations to select the area of 285 also be used as part of digital zoom implementations to select the area of
285 the image that will be scaled up.</para> 286 the image that will be scaled up.</para>
286 287
@@ -288,26 +289,179 @@
288 &v4l2-rect; by the coordinates of the top left corner and the rectangle 289 &v4l2-rect; by the coordinates of the top left corner and the rectangle
289 size. Both the coordinates and sizes are expressed in pixels.</para> 290 size. Both the coordinates and sizes are expressed in pixels.</para>
290 291
291 <para>The crop rectangle is retrieved and set using the 292 <para>As for pad formats, drivers store try and active
292 &VIDIOC-SUBDEV-G-CROP; and &VIDIOC-SUBDEV-S-CROP; ioctls. Like for pad 293 rectangles for the selection targets of ACTUAL type <xref
293 formats, drivers store try and active crop rectangles. The format 294 linkend="v4l2-subdev-selection-targets">.</xref></para>
294 negotiation mechanism applies to crop settings as well.</para> 295
295 296 <para>On sink pads, cropping is applied relative to the
296 <para>On input pads, cropping is applied relatively to the current pad 297 current pad format. The pad format represents the image size as
297 format. The pad format represents the image size as received by the 298 received by the sub-device from the previous block in the
298 sub-device from the previous block in the pipeline, and the crop rectangle 299 pipeline, and the crop rectangle represents the sub-image that
299 represents the sub-image that will be transmitted further inside the 300 will be transmitted further inside the sub-device for
300 sub-device for processing. The crop rectangle be entirely containted 301 processing.</para>
301 inside the input image size.</para> 302
302 303 <para>The scaling operation changes the size of the image by
303 <para>Input crop rectangle are reset to their default value when the input 304 scaling it to new dimensions. The scaling ratio isn't specified
304 image format is modified. Drivers should use the input image size as the 305 explicitly, but is implied from the original and scaled image
305 crop rectangle default value, but hardware requirements may prevent this. 306 sizes. Both sizes are represented by &v4l2-rect;.</para>
306 </para> 307
308 <para>Scaling support is optional. When supported by a subdev,
309 the crop rectangle on the subdev's sink pad is scaled to the
310 size configured using the &VIDIOC-SUBDEV-S-SELECTION; IOCTL
311 using <constant>V4L2_SUBDEV_SEL_COMPOSE_ACTUAL</constant>
312 selection target on the same pad. If the subdev supports scaling
313 but not composing, the top and left values are not used and must
314 always be set to zero.</para>
315
316 <para>On source pads, cropping is similar to sink pads, with the
317 exception that the source size from which the cropping is
318 performed, is the COMPOSE rectangle on the sink pad. In both
319 sink and source pads, the crop rectangle must be entirely
320 contained inside the source image size for the crop
321 operation.</para>
322
323 <para>The drivers should always use the closest possible
324 rectangle the user requests on all selection targets, unless
325 specifically told otherwise.
326 <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant> and
327 <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant> flags may be
328 used to round the image size either up or down. <xref
329 linkend="v4l2-subdev-selection-flags"></xref></para>
330 </section>
331
332 <section>
333 <title>Types of selection targets</title>
334
335 <section>
336 <title>ACTUAL targets</title>
337
338 <para>ACTUAL targets reflect the actual hardware configuration
339 at any point of time. There is a BOUNDS target
340 corresponding to every ACTUAL.</para>
341 </section>
342
343 <section>
344 <title>BOUNDS targets</title>
345
346 <para>BOUNDS targets is the smallest rectangle that contains
347 all valid ACTUAL rectangles. It may not be possible to set the
348 ACTUAL rectangle as large as the BOUNDS rectangle, however.
349 This may be because e.g. a sensor's pixel array is not
350 rectangular but cross-shaped or round. The maximum size may
351 also be smaller than the BOUNDS rectangle.</para>
352 </section>
307 353
308 <para>Cropping behaviour on output pads is not defined.</para> 354 </section>
355
356 <section>
357 <title>Order of configuration and format propagation</title>
358
359 <para>Inside subdevs, the order of image processing steps will
360 always be from the sink pad towards the source pad. This is also
361 reflected in the order in which the configuration must be
362 performed by the user: the changes made will be propagated to
363 any subsequent stages. If this behaviour is not desired, the
364 user must set
365 <constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant> flag. This
366 flag causes no propagation of the changes are allowed in any
367 circumstances. This may also cause the accessed rectangle to be
368 adjusted by the driver, depending on the properties of the
369 underlying hardware.</para>
370
371 <para>The coordinates to a step always refer to the actual size
372 of the previous step. The exception to this rule is the source
373 compose rectangle, which refers to the sink compose bounds
374 rectangle --- if it is supported by the hardware.</para>
375
376 <orderedlist>
377 <listitem>Sink pad format. The user configures the sink pad
378 format. This format defines the parameters of the image the
379 entity receives through the pad for further processing.</listitem>
380
381 <listitem>Sink pad actual crop selection. The sink pad crop
382 defines the crop performed to the sink pad format.</listitem>
383
384 <listitem>Sink pad actual compose selection. The size of the
385 sink pad compose rectangle defines the scaling ratio compared
386 to the size of the sink pad crop rectangle. The location of
387 the compose rectangle specifies the location of the actual
388 sink compose rectangle in the sink compose bounds
389 rectangle.</listitem>
390
391 <listitem>Source pad actual crop selection. Crop on the source
392 pad defines crop performed to the image in the sink compose
393 bounds rectangle.</listitem>
394
395 <listitem>Source pad format. The source pad format defines the
396 output pixel format of the subdev, as well as the other
397 parameters with the exception of the image width and height.
398 Width and height are defined by the size of the source pad
399 actual crop selection.</listitem>
400 </orderedlist>
401
402 <para>Accessing any of the above rectangles not supported by the
403 subdev will return <constant>EINVAL</constant>. Any rectangle
404 referring to a previous unsupported rectangle coordinates will
405 instead refer to the previous supported rectangle. For example,
406 if sink crop is not supported, the compose selection will refer
407 to the sink pad format dimensions instead.</para>
408
409 <figure id="subdev-image-processing-crop">
410 <title>Image processing in subdevs: simple crop example</title>
411 <mediaobject>
412 <imageobject>
413 <imagedata fileref="subdev-image-processing-crop.svg"
414 format="SVG" scale="200" />
415 </imageobject>
416 </mediaobject>
417 </figure>
418
419 <para>In the above example, the subdev supports cropping on its
420 sink pad. To configure it, the user sets the media bus format on
421 the subdev's sink pad. Now the actual crop rectangle can be set
422 on the sink pad --- the location and size of this rectangle
423 reflect the location and size of a rectangle to be cropped from
424 the sink format. The size of the sink crop rectangle will also
425 be the size of the format of the subdev's source pad.</para>
426
427 <figure id="subdev-image-processing-scaling-multi-source">
428 <title>Image processing in subdevs: scaling with multiple sources</title>
429 <mediaobject>
430 <imageobject>
431 <imagedata fileref="subdev-image-processing-scaling-multi-source.svg"
432 format="SVG" scale="200" />
433 </imageobject>
434 </mediaobject>
435 </figure>
436
437 <para>In this example, the subdev is capable of first cropping,
438 then scaling and finally cropping for two source pads
439 individually from the resulting scaled image. The location of
440 the scaled image in the cropped image is ignored in sink compose
441 target. Both of the locations of the source crop rectangles
442 refer to the sink scaling rectangle, independently cropping an
443 area at location specified by the source crop rectangle from
444 it.</para>
445
446 <figure id="subdev-image-processing-full">
447 <title>Image processing in subdevs: scaling and composition
448 with multiple sinks and sources</title>
449 <mediaobject>
450 <imageobject>
451 <imagedata fileref="subdev-image-processing-full.svg"
452 format="SVG" scale="200" />
453 </imageobject>
454 </mediaobject>
455 </figure>
456
457 <para>The subdev driver supports two sink pads and two source
458 pads. The images from both of the sink pads are individually
459 cropped, then scaled and further composed on the composition
460 bounds rectangle. From that, two independent streams are cropped
461 and sent out of the subdev from the source pads.</para>
309 462
310 </section> 463 </section>
464
311 </section> 465 </section>
312 466
313 &sub-subdev-formats; 467 &sub-subdev-formats;
diff --git a/Documentation/DocBook/media/v4l/io.xml b/Documentation/DocBook/media/v4l/io.xml
index b815929b5bba..fd6aca2922b6 100644
--- a/Documentation/DocBook/media/v4l/io.xml
+++ b/Documentation/DocBook/media/v4l/io.xml
@@ -543,12 +543,13 @@ and can range from zero to the number of buffers allocated
543with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry> 543with the &VIDIOC-REQBUFS; ioctl (&v4l2-requestbuffers; <structfield>count</structfield>) minus one.</entry>
544 </row> 544 </row>
545 <row> 545 <row>
546 <entry>&v4l2-buf-type;</entry> 546 <entry>__u32</entry>
547 <entry><structfield>type</structfield></entry> 547 <entry><structfield>type</structfield></entry>
548 <entry></entry> 548 <entry></entry>
549 <entry>Type of the buffer, same as &v4l2-format; 549 <entry>Type of the buffer, same as &v4l2-format;
550<structfield>type</structfield> or &v4l2-requestbuffers; 550<structfield>type</structfield> or &v4l2-requestbuffers;
551<structfield>type</structfield>, set by the application.</entry> 551<structfield>type</structfield>, set by the application. See <xref
552linkend="v4l2-buf-type" /></entry>
552 </row> 553 </row>
553 <row> 554 <row>
554 <entry>__u32</entry> 555 <entry>__u32</entry>
@@ -568,7 +569,7 @@ refers to an input stream, applications when an output stream.</entry>
568linkend="buffer-flags" />.</entry> 569linkend="buffer-flags" />.</entry>
569 </row> 570 </row>
570 <row> 571 <row>
571 <entry>&v4l2-field;</entry> 572 <entry>__u32</entry>
572 <entry><structfield>field</structfield></entry> 573 <entry><structfield>field</structfield></entry>
573 <entry></entry> 574 <entry></entry>
574 <entry>Indicates the field order of the image in the 575 <entry>Indicates the field order of the image in the
@@ -630,11 +631,12 @@ bandwidth. These devices identify by not enumerating any video
630standards, see <xref linkend="standard" />.</para></entry> 631standards, see <xref linkend="standard" />.</para></entry>
631 </row> 632 </row>
632 <row> 633 <row>
633 <entry>&v4l2-memory;</entry> 634 <entry>__u32</entry>
634 <entry><structfield>memory</structfield></entry> 635 <entry><structfield>memory</structfield></entry>
635 <entry></entry> 636 <entry></entry>
636 <entry>This field must be set by applications and/or drivers 637 <entry>This field must be set by applications and/or drivers
637in accordance with the selected I/O method.</entry> 638in accordance with the selected I/O method. See <xref linkend="v4l2-memory"
639 /></entry>
638 </row> 640 </row>
639 <row> 641 <row>
640 <entry>union</entry> 642 <entry>union</entry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
index 7b274092e60c..c1c62a9acc2a 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10.xml
@@ -1,4 +1,4 @@
1 <refentry> 1 <refentry id="pixfmt-srggb10">
2 <refmeta> 2 <refmeta>
3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'), 3 <refentrytitle>V4L2_PIX_FMT_SRGGB10 ('RG10'),
4 V4L2_PIX_FMT_SGRBG10 ('BA10'), 4 V4L2_PIX_FMT_SGRBG10 ('BA10'),
diff --git a/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
new file mode 100644
index 000000000000..8eace3e2e7d4
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-srggb10dpcm8.xml
@@ -0,0 +1,29 @@
1 <refentry id="pixfmt-srggb10dpcm8">
2 <refmeta>
3 <refentrytitle>
4 V4L2_PIX_FMT_SBGGR10DPCM8 ('bBA8'),
5 V4L2_PIX_FMT_SGBRG10DPCM8 ('bGA8'),
6 V4L2_PIX_FMT_SGRBG10DPCM8 ('BD10'),
7 V4L2_PIX_FMT_SRGGB10DPCM8 ('bRA8'),
8 </refentrytitle>
9 &manvol;
10 </refmeta>
11 <refnamediv>
12 <refname id="V4L2-PIX-FMT-SBGGR10DPCM8"><constant>V4L2_PIX_FMT_SBGGR10DPCM8</constant></refname>
13 <refname id="V4L2-PIX-FMT-SGBRG10DPCM8"><constant>V4L2_PIX_FMT_SGBRG10DPCM8</constant></refname>
14 <refname id="V4L2-PIX-FMT-SGRBG10DPCM8"><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></refname>
15 <refname id="V4L2-PIX-FMT-SRGGB10DPCM8"><constant>V4L2_PIX_FMT_SRGGB10DPCM8</constant></refname>
16 <refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose>
17 </refnamediv>
18 <refsect1>
19 <title>Description</title>
20
21 <para>The following four pixel formats are raw sRGB / Bayer formats
22 with 10 bits per colour compressed to 8 bits each, using DPCM
23 compression. DPCM, differential pulse-code modulation, is lossy.
24 Each colour component consumes 8 bits of memory. In other respects
25 this format is similar to <xref
26 linkend="pixfmt-srggb10">.</xref></para>
27
28 </refsect1>
29 </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index 31eaae2469f9..f5ac15ed0549 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
673 &sub-srggb8; 673 &sub-srggb8;
674 &sub-sbggr16; 674 &sub-sbggr16;
675 &sub-srggb10; 675 &sub-srggb10;
676 &sub-srggb10dpcm8;
676 &sub-srggb12; 677 &sub-srggb12;
677 </section> 678 </section>
678 679
@@ -876,11 +877,6 @@ kernel sources in the file <filename>Documentation/video4linux/cx2341x/README.hm
876 <entry>'S561'</entry> 877 <entry>'S561'</entry>
877 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry> 878 <entry>Compressed GBRG Bayer format used by the gspca driver.</entry>
878 </row> 879 </row>
879 <row id="V4L2-PIX-FMT-SGRBG10DPCM8">
880 <entry><constant>V4L2_PIX_FMT_SGRBG10DPCM8</constant></entry>
881 <entry>'DB10'</entry>
882 <entry>10 bit raw Bayer DPCM compressed to 8 bits.</entry>
883 </row>
884 <row id="V4L2-PIX-FMT-PAC207"> 880 <row id="V4L2-PIX-FMT-PAC207">
885 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry> 881 <entry><constant>V4L2_PIX_FMT_PAC207</constant></entry>
886 <entry>'P207'</entry> 882 <entry>'P207'</entry>
diff --git a/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia
new file mode 100644
index 000000000000..e32ba5362e1d
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.dia
@@ -0,0 +1,614 @@
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
new file mode 100644
index 000000000000..18b0f5de9ed2
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-crop.svg
@@ -0,0 +1,63 @@
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
new file mode 100644
index 000000000000..a0d782927840
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-full.dia
@@ -0,0 +1,1588 @@
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
new file mode 100644
index 000000000000..3322cf4c0093
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-full.svg
@@ -0,0 +1,163 @@
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
new file mode 100644
index 000000000000..0cd50a7bda80
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.dia
@@ -0,0 +1,1152 @@
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
new file mode 100644
index 000000000000..2340c0f8bc92
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/subdev-image-processing-scaling-multi-source.svg
@@ -0,0 +1,116 @@
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
index 8ae38876172e..015c561754b7 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -28,8 +28,8 @@ documentation.</contrib>
28 <firstname>Hans</firstname> 28 <firstname>Hans</firstname>
29 <surname>Verkuil</surname> 29 <surname>Verkuil</surname>
30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl, 30 <contrib>Designed and documented the VIDIOC_LOG_STATUS ioctl,
31the extended control ioctls and major parts of the sliced VBI 31the extended control ioctls, major parts of the sliced VBI API, the
32API.</contrib> 32MPEG encoder and decoder APIs and the DV Timings API.</contrib>
33 <affiliation> 33 <affiliation>
34 <address> 34 <address>
35 <email>hverkuil@xs4all.nl</email> 35 <email>hverkuil@xs4all.nl</email>
@@ -96,6 +96,17 @@ Remote Controller chapter.</contrib>
96 </address> 96 </address>
97 </affiliation> 97 </affiliation>
98 </author> 98 </author>
99
100 <author>
101 <firstname>Sakari</firstname>
102 <surname>Ailus</surname>
103 <contrib>Subdev selections API.</contrib>
104 <affiliation>
105 <address>
106 <email>sakari.ailus@iki.fi</email>
107 </address>
108 </affiliation>
109 </author>
99 </authorgroup> 110 </authorgroup>
100 111
101 <copyright> 112 <copyright>
@@ -112,6 +123,7 @@ Remote Controller chapter.</contrib>
112 <year>2009</year> 123 <year>2009</year>
113 <year>2010</year> 124 <year>2010</year>
114 <year>2011</year> 125 <year>2011</year>
126 <year>2012</year>
115 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin 127 <holder>Bill Dirks, Michael H. Schimek, Hans Verkuil, Martin
116Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab, 128Rubli, Andy Walls, Muralidharan Karicheri, Mauro Carvalho Chehab,
117 Pawel Osciak</holder> 129 Pawel Osciak</holder>
@@ -128,6 +140,28 @@ structs, ioctls) must be noted in more detail in the history chapter
128applications. --> 140applications. -->
129 141
130 <revision> 142 <revision>
143 <revnumber>3.5</revnumber>
144 <date>2012-05-07</date>
145 <authorinitials>sa, sn</authorinitials>
146 <revremark>Added V4L2_CTRL_TYPE_INTEGER_MENU and V4L2 subdev
147 selections API. Improved the description of V4L2_CID_COLORFX
148 control, added V4L2_CID_COLORFX_CBCR control.
149 Added camera controls V4L2_CID_AUTO_EXPOSURE_BIAS,
150 V4L2_CID_AUTO_N_PRESET_WHITE_BALANCE, V4L2_CID_IMAGE_STABILIZATION,
151 V4L2_CID_ISO_SENSITIVITY, V4L2_CID_ISO_SENSITIVITY_AUTO,
152 V4L2_CID_EXPOSURE_METERING, V4L2_CID_SCENE_MODE,
153 V4L2_CID_3A_LOCK, V4L2_CID_AUTO_FOCUS_START,
154 V4L2_CID_AUTO_FOCUS_STOP, V4L2_CID_AUTO_FOCUS_STATUS
155 and V4L2_CID_AUTO_FOCUS_RANGE.
156 </revremark>
157 <date>2012-05-01</date>
158 <authorinitials>hv</authorinitials>
159 <revremark>Added VIDIOC_ENUM_DV_TIMINGS, VIDIOC_QUERY_DV_TIMINGS and
160 VIDIOC_DV_TIMINGS_CAP.
161 </revremark>
162 </revision>
163
164 <revision>
131 <revnumber>3.4</revnumber> 165 <revnumber>3.4</revnumber>
132 <date>2012-01-25</date> 166 <date>2012-01-25</date>
133 <authorinitials>sn</authorinitials> 167 <authorinitials>sn</authorinitials>
@@ -433,7 +467,7 @@ and discussions on the V4L mailing list.</revremark>
433</partinfo> 467</partinfo>
434 468
435<title>Video for Linux Two API Specification</title> 469<title>Video for Linux Two API Specification</title>
436 <subtitle>Revision 3.3</subtitle> 470 <subtitle>Revision 3.5</subtitle>
437 471
438 <chapter id="common"> 472 <chapter id="common">
439 &sub-common; 473 &sub-common;
@@ -491,10 +525,12 @@ and discussions on the V4L mailing list.</revremark>
491 &sub-dbg-g-register; 525 &sub-dbg-g-register;
492 &sub-decoder-cmd; 526 &sub-decoder-cmd;
493 &sub-dqevent; 527 &sub-dqevent;
528 &sub-dv-timings-cap;
494 &sub-encoder-cmd; 529 &sub-encoder-cmd;
495 &sub-enumaudio; 530 &sub-enumaudio;
496 &sub-enumaudioout; 531 &sub-enumaudioout;
497 &sub-enum-dv-presets; 532 &sub-enum-dv-presets;
533 &sub-enum-dv-timings;
498 &sub-enum-fmt; 534 &sub-enum-fmt;
499 &sub-enum-framesizes; 535 &sub-enum-framesizes;
500 &sub-enum-frameintervals; 536 &sub-enum-frameintervals;
@@ -529,6 +565,7 @@ and discussions on the V4L mailing list.</revremark>
529 &sub-querycap; 565 &sub-querycap;
530 &sub-queryctrl; 566 &sub-queryctrl;
531 &sub-query-dv-preset; 567 &sub-query-dv-preset;
568 &sub-query-dv-timings;
532 &sub-querystd; 569 &sub-querystd;
533 &sub-prepare-buf; 570 &sub-prepare-buf;
534 &sub-reqbufs; 571 &sub-reqbufs;
@@ -540,6 +577,7 @@ and discussions on the V4L mailing list.</revremark>
540 &sub-subdev-g-crop; 577 &sub-subdev-g-crop;
541 &sub-subdev-g-fmt; 578 &sub-subdev-g-fmt;
542 &sub-subdev-g-frame-interval; 579 &sub-subdev-g-frame-interval;
580 &sub-subdev-g-selection;
543 &sub-subscribe-event; 581 &sub-subscribe-event;
544 <!-- End of ioctls. --> 582 <!-- End of ioctls. -->
545 &sub-mmap; 583 &sub-mmap;
diff --git a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
index 73ae8a6cd004..765549ff8a71 100644
--- a/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-create-bufs.xml
@@ -48,6 +48,12 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
51 <para>This ioctl is used to create buffers for <link linkend="mmap">memory 57 <para>This ioctl is used to create buffers for <link linkend="mmap">memory
52mapped</link> or <link linkend="userp">user pointer</link> 58mapped</link> or <link linkend="userp">user pointer</link>
53I/O. It can be used as an alternative or in addition to the 59I/O. It can be used as an alternative or in addition to the
@@ -94,16 +100,18 @@ information.</para>
94 <entry>The number of buffers requested or granted.</entry> 100 <entry>The number of buffers requested or granted.</entry>
95 </row> 101 </row>
96 <row> 102 <row>
97 <entry>&v4l2-memory;</entry> 103 <entry>__u32</entry>
98 <entry><structfield>memory</structfield></entry> 104 <entry><structfield>memory</structfield></entry>
99 <entry>Applications set this field to 105 <entry>Applications set this field to
100<constant>V4L2_MEMORY_MMAP</constant> or 106<constant>V4L2_MEMORY_MMAP</constant> or
101<constant>V4L2_MEMORY_USERPTR</constant>.</entry> 107<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
108/></entry>
102 </row> 109 </row>
103 <row> 110 <row>
104 <entry>&v4l2-format;</entry> 111 <entry>__u32</entry>
105 <entry><structfield>format</structfield></entry> 112 <entry><structfield>format</structfield></entry>
106 <entry>Filled in by the application, preserved by the driver.</entry> 113 <entry>Filled in by the application, preserved by the driver.
114 See <xref linkend="v4l2-format" />.</entry>
107 </row> 115 </row>
108 <row> 116 <row>
109 <entry>__u32</entry> 117 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
index b4f2f255211e..f1bac2c6e978 100644
--- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
@@ -65,7 +65,7 @@ output.</para>
65 &cs-str; 65 &cs-str;
66 <tbody valign="top"> 66 <tbody valign="top">
67 <row> 67 <row>
68 <entry>&v4l2-buf-type;</entry> 68 <entry>__u32</entry>
69 <entry><structfield>type</structfield></entry> 69 <entry><structfield>type</structfield></entry>
70 <entry>Type of the data stream, set by the application. 70 <entry>Type of the data stream, set by the application.
71Only these types are valid here: 71Only these types are valid here:
@@ -73,7 +73,7 @@ Only these types are valid here:
73<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 73<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
74<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 74<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
75defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 75defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
76and higher.</entry> 76and higher. See <xref linkend="v4l2-buf-type" />.</entry>
77 </row> 77 </row>
78 <row> 78 <row>
79 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry> 79 <entry>struct <link linkend="v4l2-rect-crop">v4l2_rect</link></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
new file mode 100644
index 000000000000..6673ce582050
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-dv-timings-cap.xml
@@ -0,0 +1,211 @@
1<refentry id="vidioc-dv-timings-cap">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_DV_TIMINGS_CAP</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_DV_TIMINGS_CAP</refname>
9 <refpurpose>The capabilities of the Digital Video receiver/transmitter</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_dv_timings_cap *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_DV_TIMINGS_CAP</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>To query the available timings, applications initialize the
58<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-timings-cap;
59and call the <constant>VIDIOC_DV_TIMINGS_CAP</constant> ioctl with a pointer to this
60structure. Drivers fill the rest of the structure or return an
61&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
62applications shall begin at index zero, incrementing by one until the
63driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
64different set of DV timings after switching the video input or
65output.</para>
66
67 <table pgwide="1" frame="none" id="v4l2-bt-timings-cap">
68 <title>struct <structname>v4l2_bt_timings_cap</structname></title>
69 <tgroup cols="3">
70 &cs-str;
71 <tbody valign="top">
72 <row>
73 <entry>__u32</entry>
74 <entry><structfield>min_width</structfield></entry>
75 <entry>Minimum width of the active video in pixels.</entry>
76 </row>
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>max_width</structfield></entry>
80 <entry>Maximum width of the active video in pixels.</entry>
81 </row>
82 <row>
83 <entry>__u32</entry>
84 <entry><structfield>min_height</structfield></entry>
85 <entry>Minimum height of the active video in lines.</entry>
86 </row>
87 <row>
88 <entry>__u32</entry>
89 <entry><structfield>max_height</structfield></entry>
90 <entry>Maximum height of the active video in lines.</entry>
91 </row>
92 <row>
93 <entry>__u64</entry>
94 <entry><structfield>min_pixelclock</structfield></entry>
95 <entry>Minimum pixelclock frequency in Hz.</entry>
96 </row>
97 <row>
98 <entry>__u64</entry>
99 <entry><structfield>max_pixelclock</structfield></entry>
100 <entry>Maximum pixelclock frequency in Hz.</entry>
101 </row>
102 <row>
103 <entry>__u32</entry>
104 <entry><structfield>standards</structfield></entry>
105 <entry>The video standard(s) supported by the hardware.
106 See <xref linkend="dv-bt-standards"/> for a list of standards.</entry>
107 </row>
108 <row>
109 <entry>__u32</entry>
110 <entry><structfield>capabilities</structfield></entry>
111 <entry>Several flags giving more information about the capabilities.
112 See <xref linkend="dv-bt-cap-capabilities"/> for a description of the flags.
113 </entry>
114 </row>
115 <row>
116 <entry>__u32</entry>
117 <entry><structfield>reserved</structfield>[16]</entry>
118 <entry></entry>
119 </row>
120 </tbody>
121 </tgroup>
122 </table>
123
124 <table pgwide="1" frame="none" id="v4l2-dv-timings-cap">
125 <title>struct <structname>v4l2_dv_timings_cap</structname></title>
126 <tgroup cols="4">
127 &cs-str;
128 <tbody valign="top">
129 <row>
130 <entry>__u32</entry>
131 <entry><structfield>type</structfield></entry>
132 <entry>Type of DV timings as listed in <xref linkend="dv-timing-types"/>.</entry>
133 </row>
134 <row>
135 <entry>__u32</entry>
136 <entry><structfield>reserved</structfield>[3]</entry>
137 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
138 </row>
139 <row>
140 <entry>union</entry>
141 <entry><structfield></structfield></entry>
142 <entry></entry>
143 </row>
144 <row>
145 <entry></entry>
146 <entry>&v4l2-bt-timings-cap;</entry>
147 <entry><structfield>bt</structfield></entry>
148 <entry>BT.656/1120 timings capabilities of the hardware.</entry>
149 </row>
150 <row>
151 <entry></entry>
152 <entry>__u32</entry>
153 <entry><structfield>raw_data</structfield>[32]</entry>
154 <entry></entry>
155 </row>
156 </tbody>
157 </tgroup>
158 </table>
159
160 <table pgwide="1" frame="none" id="dv-bt-cap-capabilities">
161 <title>DV BT Timing capabilities</title>
162 <tgroup cols="2">
163 &cs-str;
164 <tbody valign="top">
165 <row>
166 <entry>Flag</entry>
167 <entry>Description</entry>
168 </row>
169 <row>
170 <entry></entry>
171 <entry></entry>
172 </row>
173 <row>
174 <entry>V4L2_DV_BT_CAP_INTERLACED</entry>
175 <entry>Interlaced formats are supported.
176 </entry>
177 </row>
178 <row>
179 <entry>V4L2_DV_BT_CAP_PROGRESSIVE</entry>
180 <entry>Progressive formats are supported.
181 </entry>
182 </row>
183 <row>
184 <entry>V4L2_DV_BT_CAP_REDUCED_BLANKING</entry>
185 <entry>CVT/GTF specific: the timings can make use of reduced blanking (CVT)
186or the 'Secondary GTF' curve (GTF).
187 </entry>
188 </row>
189 <row>
190 <entry>V4L2_DV_BT_CAP_CUSTOM</entry>
191 <entry>Can support non-standard timings, i.e. timings not belonging to the
192standards set in the <structfield>standards</structfield> field.
193 </entry>
194 </row>
195 </tbody>
196 </tgroup>
197 </table>
198 </refsect1>
199
200 <refsect1>
201 &return-value;
202 </refsect1>
203</refentry>
204
205<!--
206Local Variables:
207mode: sgml
208sgml-parent-document: "v4l2.sgml"
209indent-tabs-mode: nil
210End:
211-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
index 0be17c232d3a..509f0012d2a6 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-presets.xml
@@ -48,6 +48,10 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
52 New drivers and applications should use &VIDIOC-ENUM-DV-TIMINGS; instead.
53 </para>
54
51 <para>To query the attributes of a DV preset, applications initialize the 55 <para>To query the attributes of a DV preset, applications initialize the
52<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset; 56<structfield>index</structfield> field and zero the reserved array of &v4l2-dv-enum-preset;
53and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this 57and call the <constant>VIDIOC_ENUM_DV_PRESETS</constant> ioctl with a pointer to this
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
new file mode 100644
index 000000000000..24c3bf4fd29a
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-dv-timings.xml
@@ -0,0 +1,119 @@
1<refentry id="vidioc-enum-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_ENUM_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_ENUM_DV_TIMINGS</refname>
9 <refpurpose>Enumerate supported Digital Video timings</refpurpose>
10 </refnamediv>
11
12 <refsynopsisdiv>
13 <funcsynopsis>
14 <funcprototype>
15 <funcdef>int <function>ioctl</function></funcdef>
16 <paramdef>int <parameter>fd</parameter></paramdef>
17 <paramdef>int <parameter>request</parameter></paramdef>
18 <paramdef>struct v4l2_enum_dv_timings *<parameter>argp</parameter></paramdef>
19 </funcprototype>
20 </funcsynopsis>
21 </refsynopsisdiv>
22
23 <refsect1>
24 <title>Arguments</title>
25
26 <variablelist>
27 <varlistentry>
28 <term><parameter>fd</parameter></term>
29 <listitem>
30 <para>&fd;</para>
31 </listitem>
32 </varlistentry>
33 <varlistentry>
34 <term><parameter>request</parameter></term>
35 <listitem>
36 <para>VIDIOC_ENUM_DV_TIMINGS</para>
37 </listitem>
38 </varlistentry>
39 <varlistentry>
40 <term><parameter>argp</parameter></term>
41 <listitem>
42 <para></para>
43 </listitem>
44 </varlistentry>
45 </variablelist>
46 </refsect1>
47
48 <refsect1>
49 <title>Description</title>
50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
57 <para>While some DV receivers or transmitters support a wide range of timings, others
58support only a limited number of timings. With this ioctl applications can enumerate a list
59of known supported timings. Call &VIDIOC-DV-TIMINGS-CAP; to check if it also supports other
60standards or even custom timings that are not in this list.</para>
61
62 <para>To query the available timings, applications initialize the
63<structfield>index</structfield> field and zero the reserved array of &v4l2-enum-dv-timings;
64and call the <constant>VIDIOC_ENUM_DV_TIMINGS</constant> ioctl with a pointer to this
65structure. Drivers fill the rest of the structure or return an
66&EINVAL; when the index is out of bounds. To enumerate all supported DV timings,
67applications shall begin at index zero, incrementing by one until the
68driver returns <errorcode>EINVAL</errorcode>. Note that drivers may enumerate a
69different set of DV timings after switching the video input or
70output.</para>
71
72 <table pgwide="1" frame="none" id="v4l2-enum-dv-timings">
73 <title>struct <structname>v4l2_enum_dv_timings</structname></title>
74 <tgroup cols="3">
75 &cs-str;
76 <tbody valign="top">
77 <row>
78 <entry>__u32</entry>
79 <entry><structfield>index</structfield></entry>
80 <entry>Number of the DV timings, set by the
81application.</entry>
82 </row>
83 <row>
84 <entry>__u32</entry>
85 <entry><structfield>reserved</structfield>[3]</entry>
86 <entry>Reserved for future extensions. Drivers must set the array to zero.</entry>
87 </row>
88 <row>
89 <entry>&v4l2-dv-timings;</entry>
90 <entry><structfield>timings</structfield></entry>
91 <entry>The timings.</entry>
92 </row>
93 </tbody>
94 </tgroup>
95 </table>
96 </refsect1>
97
98 <refsect1>
99 &return-value;
100
101 <variablelist>
102 <varlistentry>
103 <term><errorcode>EINVAL</errorcode></term>
104 <listitem>
105 <para>The &v4l2-enum-dv-timings; <structfield>index</structfield>
106is out of bounds.</para>
107 </listitem>
108 </varlistentry>
109 </variablelist>
110 </refsect1>
111</refentry>
112
113<!--
114Local Variables:
115mode: sgml
116sgml-parent-document: "v4l2.sgml"
117indent-tabs-mode: nil
118End:
119-->
diff --git a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
index 347d142e7431..81ebe48317fe 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enum-fmt.xml
@@ -71,7 +71,7 @@ the application. This is in no way related to the <structfield>
71pixelformat</structfield> field.</entry> 71pixelformat</structfield> field.</entry>
72 </row> 72 </row>
73 <row> 73 <row>
74 <entry>&v4l2-buf-type;</entry> 74 <entry>__u32</entry>
75 <entry><structfield>type</structfield></entry> 75 <entry><structfield>type</structfield></entry>
76 <entry>Type of the data stream, set by the application. 76 <entry>Type of the data stream, set by the application.
77Only these types are valid here: 77Only these types are valid here:
@@ -81,7 +81,7 @@ Only these types are valid here:
81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>, 81<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE</constant>,
82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 82<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
83defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 83defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
84and higher.</entry> 84and higher. See <xref linkend="v4l2-buf-type" />.</entry>
85 </row> 85 </row>
86 <row> 86 <row>
87 <entry>__u32</entry> 87 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
index 9b8efcd6e947..46d5a044a537 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enuminput.xml
@@ -285,7 +285,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
285 <row> 285 <row>
286 <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry> 286 <entry><constant>V4L2_IN_CAP_CUSTOM_TIMINGS</constant></entry>
287 <entry>0x00000002</entry> 287 <entry>0x00000002</entry>
288 <entry>This input supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> 288 <entry>This input supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
289 </row> 289 </row>
290 <row> 290 <row>
291 <entry><constant>V4L2_IN_CAP_STD</constant></entry> 291 <entry><constant>V4L2_IN_CAP_STD</constant></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
index a64d5ef103fa..428020000ef0 100644
--- a/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-enumoutput.xml
@@ -170,7 +170,7 @@ input/output interface to linux-media@vger.kernel.org on 19 Oct 2009.
170 <row> 170 <row>
171 <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry> 171 <entry><constant>V4L2_OUT_CAP_CUSTOM_TIMINGS</constant></entry>
172 <entry>0x00000002</entry> 172 <entry>0x00000002</entry>
173 <entry>This output supports setting custom video timings by using VIDIOC_S_DV_TIMINGS.</entry> 173 <entry>This output supports setting video timings by using VIDIOC_S_DV_TIMINGS.</entry>
174 </row> 174 </row>
175 <row> 175 <row>
176 <entry><constant>V4L2_OUT_CAP_STD</constant></entry> 176 <entry><constant>V4L2_OUT_CAP_STD</constant></entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
index 01a50640dce0..c4ff3b1887fb 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-crop.xml
@@ -100,14 +100,14 @@ changed and <constant>VIDIOC_S_CROP</constant> returns the
100 &cs-str; 100 &cs-str;
101 <tbody valign="top"> 101 <tbody valign="top">
102 <row> 102 <row>
103 <entry>&v4l2-buf-type;</entry> 103 <entry>__u32</entry>
104 <entry><structfield>type</structfield></entry> 104 <entry><structfield>type</structfield></entry>
105 <entry>Type of the data stream, set by the application. 105 <entry>Type of the data stream, set by the application.
106Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>, 106Only these types are valid here: <constant>V4L2_BUF_TYPE_VIDEO_CAPTURE</constant>,
107<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>, 107<constant>V4L2_BUF_TYPE_VIDEO_OUTPUT</constant>,
108<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver 108<constant>V4L2_BUF_TYPE_VIDEO_OVERLAY</constant>, and custom (driver
109defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant> 109defined) types with code <constant>V4L2_BUF_TYPE_PRIVATE</constant>
110and higher.</entry> 110and higher. See <xref linkend="v4l2-buf-type" />.</entry>
111 </row> 111 </row>
112 <row> 112 <row>
113 <entry>&v4l2-rect;</entry> 113 <entry>&v4l2-rect;</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
index 7940c1149393..61be9fa3803a 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-preset.xml
@@ -48,6 +48,12 @@
48 48
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51
52 <para>These ioctls are <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-G-DV-TIMINGS; and &VIDIOC-S-DV-TIMINGS;
54 instead.
55 </para>
56
51 <para>To query and select the current DV preset, applications 57 <para>To query and select the current DV preset, applications
52use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant> 58use the <constant>VIDIOC_G_DV_PRESET</constant> and <constant>VIDIOC_S_DV_PRESET</constant>
53ioctls which take a pointer to a &v4l2-dv-preset; type as argument. 59ioctls which take a pointer to a &v4l2-dv-preset; type as argument.
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
index 4a8648ae9a63..eda1a2991bbe 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-dv-timings.xml
@@ -7,7 +7,7 @@
7 <refnamediv> 7 <refnamediv>
8 <refname>VIDIOC_G_DV_TIMINGS</refname> 8 <refname>VIDIOC_G_DV_TIMINGS</refname>
9 <refname>VIDIOC_S_DV_TIMINGS</refname> 9 <refname>VIDIOC_S_DV_TIMINGS</refname>
10 <refpurpose>Get or set custom DV timings for input or output</refpurpose> 10 <refpurpose>Get or set DV timings for input or output</refpurpose>
11 </refnamediv> 11 </refnamediv>
12 12
13 <refsynopsisdiv> 13 <refsynopsisdiv>
@@ -48,12 +48,15 @@
48 48
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 <para>To set custom DV timings for the input or output, applications use the 51 <para>To set DV timings for the input or output, applications use the
52<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current custom timings, 52<constant>VIDIOC_S_DV_TIMINGS</constant> ioctl and to get the current timings,
53applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing 53applications use the <constant>VIDIOC_G_DV_TIMINGS</constant> ioctl. The detailed timing
54information is filled in using the structure &v4l2-dv-timings;. These ioctls take 54information is filled in using the structure &v4l2-dv-timings;. These ioctls take
55a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported 55a pointer to the &v4l2-dv-timings; structure as argument. If the ioctl is not supported
56or the timing values are not correct, the driver returns &EINVAL;.</para> 56or the timing values are not correct, the driver returns &EINVAL;.</para>
57<para>The <filename>linux/v4l2-dv-timings.h</filename> header can be used to get the
58timings of the formats in the <xref linkend="cea861" /> and <xref linkend="vesadmt" />
59standards.</para>
57 </refsect1> 60 </refsect1>
58 61
59 <refsect1> 62 <refsect1>
@@ -83,12 +86,13 @@ or the timing values are not correct, the driver returns &EINVAL;.</para>
83 <row> 86 <row>
84 <entry>__u32</entry> 87 <entry>__u32</entry>
85 <entry><structfield>width</structfield></entry> 88 <entry><structfield>width</structfield></entry>
86 <entry>Width of the active video in pixels</entry> 89 <entry>Width of the active video in pixels.</entry>
87 </row> 90 </row>
88 <row> 91 <row>
89 <entry>__u32</entry> 92 <entry>__u32</entry>
90 <entry><structfield>height</structfield></entry> 93 <entry><structfield>height</structfield></entry>
91 <entry>Height of the active video in lines</entry> 94 <entry>Height of the active video frame in lines. So for interlaced formats the
95 height of the active video in each field is <structfield>height</structfield>/2.</entry>
92 </row> 96 </row>
93 <row> 97 <row>
94 <entry>__u32</entry> 98 <entry>__u32</entry>
@@ -125,32 +129,52 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
125 <row> 129 <row>
126 <entry>__u32</entry> 130 <entry>__u32</entry>
127 <entry><structfield>vfrontporch</structfield></entry> 131 <entry><structfield>vfrontporch</structfield></entry>
128 <entry>Vertical front porch in lines</entry> 132 <entry>Vertical front porch in lines. For interlaced formats this refers to the
133 odd field (aka field 1).</entry>
129 </row> 134 </row>
130 <row> 135 <row>
131 <entry>__u32</entry> 136 <entry>__u32</entry>
132 <entry><structfield>vsync</structfield></entry> 137 <entry><structfield>vsync</structfield></entry>
133 <entry>Vertical sync length in lines</entry> 138 <entry>Vertical sync length in lines. For interlaced formats this refers to the
139 odd field (aka field 1).</entry>
134 </row> 140 </row>
135 <row> 141 <row>
136 <entry>__u32</entry> 142 <entry>__u32</entry>
137 <entry><structfield>vbackporch</structfield></entry> 143 <entry><structfield>vbackporch</structfield></entry>
138 <entry>Vertical back porch in lines</entry> 144 <entry>Vertical back porch in lines. For interlaced formats this refers to the
145 odd field (aka field 1).</entry>
139 </row> 146 </row>
140 <row> 147 <row>
141 <entry>__u32</entry> 148 <entry>__u32</entry>
142 <entry><structfield>il_vfrontporch</structfield></entry> 149 <entry><structfield>il_vfrontporch</structfield></entry>
143 <entry>Vertical front porch in lines for bottom field of interlaced field formats</entry> 150 <entry>Vertical front porch in lines for the even field (aka field 2) of
151 interlaced field formats.</entry>
144 </row> 152 </row>
145 <row> 153 <row>
146 <entry>__u32</entry> 154 <entry>__u32</entry>
147 <entry><structfield>il_vsync</structfield></entry> 155 <entry><structfield>il_vsync</structfield></entry>
148 <entry>Vertical sync length in lines for bottom field of interlaced field formats</entry> 156 <entry>Vertical sync length in lines for the even field (aka field 2) of
157 interlaced field formats.</entry>
149 </row> 158 </row>
150 <row> 159 <row>
151 <entry>__u32</entry> 160 <entry>__u32</entry>
152 <entry><structfield>il_vbackporch</structfield></entry> 161 <entry><structfield>il_vbackporch</structfield></entry>
153 <entry>Vertical back porch in lines for bottom field of interlaced field formats</entry> 162 <entry>Vertical back porch in lines for the even field (aka field 2) of
163 interlaced field formats.</entry>
164 </row>
165 <row>
166 <entry>__u32</entry>
167 <entry><structfield>standards</structfield></entry>
168 <entry>The video standard(s) this format belongs to. This will be filled in by
169 the driver. Applications must set this to 0. See <xref linkend="dv-bt-standards"/>
170 for a list of standards.</entry>
171 </row>
172 <row>
173 <entry>__u32</entry>
174 <entry><structfield>flags</structfield></entry>
175 <entry>Several flags giving more information about the format.
176 See <xref linkend="dv-bt-flags"/> for a description of the flags.
177 </entry>
154 </row> 178 </row>
155 </tbody> 179 </tbody>
156 </tgroup> 180 </tgroup>
@@ -211,6 +235,90 @@ bit 0 (V4L2_DV_VSYNC_POS_POL) is for vertical sync polarity and bit 1 (V4L2_DV_H
211 </tbody> 235 </tbody>
212 </tgroup> 236 </tgroup>
213 </table> 237 </table>
238 <table pgwide="1" frame="none" id="dv-bt-standards">
239 <title>DV BT Timing standards</title>
240 <tgroup cols="2">
241 &cs-str;
242 <tbody valign="top">
243 <row>
244 <entry>Timing standard</entry>
245 <entry>Description</entry>
246 </row>
247 <row>
248 <entry></entry>
249 <entry></entry>
250 </row>
251 <row>
252 <entry>V4L2_DV_BT_STD_CEA861</entry>
253 <entry>The timings follow the CEA-861 Digital TV Profile standard</entry>
254 </row>
255 <row>
256 <entry>V4L2_DV_BT_STD_DMT</entry>
257 <entry>The timings follow the VESA Discrete Monitor Timings standard</entry>
258 </row>
259 <row>
260 <entry>V4L2_DV_BT_STD_CVT</entry>
261 <entry>The timings follow the VESA Coordinated Video Timings standard</entry>
262 </row>
263 <row>
264 <entry>V4L2_DV_BT_STD_GTF</entry>
265 <entry>The timings follow the VESA Generalized Timings Formula standard</entry>
266 </row>
267 </tbody>
268 </tgroup>
269 </table>
270 <table pgwide="1" frame="none" id="dv-bt-flags">
271 <title>DV BT Timing flags</title>
272 <tgroup cols="2">
273 &cs-str;
274 <tbody valign="top">
275 <row>
276 <entry>Flag</entry>
277 <entry>Description</entry>
278 </row>
279 <row>
280 <entry></entry>
281 <entry></entry>
282 </row>
283 <row>
284 <entry>V4L2_DV_FL_REDUCED_BLANKING</entry>
285 <entry>CVT/GTF specific: the timings use reduced blanking (CVT) or the 'Secondary
286GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
287intervals are reduced, allowing a higher resolution over the same
288bandwidth. This is a read-only flag, applications must not set this.
289 </entry>
290 </row>
291 <row>
292 <entry>V4L2_DV_FL_CAN_REDUCE_FPS</entry>
293 <entry>CEA-861 specific: set for CEA-861 formats with a framerate that is a multiple
294of six. These formats can be optionally played at 1 / 1.001 speed to
295be compatible with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
29629.97 frames per second. If the transmitter can't generate such frequencies, then the
297flag will also be cleared. This is a read-only flag, applications must not set this.
298 </entry>
299 </row>
300 <row>
301 <entry>V4L2_DV_FL_REDUCED_FPS</entry>
302 <entry>CEA-861 specific: only valid for video transmitters, the flag is cleared
303by receivers. It is also only valid for formats with the V4L2_DV_FL_CAN_REDUCE_FPS flag
304set, for other formats the flag will be cleared by the driver.
305
306If the application sets this flag, then the pixelclock used to set up the transmitter is
307divided by 1.001 to make it compatible with NTSC framerates. If the transmitter
308can't generate such frequencies, then the flag will also be cleared.
309 </entry>
310 </row>
311 <row>
312 <entry>V4L2_DV_FL_HALF_LINE</entry>
313 <entry>Specific to interlaced formats: if set, then field 1 (aka the odd field)
314is really one half-line longer and field 2 (aka the even field) is really one half-line
315shorter, so each field has exactly the same number of half-lines. Whether half-lines can be
316detected or used depends on the hardware.
317 </entry>
318 </row>
319 </tbody>
320 </tgroup>
321 </table>
214 </refsect1> 322 </refsect1>
215 <refsect1> 323 <refsect1>
216 &return-value; 324 &return-value;
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
index b17a7aac6997..e3d5afcdafbb 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-ext-ctrls.xml
@@ -265,6 +265,32 @@ These controls are described in <xref
265These controls are described in <xref 265These controls are described in <xref
266 linkend="flash-controls" />.</entry> 266 linkend="flash-controls" />.</entry>
267 </row> 267 </row>
268 <row>
269 <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
270 <entry>0x9d0000</entry>
271 <entry>The class containing JPEG compression controls.
272These controls are described in <xref
273 linkend="jpeg-controls" />.</entry>
274 </row>
275 <row>
276 <entry><constant>V4L2_CTRL_CLASS_IMAGE_SOURCE</constant></entry>
277 <entry>0x9e0000</entry> <entry>The class containing image
278 source controls. These controls are described in <xref
279 linkend="image-source-controls" />.</entry>
280 </row>
281 <row>
282 <entry><constant>V4L2_CTRL_CLASS_IMAGE_PROC</constant></entry>
283 <entry>0x9f0000</entry> <entry>The class containing image
284 processing controls. These controls are described in <xref
285 linkend="image-process-controls" />.</entry>
286 </row>
287 <row>
288 <entry><constant>V4L2_CTRL_CLASS_JPEG</constant></entry>
289 <entry>0x9d0000</entry>
290 <entry>The class containing JPEG compression controls.
291These controls are described in <xref
292 linkend="jpeg-controls" />.</entry>
293 </row>
268 </tbody> 294 </tbody>
269 </tgroup> 295 </tgroup>
270 </table> 296 </table>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
index 17fbda15137b..52acff193a6f 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-fmt.xml
@@ -116,7 +116,7 @@ this ioctl.</para>
116 <colspec colname="c4" /> 116 <colspec colname="c4" />
117 <tbody valign="top"> 117 <tbody valign="top">
118 <row> 118 <row>
119 <entry>&v4l2-buf-type;</entry> 119 <entry>__u32</entry>
120 <entry><structfield>type</structfield></entry> 120 <entry><structfield>type</structfield></entry>
121 <entry></entry> 121 <entry></entry>
122 <entry>Type of the data stream, see <xref 122 <entry>Type of the data stream, see <xref
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
index 66e9a5257861..69c178a4d205 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-frequency.xml
@@ -95,14 +95,14 @@ the &v4l2-output; <structfield>modulator</structfield> field and the
95&v4l2-modulator; <structfield>index</structfield> field.</entry> 95&v4l2-modulator; <structfield>index</structfield> field.</entry>
96 </row> 96 </row>
97 <row> 97 <row>
98 <entry>&v4l2-tuner-type;</entry> 98 <entry>__u32</entry>
99 <entry><structfield>type</structfield></entry> 99 <entry><structfield>type</structfield></entry>
100 <entry>The tuner type. This is the same value as in the 100 <entry>The tuner type. This is the same value as in the
101&v4l2-tuner; <structfield>type</structfield> field. The type must be set 101&v4l2-tuner; <structfield>type</structfield> field. See The type must be set
102to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename> 102to <constant>V4L2_TUNER_RADIO</constant> for <filename>/dev/radioX</filename>
103device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant> 103device nodes, and to <constant>V4L2_TUNER_ANALOG_TV</constant>
104for all others. The field is not applicable to modulators, &ie; ignored 104for all others. The field is not applicable to modulators, &ie; ignored
105by drivers.</entry> 105by drivers. See <xref linkend="v4l2-tuner-type" /></entry>
106 </row> 106 </row>
107 <row> 107 <row>
108 <entry>__u32</entry> 108 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
index 19b1d85dd668..f83d2cdd1185 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-parm.xml
@@ -75,11 +75,12 @@ devices.</para>
75 &cs-ustr; 75 &cs-ustr;
76 <tbody valign="top"> 76 <tbody valign="top">
77 <row> 77 <row>
78 <entry>&v4l2-buf-type;</entry> 78 <entry>__u32</entry>
79 <entry><structfield>type</structfield></entry> 79 <entry><structfield>type</structfield></entry>
80 <entry></entry> 80 <entry></entry>
81 <entry>The buffer (stream) type, same as &v4l2-format; 81 <entry>The buffer (stream) type, same as &v4l2-format;
82<structfield>type</structfield>, set by the application.</entry> 82<structfield>type</structfield>, set by the application. See <xref
83 linkend="v4l2-buf-type" /></entry>
83 </row> 84 </row>
84 <row> 85 <row>
85 <entry>union</entry> 86 <entry>union</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
index 71741daaf725..bd015d1563ff 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-sliced-vbi-cap.xml
@@ -148,7 +148,7 @@ using the &VIDIOC-S-FMT; ioctl as described in <xref
148<structfield>service_lines</structfield>[1][0] to zero.</entry> 148<structfield>service_lines</structfield>[1][0] to zero.</entry>
149 </row> 149 </row>
150 <row> 150 <row>
151 <entry>&v4l2-buf-type;</entry> 151 <entry>__u32</entry>
152 <entry><structfield>type</structfield></entry> 152 <entry><structfield>type</structfield></entry>
153 <entry>Type of the data stream, see <xref 153 <entry>Type of the data stream, see <xref
154 linkend="v4l2-buf-type" />. Should be 154 linkend="v4l2-buf-type" />. Should be
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
index 91ec2fb658f8..62a1aa200a36 100644
--- a/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-g-tuner.xml
@@ -107,7 +107,7 @@ user.<!-- FIXME Video inputs already have a name, the purpose of this
107field is not quite clear.--></para></entry> 107field is not quite clear.--></para></entry>
108 </row> 108 </row>
109 <row> 109 <row>
110 <entry>&v4l2-tuner-type;</entry> 110 <entry>__u32</entry>
111 <entry><structfield>type</structfield></entry> 111 <entry><structfield>type</structfield></entry>
112 <entry spanname="hspan">Type of the tuner, see <xref 112 <entry spanname="hspan">Type of the tuner, see <xref
113 linkend="v4l2-tuner-type" />.</entry> 113 linkend="v4l2-tuner-type" />.</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
index 7bde698760e4..fa7ad7e33228 100644
--- a/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-prepare-buf.xml
@@ -48,6 +48,12 @@
48 <refsect1> 48 <refsect1>
49 <title>Description</title> 49 <title>Description</title>
50 50
51 <note>
52 <title>Experimental</title>
53 <para>This is an <link linkend="experimental"> experimental </link>
54 interface and may change in the future.</para>
55 </note>
56
51 <para>Applications can optionally call the 57 <para>Applications can optionally call the
52<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer 58<constant>VIDIOC_PREPARE_BUF</constant> ioctl to pass ownership of the buffer
53to the driver before actually enqueuing it, using the 59to the driver before actually enqueuing it, using the
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
index 23b17f604211..1bc8aeb3ff1f 100644
--- a/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-preset.xml
@@ -49,6 +49,10 @@ input</refpurpose>
49 <refsect1> 49 <refsect1>
50 <title>Description</title> 50 <title>Description</title>
51 51
52 <para>This ioctl is <emphasis role="bold">deprecated</emphasis>.
53 New drivers and applications should use &VIDIOC-QUERY-DV-TIMINGS; instead.
54 </para>
55
52 <para>The hardware may be able to detect the current DV preset 56 <para>The hardware may be able to detect the current DV preset
53automatically, similar to sensing the video standard. To do so, applications 57automatically, similar to sensing the video standard. To do so, applications
54call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a 58call <constant> VIDIOC_QUERY_DV_PRESET</constant> with a pointer to a
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
new file mode 100644
index 000000000000..44935a0ffcf0
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-query-dv-timings.xml
@@ -0,0 +1,104 @@
1<refentry id="vidioc-query-dv-timings">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_QUERY_DV_TIMINGS</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_QUERY_DV_TIMINGS</refname>
9 <refpurpose>Sense the DV preset received by the current
10input</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_dv_timings *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_QUERY_DV_TIMINGS</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental"> experimental </link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>The hardware may be able to detect the current DV timings
59automatically, similar to sensing the video standard. To do so, applications
60call <constant>VIDIOC_QUERY_DV_TIMINGS</constant> with a pointer to a
61&v4l2-dv-timings;. Once the hardware detects the timings, it will fill in the
62timings structure.
63
64If the timings could not be detected because there was no signal, then
65<errorcode>ENOLINK</errorcode> is returned. If a signal was detected, but
66it was unstable and the receiver could not lock to the signal, then
67<errorcode>ENOLCK</errorcode> is returned. If the receiver could lock to the signal,
68but the format is unsupported (e.g. because the pixelclock is out of range
69of the hardware capabilities), then the driver fills in whatever timings it
70could find and returns <errorcode>ERANGE</errorcode>. In that case the application
71can call &VIDIOC-DV-TIMINGS-CAP; to compare the found timings with the hardware's
72capabilities in order to give more precise feedback to the user.
73</para>
74 </refsect1>
75
76 <refsect1>
77 &return-value;
78
79 <variablelist>
80 <varlistentry>
81 <term><errorcode>ENOLINK</errorcode></term>
82 <listitem>
83 <para>No timings could be detected because no signal was found.
84</para>
85 </listitem>
86 </varlistentry>
87 <varlistentry>
88 <term><errorcode>ENOLCK</errorcode></term>
89 <listitem>
90 <para>The signal was unstable and the hardware could not lock on to it.
91</para>
92 </listitem>
93 </varlistentry>
94 <varlistentry>
95 <term><errorcode>ERANGE</errorcode></term>
96 <listitem>
97 <para>Timings were found, but they are out of range of the hardware
98capabilities.
99</para>
100 </listitem>
101 </varlistentry>
102 </variablelist>
103 </refsect1>
104</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
index 36660d311b51..e6645b996558 100644
--- a/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-queryctrl.xml
@@ -127,7 +127,7 @@ the first control with a higher ID. Drivers which do not support this
127flag yet always return an &EINVAL;.</entry> 127flag yet always return an &EINVAL;.</entry>
128 </row> 128 </row>
129 <row> 129 <row>
130 <entry>&v4l2-ctrl-type;</entry> 130 <entry>__u32</entry>
131 <entry><structfield>type</structfield></entry> 131 <entry><structfield>type</structfield></entry>
132 <entry>Type of control, see <xref 132 <entry>Type of control, see <xref
133 linkend="v4l2-ctrl-type" />.</entry> 133 linkend="v4l2-ctrl-type" />.</entry>
@@ -215,11 +215,12 @@ the array to zero.</entry>
215 215
216 <table pgwide="1" frame="none" id="v4l2-querymenu"> 216 <table pgwide="1" frame="none" id="v4l2-querymenu">
217 <title>struct <structname>v4l2_querymenu</structname></title> 217 <title>struct <structname>v4l2_querymenu</structname></title>
218 <tgroup cols="3"> 218 <tgroup cols="4">
219 &cs-str; 219 &cs-str;
220 <tbody valign="top"> 220 <tbody valign="top">
221 <row> 221 <row>
222 <entry>__u32</entry> 222 <entry>__u32</entry>
223 <entry></entry>
223 <entry><structfield>id</structfield></entry> 224 <entry><structfield>id</structfield></entry>
224 <entry>Identifies the control, set by the application 225 <entry>Identifies the control, set by the application
225from the respective &v4l2-queryctrl; 226from the respective &v4l2-queryctrl;
@@ -227,18 +228,38 @@ from the respective &v4l2-queryctrl;
227 </row> 228 </row>
228 <row> 229 <row>
229 <entry>__u32</entry> 230 <entry>__u32</entry>
231 <entry></entry>
230 <entry><structfield>index</structfield></entry> 232 <entry><structfield>index</structfield></entry>
231 <entry>Index of the menu item, starting at zero, set by 233 <entry>Index of the menu item, starting at zero, set by
232 the application.</entry> 234 the application.</entry>
233 </row> 235 </row>
234 <row> 236 <row>
237 <entry>union</entry>
238 <entry></entry>
239 <entry></entry>
240 <entry></entry>
241 </row>
242 <row>
243 <entry></entry>
235 <entry>__u8</entry> 244 <entry>__u8</entry>
236 <entry><structfield>name</structfield>[32]</entry> 245 <entry><structfield>name</structfield>[32]</entry>
237 <entry>Name of the menu item, a NUL-terminated ASCII 246 <entry>Name of the menu item, a NUL-terminated ASCII
238string. This information is intended for the user.</entry> 247string. This information is intended for the user. This field is valid
248for <constant>V4L2_CTRL_FLAG_MENU</constant> type controls.</entry>
249 </row>
250 <row>
251 <entry></entry>
252 <entry>__s64</entry>
253 <entry><structfield>value</structfield></entry>
254 <entry>
255 Value of the integer menu item. This field is valid for
256 <constant>V4L2_CTRL_FLAG_INTEGER_MENU</constant> type
257 controls.
258 </entry>
239 </row> 259 </row>
240 <row> 260 <row>
241 <entry>__u32</entry> 261 <entry>__u32</entry>
262 <entry></entry>
242 <entry><structfield>reserved</structfield></entry> 263 <entry><structfield>reserved</structfield></entry>
243 <entry>Reserved for future extensions. Drivers must set 264 <entry>Reserved for future extensions. Drivers must set
244the array to zero.</entry> 265the array to zero.</entry>
@@ -292,6 +313,20 @@ the menu items can be enumerated with the
292<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry> 313<constant>VIDIOC_QUERYMENU</constant> ioctl.</entry>
293 </row> 314 </row>
294 <row> 315 <row>
316 <entry><constant>V4L2_CTRL_TYPE_INTEGER_MENU</constant></entry>
317 <entry>&ge; 0</entry>
318 <entry>1</entry>
319 <entry>N-1</entry>
320 <entry>
321 The control has a menu of N choices. The values of the
322 menu items can be enumerated with the
323 <constant>VIDIOC_QUERYMENU</constant> ioctl. This is
324 similar to <constant>V4L2_CTRL_TYPE_MENU</constant>
325 except that instead of strings, the menu items are
326 signed 64-bit integers.
327 </entry>
328 </row>
329 <row>
295 <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry> 330 <entry><constant>V4L2_CTRL_TYPE_BITMASK</constant></entry>
296 <entry>0</entry> 331 <entry>0</entry>
297 <entry>n/a</entry> 332 <entry>n/a</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
index 7be4b1d29b90..d7c95057bc51 100644
--- a/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-reqbufs.xml
@@ -92,18 +92,19 @@ streamoff.--></para>
92 <entry>The number of buffers requested or granted.</entry> 92 <entry>The number of buffers requested or granted.</entry>
93 </row> 93 </row>
94 <row> 94 <row>
95 <entry>&v4l2-buf-type;</entry> 95 <entry>__u32</entry>
96 <entry><structfield>type</structfield></entry> 96 <entry><structfield>type</structfield></entry>
97 <entry>Type of the stream or buffers, this is the same 97 <entry>Type of the stream or buffers, this is the same
98as the &v4l2-format; <structfield>type</structfield> field. See <xref 98as the &v4l2-format; <structfield>type</structfield> field. See <xref
99 linkend="v4l2-buf-type" /> for valid values.</entry> 99 linkend="v4l2-buf-type" /> for valid values.</entry>
100 </row> 100 </row>
101 <row> 101 <row>
102 <entry>&v4l2-memory;</entry> 102 <entry>__u32</entry>
103 <entry><structfield>memory</structfield></entry> 103 <entry><structfield>memory</structfield></entry>
104 <entry>Applications set this field to 104 <entry>Applications set this field to
105<constant>V4L2_MEMORY_MMAP</constant> or 105<constant>V4L2_MEMORY_MMAP</constant> or
106<constant>V4L2_MEMORY_USERPTR</constant>.</entry> 106<constant>V4L2_MEMORY_USERPTR</constant>. See <xref linkend="v4l2-memory"
107/>.</entry>
107 </row> 108 </row>
108 <row> 109 <row>
109 <entry>__u32</entry> 110 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
index 18b1a8266f7c..407dfceb71f0 100644
--- a/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-s-hw-freq-seek.xml
@@ -73,10 +73,11 @@ same value as in the &v4l2-input; <structfield>tuner</structfield>
73field and the &v4l2-tuner; <structfield>index</structfield> field.</entry> 73field and the &v4l2-tuner; <structfield>index</structfield> field.</entry>
74 </row> 74 </row>
75 <row> 75 <row>
76 <entry>&v4l2-tuner-type;</entry> 76 <entry>__u32</entry>
77 <entry><structfield>type</structfield></entry> 77 <entry><structfield>type</structfield></entry>
78 <entry>The tuner type. This is the same value as in the 78 <entry>The tuner type. This is the same value as in the
79&v4l2-tuner; <structfield>type</structfield> field.</entry> 79&v4l2-tuner; <structfield>type</structfield> field. See <xref
80 linkend="v4l2-tuner-type" /></entry>
80 </row> 81 </row>
81 <row> 82 <row>
82 <entry>__u32</entry> 83 <entry>__u32</entry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
index 06197323a8cc..4cddd788c589 100644
--- a/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-crop.xml
@@ -58,9 +58,12 @@
58 <title>Description</title> 58 <title>Description</title>
59 59
60 <note> 60 <note>
61 <title>Experimental</title> 61 <title>Obsolete</title>
62 <para>This is an <link linkend="experimental">experimental</link> 62
63 interface and may change in the future.</para> 63 <para>This is an <link linkend="obsolete">obsolete</link>
64 interface and may be removed in the future. It is superseded by
65 <link linkend="vidioc-subdev-g-selection">the selection
66 API</link>.</para>
64 </note> 67 </note>
65 68
66 <para>To retrieve the current crop rectangle applications set the 69 <para>To retrieve the current crop rectangle applications set the
diff --git a/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
new file mode 100644
index 000000000000..208e9f0da3f3
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-subdev-g-selection.xml
@@ -0,0 +1,228 @@
1<refentry id="vidioc-subdev-g-selection">
2 <refmeta>
3 <refentrytitle>ioctl VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</refentrytitle>
4 &manvol;
5 </refmeta>
6
7 <refnamediv>
8 <refname>VIDIOC_SUBDEV_G_SELECTION</refname>
9 <refname>VIDIOC_SUBDEV_S_SELECTION</refname>
10 <refpurpose>Get or set selection rectangles on a subdev pad</refpurpose>
11 </refnamediv>
12
13 <refsynopsisdiv>
14 <funcsynopsis>
15 <funcprototype>
16 <funcdef>int <function>ioctl</function></funcdef>
17 <paramdef>int <parameter>fd</parameter></paramdef>
18 <paramdef>int <parameter>request</parameter></paramdef>
19 <paramdef>struct v4l2_subdev_selection *<parameter>argp</parameter></paramdef>
20 </funcprototype>
21 </funcsynopsis>
22 </refsynopsisdiv>
23
24 <refsect1>
25 <title>Arguments</title>
26
27 <variablelist>
28 <varlistentry>
29 <term><parameter>fd</parameter></term>
30 <listitem>
31 <para>&fd;</para>
32 </listitem>
33 </varlistentry>
34 <varlistentry>
35 <term><parameter>request</parameter></term>
36 <listitem>
37 <para>VIDIOC_SUBDEV_G_SELECTION, VIDIOC_SUBDEV_S_SELECTION</para>
38 </listitem>
39 </varlistentry>
40 <varlistentry>
41 <term><parameter>argp</parameter></term>
42 <listitem>
43 <para></para>
44 </listitem>
45 </varlistentry>
46 </variablelist>
47 </refsect1>
48
49 <refsect1>
50 <title>Description</title>
51
52 <note>
53 <title>Experimental</title>
54 <para>This is an <link linkend="experimental">experimental</link>
55 interface and may change in the future.</para>
56 </note>
57
58 <para>The selections are used to configure various image
59 processing functionality performed by the subdevs which affect the
60 image size. This currently includes cropping, scaling and
61 composition.</para>
62
63 <para>The selection API replaces <link
64 linkend="vidioc-subdev-g-crop">the old subdev crop API</link>. All
65 the function of the crop API, and more, are supported by the
66 selections API.</para>
67
68 <para>See <xref linkend="subdev"></xref> for
69 more information on how each selection target affects the image
70 processing pipeline inside the subdevice.</para>
71
72 <section>
73 <title>Types of selection targets</title>
74
75 <para>There are two types of selection targets: actual and bounds.
76 The ACTUAL targets are the targets which configure the hardware.
77 The BOUNDS target will return a rectangle that contain all
78 possible ACTUAL rectangles.</para>
79 </section>
80
81 <section>
82 <title>Discovering supported features</title>
83
84 <para>To discover which targets are supported, the user can
85 perform <constant>VIDIOC_SUBDEV_G_SELECTION</constant> on them.
86 Any unsupported target will return
87 <constant>EINVAL</constant>.</para>
88 </section>
89
90 <table pgwide="1" frame="none" id="v4l2-subdev-selection-targets">
91 <title>V4L2 subdev selection targets</title>
92 <tgroup cols="3">
93 &cs-def;
94 <tbody valign="top">
95 <row>
96 <entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_ACTUAL</constant></entry>
97 <entry>0x0000</entry>
98 <entry>Actual crop. Defines the cropping
99 performed by the processing step.</entry>
100 </row>
101 <row>
102 <entry><constant>V4L2_SUBDEV_SEL_TGT_CROP_BOUNDS</constant></entry>
103 <entry>0x0002</entry>
104 <entry>Bounds of the crop rectangle.</entry>
105 </row>
106 <row>
107 <entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_ACTUAL</constant></entry>
108 <entry>0x0100</entry>
109 <entry>Actual compose rectangle. Used to configure scaling
110 on sink pads and composition on source pads.</entry>
111 </row>
112 <row>
113 <entry><constant>V4L2_SUBDEV_SEL_TGT_COMPOSE_BOUNDS</constant></entry>
114 <entry>0x0102</entry>
115 <entry>Bounds of the compose rectangle.</entry>
116 </row>
117 </tbody>
118 </tgroup>
119 </table>
120
121 <table pgwide="1" frame="none" id="v4l2-subdev-selection-flags">
122 <title>V4L2 subdev selection flags</title>
123 <tgroup cols="3">
124 &cs-def;
125 <tbody valign="top">
126 <row>
127 <entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_GE</constant></entry>
128 <entry>(1 &lt;&lt; 0)</entry> <entry>Suggest the driver it
129 should choose greater or equal rectangle (in size) than
130 was requested. Albeit the driver may choose a lesser size,
131 it will only do so due to hardware limitations. Without
132 this flag (and
133 <constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant>) the
134 behaviour is to choose the closest possible
135 rectangle.</entry>
136 </row>
137 <row>
138 <entry><constant>V4L2_SUBDEV_SEL_FLAG_SIZE_LE</constant></entry>
139 <entry>(1 &lt;&lt; 1)</entry> <entry>Suggest the driver it
140 should choose lesser or equal rectangle (in size) than was
141 requested. Albeit the driver may choose a greater size, it
142 will only do so due to hardware limitations.</entry>
143 </row>
144 <row>
145 <entry><constant>V4L2_SUBDEV_SEL_FLAG_KEEP_CONFIG</constant></entry>
146 <entry>(1 &lt;&lt; 2)</entry>
147 <entry>The configuration should not be propagated to any
148 further processing steps. If this flag is not given, the
149 configuration is propagated inside the subdevice to all
150 further processing steps.</entry>
151 </row>
152 </tbody>
153 </tgroup>
154 </table>
155
156 <table pgwide="1" frame="none" id="v4l2-subdev-selection">
157 <title>struct <structname>v4l2_subdev_selection</structname></title>
158 <tgroup cols="3">
159 &cs-str;
160 <tbody valign="top">
161 <row>
162 <entry>__u32</entry>
163 <entry><structfield>which</structfield></entry>
164 <entry>Active or try selection, from
165 &v4l2-subdev-format-whence;.</entry>
166 </row>
167 <row>
168 <entry>__u32</entry>
169 <entry><structfield>pad</structfield></entry>
170 <entry>Pad number as reported by the media framework.</entry>
171 </row>
172 <row>
173 <entry>__u32</entry>
174 <entry><structfield>target</structfield></entry>
175 <entry>Target selection rectangle. See
176 <xref linkend="v4l2-subdev-selection-targets">.</xref>.</entry>
177 </row>
178 <row>
179 <entry>__u32</entry>
180 <entry><structfield>flags</structfield></entry>
181 <entry>Flags. See
182 <xref linkend="v4l2-subdev-selection-flags">.</xref></entry>
183 </row>
184 <row>
185 <entry>&v4l2-rect;</entry>
186 <entry><structfield>rect</structfield></entry>
187 <entry>Selection rectangle, in pixels.</entry>
188 </row>
189 <row>
190 <entry>__u32</entry>
191 <entry><structfield>reserved</structfield>[8]</entry>
192 <entry>Reserved for future extensions. Applications and drivers must
193 set the array to zero.</entry>
194 </row>
195 </tbody>
196 </tgroup>
197 </table>
198
199 </refsect1>
200
201 <refsect1>
202 &return-value;
203
204 <variablelist>
205 <varlistentry>
206 <term><errorcode>EBUSY</errorcode></term>
207 <listitem>
208 <para>The selection rectangle can't be changed because the
209 pad is currently busy. This can be caused, for instance, by
210 an active video stream on the pad. The ioctl must not be
211 retried without performing another action to fix the problem
212 first. Only returned by
213 <constant>VIDIOC_SUBDEV_S_SELECTION</constant></para>
214 </listitem>
215 </varlistentry>
216 <varlistentry>
217 <term><errorcode>EINVAL</errorcode></term>
218 <listitem>
219 <para>The &v4l2-subdev-selection;
220 <structfield>pad</structfield> references a non-existing
221 pad, the <structfield>which</structfield> field references a
222 non-existing format, or the selection target is not
223 supported on the given subdev pad.</para>
224 </listitem>
225 </varlistentry>
226 </variablelist>
227 </refsect1>
228</refentry>
diff --git a/Documentation/dvb/get_dvb_firmware b/Documentation/dvb/get_dvb_firmware
index d1d4a179a382..fbb241174486 100755
--- a/Documentation/dvb/get_dvb_firmware
+++ b/Documentation/dvb/get_dvb_firmware
@@ -28,7 +28,8 @@ use IO::Handle;
28 "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718", 28 "opera1", "cx231xx", "cx18", "cx23885", "pvrusb2", "mpc718",
29 "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395", 29 "af9015", "ngene", "az6027", "lme2510_lg", "lme2510c_s7395",
30 "lme2510c_s7395_old", "drxk", "drxk_terratec_h5", 30 "lme2510c_s7395_old", "drxk", "drxk_terratec_h5",
31 "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137"); 31 "drxk_hauppauge_hvr930c", "tda10071", "it9135", "it9137",
32 "drxk_pctv");
32 33
33# Check args 34# Check args
34syntax() if (scalar(@ARGV) != 1); 35syntax() if (scalar(@ARGV) != 1);
@@ -730,6 +731,23 @@ sub tda10071 {
730 "$fwfile"; 731 "$fwfile";
731} 732}
732 733
734sub drxk_pctv {
735 my $sourcefile = "PCTV_460e_reference.zip";
736 my $url = "ftp://ftp.pctvsystems.com/TV/driver/PCTV%2070e%2080e%20100e%20320e%20330e%20800e/";
737 my $hash = "4403de903bf2593464c8d74bbc200a57";
738 my $fwfile = "dvb-demod-drxk-pctv.fw";
739 my $tmpdir = tempdir(DIR => "/tmp", CLEANUP => 1);
740
741 checkstandard();
742
743 wgetfile($sourcefile, $url . $sourcefile);
744 verify($sourcefile, $hash);
745 unzip($sourcefile, $tmpdir);
746 extract("$tmpdir/PCTV\ 70e\ 80e\ 100e\ 320e\ 330e\ 800e/32\ bit/emOEM.sys", 0x72b80, 42692, $fwfile);
747
748 "$fwfile";
749}
750
733# --------------------------------------------------------------- 751# ---------------------------------------------------------------
734# Utilities 752# Utilities
735 753
diff --git a/Documentation/feature-removal-schedule.txt b/Documentation/feature-removal-schedule.txt
index 1e69a81e99d4..c59f6e59fc1e 100644
--- a/Documentation/feature-removal-schedule.txt
+++ b/Documentation/feature-removal-schedule.txt
@@ -549,6 +549,15 @@ Who: Sasikantha Babu <sasikanth.v19@gmail.com>
549 549
550---------------------------- 550----------------------------
551 551
552What: remove bogus DV presets V4L2_DV_1080I29_97, V4L2_DV_1080I30 and
553 V4L2_DV_1080I25
554When: 3.6
555Why: These HDTV formats do not exist and were added by a confused mind
556 (that was me, to be precise...)
557Who: Hans Verkuil <hans.verkuil@cisco.com>
558
559----------------------------
560
552What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls 561What: V4L2_CID_HCENTER, V4L2_CID_VCENTER V4L2 controls
553When: 3.7 562When: 3.7
554Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated 563Why: The V4L2_CID_VCENTER, V4L2_CID_HCENTER controls have been deprecated
diff --git a/Documentation/media-framework.txt b/Documentation/media-framework.txt
index 3a0f879533ce..802875413873 100644
--- a/Documentation/media-framework.txt
+++ b/Documentation/media-framework.txt
@@ -335,6 +335,9 @@ the media_entity pipe field.
335Calls to media_entity_pipeline_start() can be nested. The pipeline pointer must 335Calls to media_entity_pipeline_start() can be nested. The pipeline pointer must
336be identical for all nested calls to the function. 336be identical for all nested calls to the function.
337 337
338media_entity_pipeline_start() may return an error. In that case, it will
339clean up any the changes it did by itself.
340
338When stopping the stream, drivers must notify the entities with 341When stopping the stream, drivers must notify the entities with
339 342
340 media_entity_pipeline_stop(struct media_entity *entity); 343 media_entity_pipeline_stop(struct media_entity *entity);
@@ -351,3 +354,19 @@ If other operations need to be disallowed on streaming entities (such as
351changing entities configuration parameters) drivers can explicitly check the 354changing entities configuration parameters) drivers can explicitly check the
352media_entity stream_count field to find out if an entity is streaming. This 355media_entity stream_count field to find out if an entity is streaming. This
353operation must be done with the media_device graph_mutex held. 356operation must be done with the media_device graph_mutex held.
357
358
359Link validation
360---------------
361
362Link validation is performed by media_entity_pipeline_start() for any
363entity which has sink pads in the pipeline. The
364media_entity::link_validate() callback is used for that purpose. In
365link_validate() callback, entity driver should check that the properties of
366the source pad of the connected entity and its own sink pad match. It is up
367to the type of the entity (and in the end, the properties of the hardware)
368what matching actually means.
369
370Subsystems should facilitate link validation by providing subsystem specific
371helper functions to provide easy access for commonly needed information, and
372in the end provide a way to use driver-specific callbacks.
diff --git a/Documentation/video4linux/4CCs.txt b/Documentation/video4linux/4CCs.txt
new file mode 100644
index 000000000000..41241af1ebfe
--- /dev/null
+++ b/Documentation/video4linux/4CCs.txt
@@ -0,0 +1,32 @@
1Guidelines for Linux4Linux pixel format 4CCs
2============================================
3
4Guidelines for Video4Linux 4CC codes defined using v4l2_fourcc() are
5specified in this document. First of the characters defines the nature of
6the pixel format, compression and colour space. The interpretation of the
7other three characters depends on the first one.
8
9Existing 4CCs may not obey these guidelines.
10
11Formats
12=======
13
14Raw bayer
15---------
16
17The following first characters are used by raw bayer formats:
18
19 B: raw bayer, uncompressed
20 b: raw bayer, DPCM compressed
21 a: A-law compressed
22 u: u-law compressed
23
242nd character: pixel order
25 B: BGGR
26 G: GBRG
27 g: GRBG
28 R: RGGB
29
303rd character: uncompressed bits-per-pixel 0--9, A--
31
324th character: compressed bits-per-pixel 0--9, A--
diff --git a/Documentation/video4linux/gspca.txt b/Documentation/video4linux/gspca.txt
index e6c2842407a4..1e6b6531bbcc 100644
--- a/Documentation/video4linux/gspca.txt
+++ b/Documentation/video4linux/gspca.txt
@@ -276,6 +276,7 @@ pac7302 093a:2622 Genius Eye 312
276pac7302 093a:2624 PAC7302 276pac7302 093a:2624 PAC7302
277pac7302 093a:2625 Genius iSlim 310 277pac7302 093a:2625 Genius iSlim 310
278pac7302 093a:2626 Labtec 2200 278pac7302 093a:2626 Labtec 2200
279pac7302 093a:2627 Genius FaceCam 300
279pac7302 093a:2628 Genius iLook 300 280pac7302 093a:2628 Genius iLook 300
280pac7302 093a:2629 Genious iSlim 300 281pac7302 093a:2629 Genious iSlim 300
281pac7302 093a:262a Webcam 300k 282pac7302 093a:262a Webcam 300k
diff --git a/Documentation/video4linux/v4l2-controls.txt b/Documentation/video4linux/v4l2-controls.txt
index e2492a9d1027..43da22b89728 100644
--- a/Documentation/video4linux/v4l2-controls.txt
+++ b/Documentation/video4linux/v4l2-controls.txt
@@ -130,8 +130,18 @@ Menu controls are added by calling v4l2_ctrl_new_std_menu:
130 const struct v4l2_ctrl_ops *ops, 130 const struct v4l2_ctrl_ops *ops,
131 u32 id, s32 max, s32 skip_mask, s32 def); 131 u32 id, s32 max, s32 skip_mask, s32 def);
132 132
133Or alternatively for integer menu controls, by calling v4l2_ctrl_new_int_menu:
134
135 struct v4l2_ctrl *v4l2_ctrl_new_int_menu(struct v4l2_ctrl_handler *hdl,
136 const struct v4l2_ctrl_ops *ops,
137 u32 id, s32 max, s32 def, const s64 *qmenu_int);
138
133These functions are typically called right after the v4l2_ctrl_handler_init: 139These functions are typically called right after the v4l2_ctrl_handler_init:
134 140
141 static const s64 exp_bias_qmenu[] = {
142 -2, -1, 0, 1, 2
143 };
144
135 v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls); 145 v4l2_ctrl_handler_init(&foo->ctrl_handler, nr_of_controls);
136 v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops, 146 v4l2_ctrl_new_std(&foo->ctrl_handler, &foo_ctrl_ops,
137 V4L2_CID_BRIGHTNESS, 0, 255, 1, 128); 147 V4L2_CID_BRIGHTNESS, 0, 255, 1, 128);
@@ -141,6 +151,11 @@ These functions are typically called right after the v4l2_ctrl_handler_init:
141 V4L2_CID_POWER_LINE_FREQUENCY, 151 V4L2_CID_POWER_LINE_FREQUENCY,
142 V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0, 152 V4L2_CID_POWER_LINE_FREQUENCY_60HZ, 0,
143 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED); 153 V4L2_CID_POWER_LINE_FREQUENCY_DISABLED);
154 v4l2_ctrl_new_int_menu(&foo->ctrl_handler, &foo_ctrl_ops,
155 V4L2_CID_EXPOSURE_BIAS,
156 ARRAY_SIZE(exp_bias_qmenu) - 1,
157 ARRAY_SIZE(exp_bias_qmenu) / 2 - 1,
158 exp_bias_qmenu);
144 ... 159 ...
145 if (foo->ctrl_handler.error) { 160 if (foo->ctrl_handler.error) {
146 int err = foo->ctrl_handler.error; 161 int err = foo->ctrl_handler.error;
@@ -164,6 +179,12 @@ controls. There is no min argument since that is always 0 for menu controls,
164and instead of a step there is a skip_mask argument: if bit X is 1, then menu 179and instead of a step there is a skip_mask argument: if bit X is 1, then menu
165item X is skipped. 180item X is skipped.
166 181
182The v4l2_ctrl_new_int_menu function creates a new standard integer menu
183control with driver-specific items in the menu. It differs from
184v4l2_ctrl_new_std_menu in that it doesn't have the mask argument and takes
185as the last argument an array of signed 64-bit integers that form an exact
186menu item list.
187
167Note that if something fails, the function will return NULL or an error and 188Note that if something fails, the function will return NULL or an error and
168set ctrl_handler->error to the error code. If ctrl_handler->error was already 189set ctrl_handler->error to the error code. If ctrl_handler->error was already
169set, then it will just return and do nothing. This is also true for 190set, then it will just return and do nothing. This is also true for
diff --git a/Documentation/video4linux/v4l2-framework.txt b/Documentation/video4linux/v4l2-framework.txt
index 659b2ba12a4f..1f5905270050 100644
--- a/Documentation/video4linux/v4l2-framework.txt
+++ b/Documentation/video4linux/v4l2-framework.txt
@@ -182,11 +182,11 @@ static int __devinit drv_probe(struct pci_dev *pdev,
182} 182}
183 183
184If you have multiple device nodes then it can be difficult to know when it is 184If you have multiple device nodes then it can be difficult to know when it is
185safe to unregister v4l2_device. For this purpose v4l2_device has refcounting 185safe to unregister v4l2_device for hotpluggable devices. For this purpose
186support. The refcount is increased whenever video_register_device is called and 186v4l2_device has refcounting support. The refcount is increased whenever
187it is decreased whenever that device node is released. When the refcount reaches 187video_register_device is called and it is decreased whenever that device node
188zero, then the v4l2_device release() callback is called. You can do your final 188is released. When the refcount reaches zero, then the v4l2_device release()
189cleanup there. 189callback is called. You can do your final cleanup there.
190 190
191If other device nodes (e.g. ALSA) are created, then you can increase and 191If other device nodes (e.g. ALSA) are created, then you can increase and
192decrease the refcount manually as well by calling: 192decrease the refcount manually as well by calling:
@@ -197,6 +197,10 @@ or:
197 197
198int v4l2_device_put(struct v4l2_device *v4l2_dev); 198int v4l2_device_put(struct v4l2_device *v4l2_dev);
199 199
200Since the initial refcount is 1 you also need to call v4l2_device_put in the
201disconnect() callback (for USB devices) or in the remove() callback (for e.g.
202PCI devices), otherwise the refcount will never reach 0.
203
200struct v4l2_subdev 204struct v4l2_subdev
201------------------ 205------------------
202 206
@@ -262,11 +266,16 @@ struct v4l2_subdev_video_ops {
262 ... 266 ...
263}; 267};
264 268
269struct v4l2_subdev_pad_ops {
270 ...
271};
272
265struct v4l2_subdev_ops { 273struct v4l2_subdev_ops {
266 const struct v4l2_subdev_core_ops *core; 274 const struct v4l2_subdev_core_ops *core;
267 const struct v4l2_subdev_tuner_ops *tuner; 275 const struct v4l2_subdev_tuner_ops *tuner;
268 const struct v4l2_subdev_audio_ops *audio; 276 const struct v4l2_subdev_audio_ops *audio;
269 const struct v4l2_subdev_video_ops *video; 277 const struct v4l2_subdev_video_ops *video;
278 const struct v4l2_subdev_pad_ops *video;
270}; 279};
271 280
272The core ops are common to all subdevs, the other categories are implemented 281The core ops are common to all subdevs, the other categories are implemented
@@ -303,6 +312,22 @@ Don't forget to cleanup the media entity before the sub-device is destroyed:
303 312
304 media_entity_cleanup(&sd->entity); 313 media_entity_cleanup(&sd->entity);
305 314
315If the subdev driver intends to process video and integrate with the media
316framework, it must implement format related functionality using
317v4l2_subdev_pad_ops instead of v4l2_subdev_video_ops.
318
319In that case, the subdev driver may set the link_validate field to provide
320its own link validation function. The link validation function is called for
321every link in the pipeline where both of the ends of the links are V4L2
322sub-devices. The driver is still responsible for validating the correctness
323of the format configuration between sub-devices and video nodes.
324
325If link_validate op is not set, the default function
326v4l2_subdev_link_validate_default() is used instead. This function ensures
327that width, height and the media bus pixel code are equal on both source and
328sink of the link. Subdev drivers are also free to use this function to
329perform the checks mentioned above in addition to their own checks.
330
306A device (bridge) driver needs to register the v4l2_subdev with the 331A device (bridge) driver needs to register the v4l2_subdev with the
307v4l2_device: 332v4l2_device:
308 333
@@ -555,19 +580,25 @@ allocated memory.
555You should also set these fields: 580You should also set these fields:
556 581
557- v4l2_dev: set to the v4l2_device parent device. 582- v4l2_dev: set to the v4l2_device parent device.
583
558- name: set to something descriptive and unique. 584- name: set to something descriptive and unique.
585
559- fops: set to the v4l2_file_operations struct. 586- fops: set to the v4l2_file_operations struct.
587
560- ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance 588- ioctl_ops: if you use the v4l2_ioctl_ops to simplify ioctl maintenance
561 (highly recommended to use this and it might become compulsory in the 589 (highly recommended to use this and it might become compulsory in the
562 future!), then set this to your v4l2_ioctl_ops struct. 590 future!), then set this to your v4l2_ioctl_ops struct.
591
563- lock: leave to NULL if you want to do all the locking in the driver. 592- lock: leave to NULL if you want to do all the locking in the driver.
564 Otherwise you give it a pointer to a struct mutex_lock and before any 593 Otherwise you give it a pointer to a struct mutex_lock and before the
565 of the v4l2_file_operations is called this lock will be taken by the 594 unlocked_ioctl file operation is called this lock will be taken by the
566 core and released afterwards. 595 core and released afterwards. See the next section for more details.
596
567- prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY. 597- prio: keeps track of the priorities. Used to implement VIDIOC_G/S_PRIORITY.
568 If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device. 598 If left to NULL, then it will use the struct v4l2_prio_state in v4l2_device.
569 If you want to have a separate priority state per (group of) device node(s), 599 If you want to have a separate priority state per (group of) device node(s),
570 then you can point it to your own struct v4l2_prio_state. 600 then you can point it to your own struct v4l2_prio_state.
601
571- parent: you only set this if v4l2_device was registered with NULL as 602- parent: you only set this if v4l2_device was registered with NULL as
572 the parent device struct. This only happens in cases where one hardware 603 the parent device struct. This only happens in cases where one hardware
573 device has multiple PCI devices that all share the same v4l2_device core. 604 device has multiple PCI devices that all share the same v4l2_device core.
@@ -577,6 +608,7 @@ You should also set these fields:
577 (cx8802). Since the v4l2_device cannot be associated with a particular 608 (cx8802). Since the v4l2_device cannot be associated with a particular
578 PCI device it is setup without a parent device. But when the struct 609 PCI device it is setup without a parent device. But when the struct
579 video_device is setup you do know which parent PCI device to use. 610 video_device is setup you do know which parent PCI device to use.
611
580- flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework 612- flags: optional. Set to V4L2_FL_USE_FH_PRIO if you want to let the framework
581 handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct 613 handle the VIDIOC_G/S_PRIORITY ioctls. This requires that you use struct
582 v4l2_fh. Eventually this flag will disappear once all drivers use the core 614 v4l2_fh. Eventually this flag will disappear once all drivers use the core
@@ -587,6 +619,16 @@ in your v4l2_file_operations struct.
587 619
588Do not use .ioctl! This is deprecated and will go away in the future. 620Do not use .ioctl! This is deprecated and will go away in the future.
589 621
622In some cases you want to tell the core that a function you had specified in
623your v4l2_ioctl_ops should be ignored. You can mark such ioctls by calling this
624function before video_device_register is called:
625
626void v4l2_disable_ioctl(struct video_device *vdev, unsigned int cmd);
627
628This tends to be needed if based on external factors (e.g. which card is
629being used) you want to turns off certain features in v4l2_ioctl_ops without
630having to make a new struct.
631
590The v4l2_file_operations struct is a subset of file_operations. The main 632The v4l2_file_operations struct is a subset of file_operations. The main
591difference is that the inode argument is omitted since it is never used. 633difference is that the inode argument is omitted since it is never used.
592 634
@@ -609,8 +651,22 @@ v4l2_file_operations and locking
609-------------------------------- 651--------------------------------
610 652
611You can set a pointer to a mutex_lock in struct video_device. Usually this 653You can set a pointer to a mutex_lock in struct video_device. Usually this
612will be either a top-level mutex or a mutex per device node. If you want 654will be either a top-level mutex or a mutex per device node. By default this
613finer-grained locking then you have to set it to NULL and do you own locking. 655lock will be used for unlocked_ioctl, but you can disable locking for
656selected ioctls by calling:
657
658 void v4l2_disable_ioctl_locking(struct video_device *vdev, unsigned int cmd);
659
660E.g.: v4l2_disable_ioctl_locking(vdev, VIDIOC_DQBUF);
661
662You have to call this before you register the video_device.
663
664Particularly with USB drivers where certain commands such as setting controls
665can take a long time you may want to do your own locking for the buffer queuing
666ioctls.
667
668If you want still finer-grained locking then you have to set mutex_lock to NULL
669and do you own locking completely.
614 670
615It is up to the driver developer to decide which method to use. However, if 671It is up to the driver developer to decide which method to use. However, if
616your driver has high-latency operations (for example, changing the exposure 672your driver has high-latency operations (for example, changing the exposure
@@ -618,7 +674,7 @@ of a USB webcam might take a long time), then you might be better off with
618doing your own locking if you want to allow the user to do other things with 674doing your own locking if you want to allow the user to do other things with
619the device while waiting for the high-latency command to finish. 675the device while waiting for the high-latency command to finish.
620 676
621If a lock is specified then all file operations will be serialized on that 677If a lock is specified then all ioctl commands will be serialized on that
622lock. If you use videobuf then you must pass the same lock to the videobuf 678lock. If you use videobuf then you must pass the same lock to the videobuf
623queue initialize function: if videobuf has to wait for a frame to arrive, then 679queue initialize function: if videobuf has to wait for a frame to arrive, then
624it will temporarily unlock the lock and relock it afterwards. If your driver 680it will temporarily unlock the lock and relock it afterwards. If your driver
@@ -941,21 +997,35 @@ fast.
941 997
942Useful functions: 998Useful functions:
943 999
944- v4l2_event_queue() 1000void v4l2_event_queue(struct video_device *vdev, const struct v4l2_event *ev)
945 1001
946 Queue events to video device. The driver's only responsibility is to fill 1002 Queue events to video device. The driver's only responsibility is to fill
947 in the type and the data fields. The other fields will be filled in by 1003 in the type and the data fields. The other fields will be filled in by
948 V4L2. 1004 V4L2.
949 1005
950- v4l2_event_subscribe() 1006int v4l2_event_subscribe(struct v4l2_fh *fh,
1007 struct v4l2_event_subscription *sub, unsigned elems,
1008 const struct v4l2_subscribed_event_ops *ops)
951 1009
952 The video_device->ioctl_ops->vidioc_subscribe_event must check the driver 1010 The video_device->ioctl_ops->vidioc_subscribe_event must check the driver
953 is able to produce events with specified event id. Then it calls 1011 is able to produce events with specified event id. Then it calls
954 v4l2_event_subscribe() to subscribe the event. The last argument is the 1012 v4l2_event_subscribe() to subscribe the event.
955 size of the event queue for this event. If it is 0, then the framework 1013
956 will fill in a default value (this depends on the event type). 1014 The elems argument is the size of the event queue for this event. If it is 0,
1015 then the framework will fill in a default value (this depends on the event
1016 type).
1017
1018 The ops argument allows the driver to specify a number of callbacks:
1019 * add: called when a new listener gets added (subscribing to the same
1020 event twice will only cause this callback to get called once)
1021 * del: called when a listener stops listening
1022 * replace: replace event 'old' with event 'new'.
1023 * merge: merge event 'old' into event 'new'.
1024 All 4 callbacks are optional, if you don't want to specify any callbacks
1025 the ops argument itself maybe NULL.
957 1026
958- v4l2_event_unsubscribe() 1027int v4l2_event_unsubscribe(struct v4l2_fh *fh,
1028 struct v4l2_event_subscription *sub)
959 1029
960 vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use 1030 vidioc_unsubscribe_event in struct v4l2_ioctl_ops. A driver may use
961 v4l2_event_unsubscribe() directly unless it wants to be involved in 1031 v4l2_event_unsubscribe() directly unless it wants to be involved in
@@ -964,7 +1034,7 @@ Useful functions:
964 The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The 1034 The special type V4L2_EVENT_ALL may be used to unsubscribe all events. The
965 drivers may want to handle this in a special way. 1035 drivers may want to handle this in a special way.
966 1036
967- v4l2_event_pending() 1037int v4l2_event_pending(struct v4l2_fh *fh)
968 1038
969 Returns the number of pending events. Useful when implementing poll. 1039 Returns the number of pending events. Useful when implementing poll.
970 1040