Lines Matching +full:sub +full:- +full:nodes
4 .. Foundation, with no Invariant Sections, no Front-Cover Texts
5 .. and no Back-Cover Texts. A copy of the license is included at
6 .. Documentation/media/uapi/fdl-appendix.rst.
8 .. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
13 Sub-device Interface
20 components as software blocks called sub-devices.
22 V4L2 sub-devices are usually kernel-only objects. If the V4L2 driver
24 media entities. Applications will be able to enumerate the sub-devices
28 In addition to make sub-devices discoverable, drivers can also choose to
30 sub-device driver and the V4L2 device driver support this, sub-devices
33 - query, read and write sub-devices controls
35 - subscribe and unsubscribe to events and retrieve them
37 - negotiate image formats on individual pads
39 Sub-device character device nodes, conventionally named
40 ``/dev/v4l-subdev*``, use major number 81.
46 Most V4L2 controls are implemented by sub-device hardware. Drivers
47 usually merge all controls and expose them through video device nodes.
48 Applications can control all sub-devices through a single interface.
57 Applications can access those hidden controls through the sub-device
59 behave identically as when issued on V4L2 device nodes, with the
61 sub-device.
64 one (or several) V4L2 device nodes.
70 V4L2 sub-devices can notify applications of events as described in
72 nodes, with the exception that it only deals with events generated by
73 the sub-device. Depending on the driver, those events might also be
74 reported on one (or several) V4L2 device nodes.
77 .. _pad-level-formats:
79 Pad-level Formats
84 Pad-level formats are only applicable to very complex devices that
85 need to expose low-level format configuration to user space. Generic
103 :ref:`pipeline-scaling`, where image scaling can be performed on both
107 .. _pipeline-scaling:
109 .. kernel-figure:: pipeline.dot
125 Drivers that implement the :ref:`media API <media-controller-intro>`
126 can expose pad-level image format configuration to applications. When
130 negotiate formats on a per-pad basis.
138 Pad-level image format configuration support can be tested by calling
140 0. If the driver returns an ``EINVAL`` error code pad-level format
141 configuration is not supported by the sub-device.
145 ------------------
164 the sub-device file handles. A
166 the last try format set *on the same sub-device file handle*. Several
167 applications querying the same sub-device at the same time will thus not
181 to an :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` call as-is
185 Drivers automatically propagate formats inside sub-devices. When a try
187 the same sub-device can be modified by the driver. Drivers are free to
191 - Formats should be propagated from sink pads to source pads. Modifying
195 - Sub-devices that scale frames using variable scaling factors should
201 propagating them from one sub-device file handle to another.
207 :ref:`sample-pipeline-config` shows a sample configuration sequence
208 for the pipeline described in :ref:`pipeline-scaling` (table columns
218 .. _sample-pipeline-config:
220 .. flat-table:: Sample Pipeline Configuration
221 :header-rows: 1
222 :stub-columns: 0
225 * -
226 - Sensor/0
229 - Frontend/0
232 - Frontend/1
235 - Scaler/0
238 - Scaler/0
241 - Scaler/1
244 * - Initial state
245 - 2048x1536
248 - (default)
249 - (default)
250 - (default)
251 - (default)
252 - (default)
253 * - Configure frontend sink format
254 - 2048x1536
257 - *2048x1536*
260 - *2046x1534*
263 - (default)
264 - (default)
265 - (default)
266 * - Configure scaler sink format
267 - 2048x1536
270 - 2048x1536
273 - 2046x1534
276 - *2046x1534*
279 - *0,0/2046x1534*
280 - *2046x1534*
283 * - Configure scaler sink compose selection
284 - 2048x1536
287 - 2048x1536
290 - 2046x1534
293 - 2046x1534
296 - *0,0/1280x960*
297 - *1280x960*
332 be applied as-is by the driver without being modified.
335 .. _v4l2-subdev-selections:
338 ---------------------------------------------
340 Many sub-devices support cropping frames on their input or output pads
352 selection targets :ref:`v4l2-selections-common`.
355 The pad format represents the image size as received by the sub-device
357 represents the sub-image that will be transmitted further inside the
358 sub-device for processing.
382 the image size either up or down. :ref:`v4l2-selection-flags`
386 --------------------------
403 pixel array is not rectangular but cross-shaped or round. The maximum
408 ---------------------------------------------
421 rectangle, which refers to the sink compose bounds rectangle --- if it
452 .. _subdev-image-processing-crop:
454 .. kernel-figure:: subdev-image-processing-crop.svg
455 :alt: subdev-image-processing-crop.svg
462 pad. Now the actual crop rectangle can be set on the sink pad --- the
469 .. _subdev-image-processing-scaling-multi-source:
471 .. kernel-figure:: subdev-image-processing-scaling-multi-source.svg
472 :alt: subdev-image-processing-scaling-multi-source.svg
485 .. _subdev-image-processing-full:
487 .. kernel-figure:: subdev-image-processing-full.svg
488 :alt: subdev-image-processing-full.svg
503 subdev-formats