blob: a070c2a897c7fae5e1fb441a50e2287d01ed7959 [file] [log] [blame]
b.liue9582032025-04-17 19:18:16 +08001From 1af1c75a6965dd975d40e904e921d9f07395ffcb Mon Sep 17 00:00:00 2001
2From: Jacopo Mondi <jacopo@jmondi.org>
3Date: Sat, 9 May 2020 11:04:45 +0200
4Subject: [PATCH] media: dt-bindings: video-interface: Replace
5 'rotation' description
6
7Replace the 'rotation' property description by providing a definition
8relative to the camera sensor pixel array coordinate system and the
9captured scene.
10
11Acked-by: Rob Herring <robh@kernel.org>
12Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
13Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
14Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
15
16Commit 915bd31ce9ed328535e5ecf3ca730c5764ec1a38 upstream
17
18Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
19---
20 .../bindings/media/video-interfaces.txt | 359 +++++++++++++++++-
21 1 file changed, 356 insertions(+), 3 deletions(-)
22
23--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
24+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
25@@ -85,9 +85,362 @@ Optional properties
26
27 - lens-focus: A phandle to the node of the focus lens controller.
28
29-- rotation: The device, typically an image sensor, is not mounted upright,
30- but a number of degrees counter clockwise. Typical values are 0 and 180
31- (upside down).
32+- rotation: The camera rotation is expressed as the angular difference in
33+ degrees between two reference systems, one relative to the camera module, and
34+ one defined on the external world scene to be captured when projected on the
35+ image sensor pixel array.
36+
37+ A camera sensor has a 2-dimensional reference system 'Rc' defined by
38+ its pixel array read-out order. The origin is set to the first pixel
39+ being read out, the X-axis points along the column read-out direction
40+ towards the last columns, and the Y-axis along the row read-out
41+ direction towards the last row.
42+
43+ A typical example for a sensor with a 2592x1944 pixel array matrix
44+ observed from the front is:
45+
46+ 2591 X-axis 0
47+ <------------------------+ 0
48+ .......... ... ..........!
49+ .......... ... ..........! Y-axis
50+ ... !
51+ .......... ... ..........!
52+ .......... ... ..........! 1943
53+ V
54+
55+ The external world scene reference system 'Rs' is a 2-dimensional
56+ reference system on the focal plane of the camera module. The origin is
57+ placed on the top-left corner of the visible scene, the X-axis points
58+ towards the right, and the Y-axis points towards the bottom of the
59+ scene. The top, bottom, left and right directions are intentionally not
60+ defined and depend on the environment in which the camera is used.
61+
62+ A typical example of a (very common) picture of a shark swimming from
63+ left to right, as seen from the camera, is:
64+
65+ 0 X-axis
66+ 0 +------------------------------------->
67+ !
68+ !
69+ !
70+ ! |\____)\___
71+ ! ) _____ __`<
72+ ! |/ )/
73+ !
74+ !
75+ !
76+ V
77+ Y-axis
78+
79+ with the reference system 'Rs' placed on the camera focal plane:
80+
81+ ¸.·˙!
82+ ¸.·˙ !
83+ _ ¸.·˙ !
84+ +-/ \-+¸.·˙ !
85+ | (o) | ! Camera focal plane
86+ +-----+˙·.¸ !
87+ ˙·.¸ !
88+ ˙·.¸ !
89+ ˙·.¸!
90+
91+ When projected on the sensor's pixel array, the image and the associated
92+ reference system 'Rs' are typically (but not always) inverted, due to
93+ the camera module's lens optical inversion effect.
94+
95+ Assuming the above represented scene of the swimming shark, the lens
96+ inversion projects the scene and its reference system onto the sensor
97+ pixel array, seen from the front of the camera sensor, as follows:
98+
99+ Y-axis
100+ ^
101+ !
102+ !
103+ !
104+ ! |\_____)\__
105+ ! ) ____ ___.<
106+ ! |/ )/
107+ !
108+ !
109+ !
110+ 0 +------------------------------------->
111+ 0 X-axis
112+
113+ Note the shark being upside-down.
114+
115+ The resulting projected reference system is named 'Rp'.
116+
117+ The camera rotation property is then defined as the angular difference
118+ in the counter-clockwise direction between the camera reference system
119+ 'Rc' and the projected scene reference system 'Rp'. It is expressed in
120+ degrees as a number in the range [0, 360[.
121+
122+ Examples
123+
124+ 0 degrees camera rotation:
125+
126+
127+ Y-Rp
128+ ^
129+ Y-Rc !
130+ ^ !
131+ ! !
132+ ! !
133+ ! !
134+ ! !
135+ ! !
136+ ! !
137+ ! !
138+ ! 0 +------------------------------------->
139+ ! 0 X-Rp
140+ 0 +------------------------------------->
141+ 0 X-Rc
142+
143+
144+ X-Rc 0
145+ <------------------------------------+ 0
146+ X-Rp 0 !
147+ <------------------------------------+ 0 !
148+ ! !
149+ ! !
150+ ! !
151+ ! !
152+ ! !
153+ ! !
154+ ! !
155+ ! V
156+ ! Y-Rc
157+ V
158+ Y-Rp
159+
160+ 90 degrees camera rotation:
161+
162+ 0 Y-Rc
163+ 0 +-------------------->
164+ ! Y-Rp
165+ ! ^
166+ ! !
167+ ! !
168+ ! !
169+ ! !
170+ ! !
171+ ! !
172+ ! !
173+ ! !
174+ ! !
175+ ! 0 +------------------------------------->
176+ ! 0 X-Rp
177+ !
178+ !
179+ !
180+ !
181+ V
182+ X-Rc
183+
184+ 180 degrees camera rotation:
185+
186+ 0
187+ <------------------------------------+ 0
188+ X-Rc !
189+ Y-Rp !
190+ ^ !
191+ ! !
192+ ! !
193+ ! !
194+ ! !
195+ ! !
196+ ! !
197+ ! V
198+ ! Y-Rc
199+ 0 +------------------------------------->
200+ 0 X-Rp
201+
202+ 270 degrees camera rotation:
203+
204+ 0 Y-Rc
205+ 0 +-------------------->
206+ ! 0
207+ ! <-----------------------------------+ 0
208+ ! X-Rp !
209+ ! !
210+ ! !
211+ ! !
212+ ! !
213+ ! !
214+ ! !
215+ ! !
216+ ! !
217+ ! V
218+ ! Y-Rp
219+ !
220+ !
221+ !
222+ !
223+ V
224+ X-Rc
225+
226+
227+ Example one - Webcam
228+
229+ A camera module installed on the user facing part of a laptop screen
230+ casing used for video calls. The captured images are meant to be
231+ displayed in landscape mode (width > height) on the laptop screen.
232+
233+ The camera is typically mounted upside-down to compensate the lens
234+ optical inversion effect:
235+
236+ Y-Rp
237+ Y-Rc ^
238+ ^ !
239+ ! !
240+ ! ! |\_____)\__
241+ ! ! ) ____ ___.<
242+ ! ! |/ )/
243+ ! !
244+ ! !
245+ ! !
246+ ! 0 +------------------------------------->
247+ ! 0 X-Rp
248+ 0 +------------------------------------->
249+ 0 X-Rc
250+
251+ The two reference systems are aligned, the resulting camera rotation is
252+ 0 degrees, no rotation correction needs to be applied to the resulting
253+ image once captured to memory buffers to correctly display it to users:
254+
255+ +--------------------------------------+
256+ ! !
257+ ! !
258+ ! !
259+ ! |\____)\___ !
260+ ! ) _____ __`< !
261+ ! |/ )/ !
262+ ! !
263+ ! !
264+ ! !
265+ +--------------------------------------+
266+
267+ If the camera sensor is not mounted upside-down to compensate for the
268+ lens optical inversion, the two reference systems will not be aligned,
269+ with 'Rp' being rotated 180 degrees relatively to 'Rc':
270+
271+
272+ X-Rc 0
273+ <------------------------------------+ 0
274+ !
275+ Y-Rp !
276+ ^ !
277+ ! !
278+ ! |\_____)\__ !
279+ ! ) ____ ___.< !
280+ ! |/ )/ !
281+ ! !
282+ ! !
283+ ! V
284+ ! Y-Rc
285+ 0 +------------------------------------->
286+ 0 X-Rp
287+
288+ The image once captured to memory will then be rotated by 180 degrees:
289+
290+ +--------------------------------------+
291+ ! !
292+ ! !
293+ ! !
294+ ! __/(_____/| !
295+ ! >.___ ____ ( !
296+ ! \( \| !
297+ ! !
298+ ! !
299+ ! !
300+ +--------------------------------------+
301+
302+ A software rotation correction of 180 degrees should be applied to
303+ correctly display the image:
304+
305+ +--------------------------------------+
306+ ! !
307+ ! !
308+ ! !
309+ ! |\____)\___ !
310+ ! ) _____ __`< !
311+ ! |/ )/ !
312+ ! !
313+ ! !
314+ ! !
315+ +--------------------------------------+
316+
317+ Example two - Phone camera
318+
319+ A camera installed on the back side of a mobile device facing away from
320+ the user. The captured images are meant to be displayed in portrait mode
321+ (height > width) to match the device screen orientation and the device
322+ usage orientation used when taking the picture.
323+
324+ The camera sensor is typically mounted with its pixel array longer side
325+ aligned to the device longer side, upside-down mounted to compensate for
326+ the lens optical inversion effect:
327+
328+ 0 Y-Rc
329+ 0 +-------------------->
330+ ! Y-Rp
331+ ! ^
332+ ! !
333+ ! !
334+ ! !
335+ ! ! |\_____)\__
336+ ! ! ) ____ ___.<
337+ ! ! |/ )/
338+ ! !
339+ ! !
340+ ! !
341+ ! 0 +------------------------------------->
342+ ! 0 X-Rp
343+ !
344+ !
345+ !
346+ !
347+ V
348+ X-Rc
349+
350+ The two reference systems are not aligned and the 'Rp' reference
351+ system is rotated by 90 degrees in the counter-clockwise direction
352+ relatively to the 'Rc' reference system.
353+
354+ The image once captured to memory will be rotated:
355+
356+ +-------------------------------------+
357+ | _ _ |
358+ | \ / |
359+ | | | |
360+ | | | |
361+ | | > |
362+ | < | |
363+ | | | |
364+ | . |
365+ | V |
366+ +-------------------------------------+
367+
368+ A correction of 90 degrees in counter-clockwise direction has to be
369+ applied to correctly display the image in portrait mode on the device
370+ screen:
371+
372+ +--------------------+
373+ | |
374+ | |
375+ | |
376+ | |
377+ | |
378+ | |
379+ | |\____)\___ |
380+ | ) _____ __`< |
381+ | |/ )/ |
382+ | |
383+ | |
384+ | |
385+ | |
386+ | |
387+ +--------------------+
388
389 - orientation: The orientation of a device (typically an image sensor or a flash
390 LED) describing its mounting position relative to the usage orientation of the