Thread (175 messages) 175 messages, 16 authors, 2017-03-22

[PATCH v5 38/39] media: imx: csi: fix crop rectangle reset in sink set_fmt

From: slongerbeam@gmail.com (Steve Longerbeam)
Date: 2017-03-20 19:48:39
Also in: linux-devicetree, linux-media, lkml


On 03/20/2017 07:00 AM, Philipp Zabel wrote:
On Mon, 2017-03-20 at 12:08 +0000, Russell King - ARM Linux wrote:
quoted
On Mon, Mar 20, 2017 at 12:55:26PM +0100, Philipp Zabel wrote:
quoted
The above paragraph suggests we skip any rectangles that are not
supported. In our case that would be 3. and 4., since the CSI can't
compose into a larger frame. I hadn't realised that the crop selection
currently happens on the source pad.
I'd recommend viewing the documentation in its post-processed version,
because then you get the examples as pictures, and they say that a
picture is worth 1000 words.  See

   https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/dev-subdev.html

There is almost an exact example of what we're trying to do - it's
figure 4.6.  Here, we have a sink pad with a cropping rectangle on
the input, which is then scaled to a composition rectangle (there's
no bounds rectangle, and it's specified that in such a case the
top,left of the composition rectangle will always be 0,0 - see quote
below).

Where it differs is that the example also supports source cropping
for two source pads.  We don't support that.

The same document says:

   Scaling support is optional. When supported by a subdev, the crop
   rectangle on the subdev's sink pad is scaled to the size configured
   using the
   :ref:`VIDIOC_SUBDEV_S_SELECTION <VIDIOC_SUBDEV_G_SELECTION>` IOCTL
   using ``V4L2_SEL_TGT_COMPOSE`` selection target on the same pad. If the
   subdev supports scaling but not composing, the top and left values are
   not used and must always be set to zero.
Right, this sentence does imply that when scaling is supported, there
must be a sink compose rectangle, even when composing is not.
Ok, this all makes consistent sense to me too. So:

- the CSI hardware cropping rectangle should be specified via the
   sink pad crop selection.

- the CSI hardware /2 downscaler should be specified via the
   sink pad compose selection.

- the final source pad rectangle is the same as the sink pad
   compose rectangle.

So that leaves only step 4 (source pad crop selection) as
unsupported.

Steve

I have previously set up scaling like this:

media-ctl --set-v4l2 "'ipu1_csi0_mux':2[fmt:UYVY2X8/1920x1080 at 1/60]"
media-ctl --set-v4l2 "'ipu1_csi0':2[fmt:AYUV32/960x540 at 1/30]"

Does this mean, it should work like this instead?

media-ctl --set-v4l2 "'ipu1_csi0_mux':2[fmt:UYVY2X8/1920x1080 at 1/60]"
media-ctl --set-v4l2 "'ipu1_csi0':0[fmt:UYVY2X8/1920x1080 at 1/60,compose:(0,0)/960x540]"
media-ctl --set-v4l2 "'ipu1_csi0':2[fmt:AYUV32/960x540 at 1/30]"

I suppose setting the source pad format should not be allowed to modify
the sink compose rectangle.

regards
Philipp
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help