Lines Matching +full:sub +full:- +full:nodes

1 .. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
6 Sub-device Interface
13 components as software blocks called sub-devices.
15 V4L2 sub-devices are usually kernel-only objects. If the V4L2 driver
17 media entities. Applications will be able to enumerate the sub-devices
21 In addition to make sub-devices discoverable, drivers can also choose to
23 sub-device driver and the V4L2 device driver support this, sub-devices
26 - query, read and write sub-devices controls
28 - subscribe and unsubscribe to events and retrieve them
30 - negotiate image formats on individual pads
32 Sub-device character device nodes, conventionally named
33 ``/dev/v4l-subdev*``, use major number 81.
35 Drivers may opt to limit the sub-device character devices to only expose
36 operations that do not modify the device state. In such a case the sub-devices
37 are referred to as ``read-only`` in the rest of this documentation, and the
44 Most V4L2 controls are implemented by sub-device hardware. Drivers
45 usually merge all controls and expose them through video device nodes.
46 Applications can control all sub-devices through a single interface.
55 Applications can access those hidden controls through the sub-device
57 behave identically as when issued on V4L2 device nodes, with the
59 sub-device.
62 one (or several) V4L2 device nodes.
68 V4L2 sub-devices can notify applications of events as described in
70 nodes, with the exception that it only deals with events generated by
71 the sub-device. Depending on the driver, those events might also be
72 reported on one (or several) V4L2 device nodes.
75 .. _pad-level-formats:
77 Pad-level Formats
82 Pad-level formats are only applicable to very complex devices that
83 need to expose low-level format configuration to user space. Generic
101 :ref:`pipeline-scaling`, where image scaling can be performed on both
105 .. _pipeline-scaling:
107 .. kernel-figure:: pipeline.dot
123 Drivers that implement the :ref:`media API <media-controller-intro>`
124 can expose pad-level image format configuration to applications. When
128 negotiate formats on a per-pad basis.
136 Pad-level image format configuration support can be tested by calling
138 0. If the driver returns an ``EINVAL`` error code pad-level format
139 configuration is not supported by the sub-device.
143 ------------------
162 the sub-device file handles. A
164 the last try format set *on the same sub-device file handle*. Several
165 applications querying the same sub-device at the same time will thus not
179 to an :ref:`VIDIOC_SUBDEV_S_FMT <VIDIOC_SUBDEV_G_FMT>` call as-is
183 Drivers automatically propagate formats inside sub-devices. When a try
185 the same sub-device can be modified by the driver. Drivers are free to
189 - Formats should be propagated from sink pads to source pads. Modifying
193 - Sub-devices that scale frames using variable scaling factors should
199 propagating them from one sub-device file handle to another.
205 :ref:`sample-pipeline-config` shows a sample configuration sequence
206 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