407 lines
15 KiB
YAML
407 lines
15 KiB
YAML
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|||
|
%YAML 1.2
|
|||
|
---
|
|||
|
$id: http://devicetree.org/schemas/media/video-interface-devices.yaml#
|
|||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|||
|
|
|||
|
title: Common bindings for video receiver and transmitter devices
|
|||
|
|
|||
|
maintainers:
|
|||
|
- Jacopo Mondi <jacopo@jmondi.org>
|
|||
|
- Sakari Ailus <sakari.ailus@linux.intel.com>
|
|||
|
|
|||
|
properties:
|
|||
|
flash-leds:
|
|||
|
$ref: /schemas/types.yaml#/definitions/phandle-array
|
|||
|
description:
|
|||
|
An array of phandles, each referring to a flash LED, a sub-node of the LED
|
|||
|
driver device node.
|
|||
|
|
|||
|
lens-focus:
|
|||
|
$ref: /schemas/types.yaml#/definitions/phandle
|
|||
|
description:
|
|||
|
A phandle to the node of the focus lens controller.
|
|||
|
|
|||
|
rotation:
|
|||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|||
|
enum: [ 0, 90, 180, 270 ]
|
|||
|
description: |
|
|||
|
The camera rotation is expressed as the angular difference in degrees
|
|||
|
between two reference systems, one relative to the camera module, and one
|
|||
|
defined on the external world scene to be captured when projected on the
|
|||
|
image sensor pixel array.
|
|||
|
|
|||
|
A camera sensor has a 2-dimensional reference system 'Rc' defined by its
|
|||
|
pixel array read-out order. The origin is set to the first pixel being
|
|||
|
read out, the X-axis points along the column read-out direction towards
|
|||
|
the last columns, and the Y-axis along the row read-out direction towards
|
|||
|
the last row.
|
|||
|
|
|||
|
A typical example for a sensor with a 2592x1944 pixel array matrix
|
|||
|
observed from the front is:
|
|||
|
|
|||
|
2591 X-axis 0
|
|||
|
<------------------------+ 0
|
|||
|
.......... ... ..........!
|
|||
|
.......... ... ..........! Y-axis
|
|||
|
... !
|
|||
|
.......... ... ..........!
|
|||
|
.......... ... ..........! 1943
|
|||
|
V
|
|||
|
|
|||
|
The external world scene reference system 'Rs' is a 2-dimensional
|
|||
|
reference system on the focal plane of the camera module. The origin is
|
|||
|
placed on the top-left corner of the visible scene, the X-axis points
|
|||
|
towards the right, and the Y-axis points towards the bottom of the scene.
|
|||
|
The top, bottom, left and right directions are intentionally not defined
|
|||
|
and depend on the environment in which the camera is used.
|
|||
|
|
|||
|
A typical example of a (very common) picture of a shark swimming from left
|
|||
|
to right, as seen from the camera, is:
|
|||
|
|
|||
|
0 X-axis
|
|||
|
0 +------------------------------------->
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
! |\____)\___
|
|||
|
! ) _____ __`<
|
|||
|
! |/ )/
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
V
|
|||
|
Y-axis
|
|||
|
|
|||
|
with the reference system 'Rs' placed on the camera focal plane:
|
|||
|
|
|||
|
¸.·˙!
|
|||
|
¸.·˙ !
|
|||
|
_ ¸.·˙ !
|
|||
|
+-/ \-+¸.·˙ !
|
|||
|
| (o) | ! Camera focal plane
|
|||
|
+-----+˙·.¸ !
|
|||
|
˙·.¸ !
|
|||
|
˙·.¸ !
|
|||
|
˙·.¸!
|
|||
|
|
|||
|
When projected on the sensor's pixel array, the image and the associated
|
|||
|
reference system 'Rs' are typically (but not always) inverted, due to the
|
|||
|
camera module's lens optical inversion effect.
|
|||
|
|
|||
|
Assuming the above represented scene of the swimming shark, the lens
|
|||
|
inversion projects the scene and its reference system onto the sensor
|
|||
|
pixel array, seen from the front of the camera sensor, as follows:
|
|||
|
|
|||
|
Y-axis
|
|||
|
^
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
! |\_____)\__
|
|||
|
! ) ____ ___.<
|
|||
|
! |/ )/
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
0 +------------------------------------->
|
|||
|
0 X-axis
|
|||
|
|
|||
|
Note the shark being upside-down.
|
|||
|
|
|||
|
The resulting projected reference system is named 'Rp'.
|
|||
|
|
|||
|
The camera rotation property is then defined as the angular difference in
|
|||
|
the counter-clockwise direction between the camera reference system 'Rc'
|
|||
|
and the projected scene reference system 'Rp'. It is expressed in degrees
|
|||
|
as a number in the range [0, 360[.
|
|||
|
|
|||
|
Examples
|
|||
|
|
|||
|
0 degrees camera rotation:
|
|||
|
|
|||
|
|
|||
|
Y-Rp
|
|||
|
^
|
|||
|
Y-Rc !
|
|||
|
^ !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! 0 +------------------------------------->
|
|||
|
! 0 X-Rp
|
|||
|
0 +------------------------------------->
|
|||
|
0 X-Rc
|
|||
|
|
|||
|
|
|||
|
X-Rc 0
|
|||
|
<------------------------------------+ 0
|
|||
|
X-Rp 0 !
|
|||
|
<------------------------------------+ 0 !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! V
|
|||
|
! Y-Rc
|
|||
|
V
|
|||
|
Y-Rp
|
|||
|
|
|||
|
90 degrees camera rotation:
|
|||
|
|
|||
|
0 Y-Rc
|
|||
|
0 +-------------------->
|
|||
|
! Y-Rp
|
|||
|
! ^
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! 0 +------------------------------------->
|
|||
|
! 0 X-Rp
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
V
|
|||
|
X-Rc
|
|||
|
|
|||
|
180 degrees camera rotation:
|
|||
|
|
|||
|
0
|
|||
|
<------------------------------------+ 0
|
|||
|
X-Rc !
|
|||
|
Y-Rp !
|
|||
|
^ !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! V
|
|||
|
! Y-Rc
|
|||
|
0 +------------------------------------->
|
|||
|
0 X-Rp
|
|||
|
|
|||
|
270 degrees camera rotation:
|
|||
|
|
|||
|
0 Y-Rc
|
|||
|
0 +-------------------->
|
|||
|
! 0
|
|||
|
! <-----------------------------------+ 0
|
|||
|
! X-Rp !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! V
|
|||
|
! Y-Rp
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
V
|
|||
|
X-Rc
|
|||
|
|
|||
|
|
|||
|
Example one - Webcam
|
|||
|
|
|||
|
A camera module installed on the user facing part of a laptop screen
|
|||
|
casing used for video calls. The captured images are meant to be displayed
|
|||
|
in landscape mode (width > height) on the laptop screen.
|
|||
|
|
|||
|
The camera is typically mounted upside-down to compensate the lens optical
|
|||
|
inversion effect:
|
|||
|
|
|||
|
Y-Rp
|
|||
|
Y-Rc ^
|
|||
|
^ !
|
|||
|
! !
|
|||
|
! ! |\_____)\__
|
|||
|
! ! ) ____ ___.<
|
|||
|
! ! |/ )/
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! 0 +------------------------------------->
|
|||
|
! 0 X-Rp
|
|||
|
0 +------------------------------------->
|
|||
|
0 X-Rc
|
|||
|
|
|||
|
The two reference systems are aligned, the resulting camera rotation is
|
|||
|
0 degrees, no rotation correction needs to be applied to the resulting
|
|||
|
image once captured to memory buffers to correctly display it to users:
|
|||
|
|
|||
|
+--------------------------------------+
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! |\____)\___ !
|
|||
|
! ) _____ __`< !
|
|||
|
! |/ )/ !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
+--------------------------------------+
|
|||
|
|
|||
|
If the camera sensor is not mounted upside-down to compensate for the lens
|
|||
|
optical inversion, the two reference systems will not be aligned, with
|
|||
|
'Rp' being rotated 180 degrees relatively to 'Rc':
|
|||
|
|
|||
|
|
|||
|
X-Rc 0
|
|||
|
<------------------------------------+ 0
|
|||
|
!
|
|||
|
Y-Rp !
|
|||
|
^ !
|
|||
|
! !
|
|||
|
! |\_____)\__ !
|
|||
|
! ) ____ ___.< !
|
|||
|
! |/ )/ !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! V
|
|||
|
! Y-Rc
|
|||
|
0 +------------------------------------->
|
|||
|
0 X-Rp
|
|||
|
|
|||
|
The image once captured to memory will then be rotated by 180 degrees:
|
|||
|
|
|||
|
+--------------------------------------+
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! __/(_____/| !
|
|||
|
! >.___ ____ ( !
|
|||
|
! \( \| !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
+--------------------------------------+
|
|||
|
|
|||
|
A software rotation correction of 180 degrees should be applied to
|
|||
|
correctly display the image:
|
|||
|
|
|||
|
+--------------------------------------+
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! |\____)\___ !
|
|||
|
! ) _____ __`< !
|
|||
|
! |/ )/ !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
+--------------------------------------+
|
|||
|
|
|||
|
Example two - Phone camera
|
|||
|
|
|||
|
A camera installed on the back side of a mobile device facing away from
|
|||
|
the user. The captured images are meant to be displayed in portrait mode
|
|||
|
(height > width) to match the device screen orientation and the device
|
|||
|
usage orientation used when taking the picture.
|
|||
|
|
|||
|
The camera sensor is typically mounted with its pixel array longer side
|
|||
|
aligned to the device longer side, upside-down mounted to compensate for
|
|||
|
the lens optical inversion effect:
|
|||
|
|
|||
|
0 Y-Rc
|
|||
|
0 +-------------------->
|
|||
|
! Y-Rp
|
|||
|
! ^
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! ! |\_____)\__
|
|||
|
! ! ) ____ ___.<
|
|||
|
! ! |/ )/
|
|||
|
! !
|
|||
|
! !
|
|||
|
! !
|
|||
|
! 0 +------------------------------------->
|
|||
|
! 0 X-Rp
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
!
|
|||
|
V
|
|||
|
X-Rc
|
|||
|
|
|||
|
The two reference systems are not aligned and the 'Rp' reference system is
|
|||
|
rotated by 90 degrees in the counter-clockwise direction relatively to the
|
|||
|
'Rc' reference system.
|
|||
|
|
|||
|
The image once captured to memory will be rotated:
|
|||
|
|
|||
|
+-------------------------------------+
|
|||
|
| _ _ |
|
|||
|
| \ / |
|
|||
|
| | | |
|
|||
|
| | | |
|
|||
|
| | > |
|
|||
|
| < | |
|
|||
|
| | | |
|
|||
|
| . |
|
|||
|
| V |
|
|||
|
+-------------------------------------+
|
|||
|
|
|||
|
A correction of 90 degrees in counter-clockwise direction has to be
|
|||
|
applied to correctly display the image in portrait mode on the device
|
|||
|
screen:
|
|||
|
|
|||
|
+--------------------+
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |\____)\___ |
|
|||
|
| ) _____ __`< |
|
|||
|
| |/ )/ |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
| |
|
|||
|
+--------------------+
|
|||
|
|
|||
|
orientation:
|
|||
|
description:
|
|||
|
The orientation of a device (typically an image sensor or a flash LED)
|
|||
|
describing its mounting position relative to the usage orientation of the
|
|||
|
system where the device is installed on.
|
|||
|
$ref: /schemas/types.yaml#/definitions/uint32
|
|||
|
enum:
|
|||
|
# Front. The device is mounted on the front facing side of the system. For
|
|||
|
# mobile devices such as smartphones, tablets and laptops the front side
|
|||
|
# is the user facing side.
|
|||
|
- 0
|
|||
|
# Back. The device is mounted on the back side of the system, which is
|
|||
|
# defined as the opposite side of the front facing one.
|
|||
|
- 1
|
|||
|
# External. The device is not attached directly to the system but is
|
|||
|
# attached in a way that allows it to move freely.
|
|||
|
- 2
|
|||
|
|
|||
|
additionalProperties: true
|
|||
|
|
|||
|
...
|