Re: [PATCH v8 11/11] media: imx.rst: Update doc to reflect fixes to interlaced capture

From: Tim Harvey
Date: Tue Jan 15 2019 - 16:58:35 EST


On Wed, Jan 9, 2019 at 10:30 AM Steve Longerbeam <slongerbeam@xxxxxxxxx> wrote:
>
> Also add an example pipeline for unconverted capture with interweave
> on SabreAuto.
>
> Cleanup some language in various places in the process.
>
> Signed-off-by: Steve Longerbeam <slongerbeam@xxxxxxxxx>
> Reviewed-by: Philipp Zabel <p.zabel@xxxxxxxxxxxxxx>
> ---
> Changes since v4:
> - Make clear that it is IDMAC channel that does pixel reordering and
> interweave, not the CSI. Caught by Philipp Zabel.
> Changes since v3:
> - none.
> Changes since v2:
> - expand on idmac interweave behavior in CSI subdev.
> - switch second SabreAuto pipeline example to PAL to give
> both NTSC and PAL examples.
> - Cleanup some language in various places.
> ---
> Documentation/media/v4l-drivers/imx.rst | 103 +++++++++++++++---------
> 1 file changed, 66 insertions(+), 37 deletions(-)
>
<snip>
> Capture Pipelines
> -----------------
> @@ -516,10 +522,33 @@ On the SabreAuto, an on-board ADV7180 SD decoder is connected to the
> parallel bus input on the internal video mux to IPU1 CSI0.
>
> The following example configures a pipeline to capture from the ADV7180
> -video decoder, assuming NTSC 720x480 input signals, with Motion
> -Compensated de-interlacing. Pad field types assume the adv7180 outputs
> -"interlaced". $outputfmt can be any format supported by the ipu1_ic_prpvf
> -entity at its output pad:
> +video decoder, assuming NTSC 720x480 input signals, using simple
> +interweave (unconverted and without motion compensation). The adv7180
> +must output sequential or alternating fields (field type 'seq-bt' for
> +NTSC, or 'alternate'):
> +
> +.. code-block:: none
> +
> + # Setup links
> + media-ctl -l "'adv7180 3-0021':0 -> 'ipu1_csi0_mux':1[1]"
> + media-ctl -l "'ipu1_csi0_mux':2 -> 'ipu1_csi0':0[1]"
> + media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
> + # Configure pads
> + media-ctl -V "'adv7180 3-0021':0 [fmt:UYVY2X8/720x480 field:seq-bt]"
> + media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/720x480]"
> + media-ctl -V "'ipu1_csi0':2 [fmt:AYUV32/720x480]"
> + # Configure "ipu1_csi0 capture" interface (assumed at /dev/video4)
> + v4l2-ctl -d4 --set-fmt-video=field=interlaced_bt
> +
> +Streaming can then begin on /dev/video4. The v4l2-ctl tool can also be
> +used to select any supported YUV pixelformat on /dev/video4.
> +

Hi Steve,

I'm testing 4.20 with this patchset on top.

I'm on a GW5104 which has an IMX6Q with the adv7180 on ipu1_csi0 like
the SabeAuto example above I can't get the simple interveave example
to work:

media-ctl -r # reset all links
# Setup links (ADV7180 IPU1_CSI0)
media-ctl -l '"adv7180 2-0020":0 -> "ipu1_csi0_mux":1[1]'
media-ctl -l '"ipu1_csi0_mux":2 -> "ipu1_csi0":0[1]'
media-ctl -l '"ipu1_csi0":2 -> "ipu1_csi0 capture":0[1]' # /dev/video4
# Configure pads
media-ctl -V "'adv7180 2-0020':0 [fmt:UYVY2X8/720x480 field:seq-bt]"
media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/720x480]"
media-ctl -V "'ipu1_csi0':0 [fmt:AYUV32/720x480]"
# Configure 'ipu1_csi0 capture' interface (/dev/video4)
v4l2-ctl -d4 --set-fmt-video=field=interlaced_bt
# streaming can now begin on the raw capture device node at /dev/video4
v4l2-ctl -d4 --stream-mmap --stream-to=/x.raw --stream-count=1 # capture 1 frame
[ 5547.354460] ipu1_csi0: pipeline start failed with -32
VIDIOC_STREAMON: failed: Broken pipe

Any ideas what is causing this pipeline failure.

> +This example configures a pipeline to capture from the ADV7180
> +video decoder, assuming PAL 720x576 input signals, with Motion
> +Compensated de-interlacing. The adv7180 must output sequential or
> +alternating fields (field type 'seq-tb' for PAL, or 'alternate').
> +$outputfmt can be any format supported by the ipu1_ic_prpvf entity
> +at its output pad:
>
> .. code-block:: none
>
> @@ -531,11 +560,11 @@ entity at its output pad:
> media-ctl -l "'ipu1_ic_prp':2 -> 'ipu1_ic_prpvf':0[1]"
> media-ctl -l "'ipu1_ic_prpvf':1 -> 'ipu1_ic_prpvf capture':0[1]"
> # Configure pads
> - media-ctl -V "'adv7180 3-0021':0 [fmt:UYVY2X8/720x480]"
> - media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/720x480 field:interlaced]"
> - media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480 field:interlaced]"
> - media-ctl -V "'ipu1_vdic':2 [fmt:AYUV32/720x480 field:none]"
> - media-ctl -V "'ipu1_ic_prp':2 [fmt:AYUV32/720x480 field:none]"
> + media-ctl -V "'adv7180 3-0021':0 [fmt:UYVY2X8/720x576 field:seq-tb]"
> + media-ctl -V "'ipu1_csi0_mux':2 [fmt:UYVY2X8/720x576]"
> + media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x576]"
> + media-ctl -V "'ipu1_vdic':2 [fmt:AYUV32/720x576 field:none]"
> + media-ctl -V "'ipu1_ic_prp':2 [fmt:AYUV32/720x576 field:none]"
> media-ctl -V "'ipu1_ic_prpvf':1 [fmt:$outputfmt field:none]"
>
> Streaming can then begin on the capture device node at

The above motion-compensation example pipeline does now work with this
patch series - thanks for addressing this!

Regards,

Tim