Thread (188 messages) 188 messages, 12 authors, 2017-02-15

Re: [PATCH v3 00/24] i.MX Media Driver

From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Date: 2017-02-03 14:40:56
Also in: linux-arm-kernel, linux-media, lkml

Hello,

On Wednesday 01 Feb 2017 16:19:27 Steve Longerbeam wrote:
On 02/01/2017 01:30 AM, Philipp Zabel wrote:
quoted
On Tue, 2017-01-31 at 17:26 -0800, Steve Longerbeam wrote:
[...]
quoted
quoted
# Set pad formats
media-ctl --set-v4l2 "'tc358743 1-000f':0[fmt:UYVY/1920x1080]"
media-ctl --set-v4l2 "'imx6-mipi-csi2':1[fmt:UYVY2X8/1920x1080]"
media-ctl --set-v4l2 "'ipu1_csi0_mux':2[fmt:UYVY2X8/1920x1080]"
media-ctl --set-v4l2 "'ipu1_csi0':2[fmt:AYUV32/1920x1080]"

v4l2-ctl -d /dev/video4 -V
# This still is configured to 640x480, which is inconsistent with
# the 'ipu1_csi0':2 pad format. The pad set_fmt above should
# have set this, too.
Because you've only configured the source pads,
and not the sink pads. The ipu_csi source format is
dependent on the sink format - output crop window is
limited by max input sensor frame, and since sink pad is
still at 640x480, output is reduced to that.
No, it is set (see below). What happens is that capture_g_fmt_vid_cap
just returns the capture devices' priv->vdev.fmt, even if it is
incompatible with the connected csi subdevice's output pad format.

priv->vdev.fmt was never changed from the default set in
imx_media_capture_device_register, because capture_s/try_fmt_vid_cap
were not called yet.
Ah, yep, this is a bug. Need to modify the capture device's
width/height at .set_fmt() in the subdev's device-node source
pad (csi and prpenc/vf).
quoted
quoted
Maybe I'm missing something, is it expected behavior that
a source format should be automatically propagated to
the sink?
media-ctl propagates the output pad format to all remote subdevices'
input pads for all enabled links:

https://git.linuxtv.org/v4l-utils.git/tree/utils/media-ctl/libv4l2subdev.c
#n693
Ah cool, I wasn't aware media-ctl did this, but it makes sense and
makes it easier on the user.
To be precise, userspace is responsible for propagating formats *between* 
subdevs (source to sink, over a link) and drivers for propagating formats *in* 
subdevs (sink to source, inside the subdev).
quoted
quoted
quoted
v4l2-ctl --list-formats -d /dev/video4
# This lists all the RGB formats, which it shouldn't. There is
# no CSC in this pipeline, so we should be limited to YUV formats
# only.
right, need to fix that. Probably by poking the attached
source subdev (csi or prpenc/vf) for its supported formats.
You are right, in bayer/raw mode only one specific format should be
listed, depending on the CSI output pad format.
-- 
Regards,

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