diff options
Diffstat (limited to 'target/linux/bcm27xx/patches-5.4/950-0903-media-dt-bindings-video-interface-Replace-rotation-d.patch')
-rw-r--r-- | target/linux/bcm27xx/patches-5.4/950-0903-media-dt-bindings-video-interface-Replace-rotation-d.patch | 390 |
1 files changed, 390 insertions, 0 deletions
diff --git a/target/linux/bcm27xx/patches-5.4/950-0903-media-dt-bindings-video-interface-Replace-rotation-d.patch b/target/linux/bcm27xx/patches-5.4/950-0903-media-dt-bindings-video-interface-Replace-rotation-d.patch new file mode 100644 index 0000000000..a070c2a897 --- /dev/null +++ b/target/linux/bcm27xx/patches-5.4/950-0903-media-dt-bindings-video-interface-Replace-rotation-d.patch @@ -0,0 +1,390 @@ +From 1af1c75a6965dd975d40e904e921d9f07395ffcb Mon Sep 17 00:00:00 2001 +From: Jacopo Mondi <jacopo@jmondi.org> +Date: Sat, 9 May 2020 11:04:45 +0200 +Subject: [PATCH] media: dt-bindings: video-interface: Replace + 'rotation' description + +Replace the 'rotation' property description by providing a definition +relative to the camera sensor pixel array coordinate system and the +captured scene. + +Acked-by: Rob Herring <robh@kernel.org> +Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> +Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> +Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org> + +Commit 915bd31ce9ed328535e5ecf3ca730c5764ec1a38 upstream + +Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> +--- + .../bindings/media/video-interfaces.txt | 359 +++++++++++++++++- + 1 file changed, 356 insertions(+), 3 deletions(-) + +--- a/Documentation/devicetree/bindings/media/video-interfaces.txt ++++ b/Documentation/devicetree/bindings/media/video-interfaces.txt +@@ -85,9 +85,362 @@ Optional properties + + - lens-focus: A phandle to the node of the focus lens controller. + +-- rotation: The device, typically an image sensor, is not mounted upright, +- but a number of degrees counter clockwise. Typical values are 0 and 180 +- (upside down). ++- rotation: 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: The orientation of a device (typically an image sensor or a flash + LED) describing its mounting position relative to the usage orientation of the |