* ADV7180 Capture with i.MX53
@ 2019-10-08 0:15 Fabio Estevam
2019-10-08 0:37 ` Steve Longerbeam
0 siblings, 1 reply; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 0:15 UTC (permalink / raw)
To: Steve Longerbeam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne
Hi Steve,
Are you still able to capture from the camera on the imx53-smd board
with kernel 5.3.x?
I have a custom board with a ADV7180 and it gets detected like this:
[ 2.970246] ipu1_csi0: Registered ipu1_csi0 capture as /dev/video0
[ 2.979741] ipu1_ic_prpenc: Registered ipu1_ic_prpenc capture as /dev/video1
[ 2.988930] ipu1_ic_prpvf: Registered ipu1_ic_prpvf capture as /dev/video2
[ 2.996264] imx-media: ipu1_csi0:1 -> ipu1_ic_prp:0
[ 3.001685] mmc0: host does not support reading read-only switch,
assuming write-enable
[ 3.009925] imx-media: ipu1_csi0:1 -> ipu1_vdic:0
[ 3.014659] imx-media: ipu1_vdic:2 -> ipu1_ic_prp:0
[ 3.019929] imx-media: ipu1_ic_prp:1 -> ipu1_ic_prpenc:0
[ 3.025305] imx-media: ipu1_ic_prp:2 -> ipu1_ic_prpvf:0
[ 3.032039] mmc0: new high speed SDHC card at address aaaa
[ 3.038252] imx-media: subdev ipu1_csi0 bound
...
[ 24.974982] adv7180 1-0021: chip found @ 0x21 (63fc4000.i2c)
[ 25.324516] imx-media: adv7180 1-0021:0 -> ipu1_csi0:0
Then I setup the pipelines:
# media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':[1]"
# media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
# media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480 field:seq-bt]"
# media-ctl -V "'ipu1_csi0':2 [fmt:AYUV32/720x480]"
# gst-launch-1.0 v4l2src ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[ 929.317827] ipu1_csi0: pipeline start failed with -32
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed
to allocate required memory.
Additional debug info:
../../../gst-plugins-good-1.14.4/sys/v4l2/gstv4l2src.c(658):
gst_v4l2src_decide_allocation ():
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Buffer pool activation failed
Execution ended after 0:00:00.035375819
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
My device tree changes to add the ADV7180 are listed here:
http://code.bulix.org/ez8yax-901750
Am I calling the correct media-ctl commands?
Any ideas, please?
Thanks,
Fabio Estevam
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 0:15 ADV7180 Capture with i.MX53 Fabio Estevam
@ 2019-10-08 0:37 ` Steve Longerbeam
2019-10-08 0:46 ` Fabio Estevam
0 siblings, 1 reply; 18+ messages in thread
From: Steve Longerbeam @ 2019-10-08 0:37 UTC (permalink / raw)
To: Fabio Estevam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne
Hi Fabio,
On 10/7/19 5:15 PM, Fabio Estevam wrote:
> Hi Steve,
>
> Are you still able to capture from the camera on the imx53-smd board
> with kernel 5.3.x?
I haven't tried the SMD board in a while, it's possible something broke,
but see below...
>
> I have a custom board with a ADV7180 and it gets detected like this:
>
> [ 2.970246] ipu1_csi0: Registered ipu1_csi0 capture as /dev/video0
> [ 2.979741] ipu1_ic_prpenc: Registered ipu1_ic_prpenc capture as /dev/video1
> [ 2.988930] ipu1_ic_prpvf: Registered ipu1_ic_prpvf capture as /dev/video2
> [ 2.996264] imx-media: ipu1_csi0:1 -> ipu1_ic_prp:0
> [ 3.001685] mmc0: host does not support reading read-only switch,
> assuming write-enable
> [ 3.009925] imx-media: ipu1_csi0:1 -> ipu1_vdic:0
> [ 3.014659] imx-media: ipu1_vdic:2 -> ipu1_ic_prp:0
> [ 3.019929] imx-media: ipu1_ic_prp:1 -> ipu1_ic_prpenc:0
> [ 3.025305] imx-media: ipu1_ic_prp:2 -> ipu1_ic_prpvf:0
> [ 3.032039] mmc0: new high speed SDHC card at address aaaa
> [ 3.038252] imx-media: subdev ipu1_csi0 bound
> ...
> [ 24.974982] adv7180 1-0021: chip found @ 0x21 (63fc4000.i2c)
> [ 25.324516] imx-media: adv7180 1-0021:0 -> ipu1_csi0:0
>
> Then I setup the pipelines:
>
> # media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':[1]"
> # media-ctl -l "'ipu1_csi0':2 -> 'ipu1_csi0 capture':0[1]"
> # media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480 field:seq-bt]"
The adv7180 driver in 5.3.x doesn't support seq-bt, only alternate. So
pad format should be "[fmt:UYVY2X8/720x240 field:alternate]".
> # media-ctl -V "'ipu1_csi0':2 [fmt:AYUV32/720x480]"
>
> # gst-launch-1.0 v4l2src ! fakesink
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> [ 929.317827] ipu1_csi0: pipeline start failed with -32
This probably means there was a pad format mismatch. Try enabling
dynamic debug.
Steve
> ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed
> to allocate required memory.
> Additional debug info:
> ../../../gst-plugins-good-1.14.4/sys/v4l2/gstv4l2src.c(658):
> gst_v4l2src_decide_allocation ():
> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
> Buffer pool activation failed
> Execution ended after 0:00:00.035375819
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> Freeing pipeline ...
>
> My device tree changes to add the ADV7180 are listed here:
> http://code.bulix.org/ez8yax-901750
>
> Am I calling the correct media-ctl commands?
>
> Any ideas, please?
>
> Thanks,
>
> Fabio Estevam
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 0:37 ` Steve Longerbeam
@ 2019-10-08 0:46 ` Fabio Estevam
2019-10-08 0:51 ` Steve Longerbeam
0 siblings, 1 reply; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 0:46 UTC (permalink / raw)
To: Steve Longerbeam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne
Hi Steve,
On Mon, Oct 7, 2019 at 9:37 PM Steve Longerbeam <slongerbeam@gmail.com> wrote:
> The adv7180 driver in 5.3.x doesn't support seq-bt, only alternate. So
> pad format should be "[fmt:UYVY2X8/720x240 field:alternate]".
Thanks for the suggestion. After changing to field:alternate I get:
# gst-launch-1.0 v4l2src ! fakesink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device
'/dev/video0' does not support progressive interlacing
Additional debug info:
../../../gst-plugins-good-1.14.4/sys/v4l2/gstv4l2object.c(3813):
gst_v4l2_object_set_format_full ():
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Device wants interleaved interlacing
Execution ended after 0:00:00.020459489
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 0:46 ` Fabio Estevam
@ 2019-10-08 0:51 ` Steve Longerbeam
2019-10-08 1:07 ` Fabio Estevam
0 siblings, 1 reply; 18+ messages in thread
From: Steve Longerbeam @ 2019-10-08 0:51 UTC (permalink / raw)
To: Fabio Estevam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne
On 10/7/19 5:46 PM, Fabio Estevam wrote:
> Hi Steve,
>
> On Mon, Oct 7, 2019 at 9:37 PM Steve Longerbeam <slongerbeam@gmail.com> wrote:
>
>> The adv7180 driver in 5.3.x doesn't support seq-bt, only alternate. So
>> pad format should be "[fmt:UYVY2X8/720x240 field:alternate]".
> Thanks for the suggestion. After changing to field:alternate I get:
>
> # gst-launch-1.0 v4l2src ! fakesink
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device
> '/dev/video0' does not support progressive interlacing
Ah progress. Try:
v4l2-ctl -d0 --set-fmt-video=field=interlaced
Unless you specify interlaced at the video interface, the driver will
just combine alternate fields into seq-bt. I guess the v4l2src plugin
doesn't support seq-bt.
Steve
> Additional debug info:
> ../../../gst-plugins-good-1.14.4/sys/v4l2/gstv4l2object.c(3813):
> gst_v4l2_object_set_format_full ():
> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
> Device wants interleaved interlacing
> Execution ended after 0:00:00.020459489
> Setting pipeline to PAUSED ...
> Setting pipeline to READY ...
> Setting pipeline to NULL ...
> Freeing pipeline ...
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 0:51 ` Steve Longerbeam
@ 2019-10-08 1:07 ` Fabio Estevam
2019-10-08 1:40 ` Fabio Estevam
2019-10-08 11:21 ` Fabio Estevam
0 siblings, 2 replies; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 1:07 UTC (permalink / raw)
To: Steve Longerbeam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne, Tim Harvey
On Mon, Oct 7, 2019 at 9:51 PM Steve Longerbeam <slongerbeam@gmail.com> wrote:
> Ah progress. Try:
>
> v4l2-ctl -d0 --set-fmt-video=field=interlaced
Yes, with this hint I can run:
# v4l2-ctl -d0 --set-fmt-video=field=interlaced
# v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=x.raw --stream-count=1
And it seems to accept the capture of a frame.
Without passing field=interlaced, I used to get:
# v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=x.raw --stream-count=1
[ 163.838944] ipu1_csi0: capture format not valid
So now I need to see if I can get Gstreamer to accept a pipeline like:
gst-lauch-1.0 v4l2src ! kmssink
Thanks
> Unless you specify interlaced at the video interface, the driver will
> just combine alternate fields into seq-bt. I guess the v4l2src plugin
> doesn't support seq-bt.
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 1:07 ` Fabio Estevam
@ 2019-10-08 1:40 ` Fabio Estevam
2019-10-08 11:21 ` Fabio Estevam
1 sibling, 0 replies; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 1:40 UTC (permalink / raw)
To: Steve Longerbeam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne, Tim Harvey
On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> On Mon, Oct 7, 2019 at 9:51 PM Steve Longerbeam <slongerbeam@gmail.com> wrote:
>
> > Ah progress. Try:
> >
> > v4l2-ctl -d0 --set-fmt-video=field=interlaced
>
> Yes, with this hint I can run:
>
> # v4l2-ctl -d0 --set-fmt-video=field=interlaced
> # v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=x.raw --stream-count=1
>
> And it seems to accept the capture of a frame.
>
> Without passing field=interlaced, I used to get:
>
> # v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=x.raw --stream-count=1
> [ 163.838944] ipu1_csi0: capture format not valid
>
> So now I need to see if I can get Gstreamer to accept a pipeline like:
>
> gst-lauch-1.0 v4l2src ! kmssink
Even though the one-frame capture via v4l2-ctl seems to work:
# v4l2-ctl -d0 --set-fmt-video=field=interlaced
# v4l2-ctl --device /dev/video0 --stream-mmap --stream-to=x.raw
--stream-count=1
, Gstreamer is still not happy:
# gst-launch-1.0 v4l2src ! kmssink
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Device
'/dev/video0' does not support progressive interlacing
Additional debug info:
../../../gst-plugins-good-1.14.4/sys/v4l2/gstv4l2object.c(3813):
gst_v4l2_object_set_format_full ():
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
Device wants interleaved interlacing
Execution ended after 0:00:00.022400639
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 1:07 ` Fabio Estevam
2019-10-08 1:40 ` Fabio Estevam
@ 2019-10-08 11:21 ` Fabio Estevam
2019-10-08 16:55 ` Tim Harvey
1 sibling, 1 reply; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 11:21 UTC (permalink / raw)
To: Steve Longerbeam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne, Tim Harvey
On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com> wrote:
> So now I need to see if I can get Gstreamer to accept a pipeline like:
>
> gst-lauch-1.0 v4l2src ! kmssink
Ok, so now I decided use the hardware video deinterlacer:
media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':0[1]"
media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
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]"
media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480 field:alternate]"
media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480]"
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 "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480field:none]"
And then Gstreamer can be launched:
# gst-launch-1.0 v4l2src device=/dev/video2 ! kmssink --verbose
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 800
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 480
Setting pipeline to PLAYING ...
New clock: GstSystemClock
/GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
framerate=(fraction)25/1, colorimetry=(string)bt601,
interlace-mode=(string)progressive
/GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
framerate=(fraction)25/1, colorimetry=(string)bt601,
interlace-mode=(string)progressive
However the video looks like a broken old TV scrolling the image horizontally:
https://www.dropbox.com/s/2yef8egn6s8z7ff/mx53_adv7180_capture.mp4?dl=0
Any suggestions, please?
Thanks
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 11:21 ` Fabio Estevam
@ 2019-10-08 16:55 ` Tim Harvey
2019-10-08 17:14 ` Steve Longerbeam
2019-10-08 20:34 ` Fabio Estevam
0 siblings, 2 replies; 18+ messages in thread
From: Tim Harvey @ 2019-10-08 16:55 UTC (permalink / raw)
To: Fabio Estevam
Cc: Steve Longerbeam, Philipp Zabel, linux-media, Nicolas Dufresne
On Tue, Oct 8, 2019 at 4:21 AM Fabio Estevam <festevam@gmail.com> wrote:
>
> On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> > So now I need to see if I can get Gstreamer to accept a pipeline like:
> >
> > gst-lauch-1.0 v4l2src ! kmssink
>
> Ok, so now I decided use the hardware video deinterlacer:
>
> media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':0[1]"
> media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
> media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
> 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]"
>
> media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480 field:alternate]"
> media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480]"
> 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 "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480field:none]"
>
> And then Gstreamer can be launched:
>
> # gst-launch-1.0 v4l2src device=/dev/video2 ! kmssink --verbose
> Setting pipeline to PAUSED ...
> Pipeline is live and does not need PREROLL ...
> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 800
> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 480
> Setting pipeline to PLAYING ...
> New clock: GstSystemClock
> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
> framerate=(fraction)25/1, colorimetry=(string)bt601,
> interlace-mode=(string)progressive
> /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
> framerate=(fraction)25/1, colorimetry=(string)bt601,
> interlace-mode=(string)progressive
>
Fabio,
Yes, you need to use the vdic to capture from adv7180 with gstreamer
as it can't handle alternate.
> However the video looks like a broken old TV scrolling the image horizontally:
> https://www.dropbox.com/s/2yef8egn6s8z7ff/mx53_adv7180_capture.mp4?dl=0
>
This would be because of the initial corrupt frames that this and many
other decoders produce while waiting for proper sync. I added
'g_skip_frames' support in 9483a3f8e1b58ba1d7cd21687d8d0a63a015c36b
but I'm not sure how to get gstreamer to use it?
I still carry around a patch from Steve for imx-csi that drops first
few frames from BT656 sources:
https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
to deal with this.
Tim
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 16:55 ` Tim Harvey
@ 2019-10-08 17:14 ` Steve Longerbeam
2019-10-08 17:20 ` Ian Arkver
2019-10-08 20:34 ` Fabio Estevam
1 sibling, 1 reply; 18+ messages in thread
From: Steve Longerbeam @ 2019-10-08 17:14 UTC (permalink / raw)
To: Tim Harvey, Fabio Estevam; +Cc: Philipp Zabel, linux-media, Nicolas Dufresne
On 10/8/19 9:55 AM, Tim Harvey wrote:
> On Tue, Oct 8, 2019 at 4:21 AM Fabio Estevam <festevam@gmail.com> wrote:
>> On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com> wrote:
>>
>>> So now I need to see if I can get Gstreamer to accept a pipeline like:
>>>
>>> gst-lauch-1.0 v4l2src ! kmssink
>> Ok, so now I decided use the hardware video deinterlacer:
>>
>> media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':0[1]"
>> media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
>> media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
>> 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]"
>>
>> media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480 field:alternate]"
>> media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480]"
>> 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 "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480field:none]"
>>
>> And then Gstreamer can be launched:
>>
>> # gst-launch-1.0 v4l2src device=/dev/video2 ! kmssink --verbose
>> Setting pipeline to PAUSED ...
>> Pipeline is live and does not need PREROLL ...
>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 800
>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 480
>> Setting pipeline to PLAYING ...
>> New clock: GstSystemClock
>> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>> interlace-mode=(string)progressive
>> /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>> interlace-mode=(string)progressive
>>
> Fabio,
>
> Yes, you need to use the vdic to capture from adv7180 with gstreamer
> as it can't handle alternate.
>
>> However the video looks like a broken old TV scrolling the image horizontally:
>> https://www.dropbox.com/s/2yef8egn6s8z7ff/mx53_adv7180_capture.mp4?dl=0
>>
> This would be because of the initial corrupt frames that this and many
> other decoders produce while waiting for proper sync. I added
> 'g_skip_frames' support in 9483a3f8e1b58ba1d7cd21687d8d0a63a015c36b
> but I'm not sure how to get gstreamer to use it?
>
> I still carry around a patch from Steve for imx-csi that drops first
> few frames from BT656 sources:
> https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
> to deal with this.
Yes, that's likely the issue, from a look at Fabio's video. The patch
referenced by Tim hard-codes the number of frames to skip, instead of
calling the adv7180's g_skip_frames op. I still don't have an answer as
to how to call the adv7180 from the CSI subdev.
Steve
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 17:14 ` Steve Longerbeam
@ 2019-10-08 17:20 ` Ian Arkver
2019-10-08 17:30 ` Steve Longerbeam
0 siblings, 1 reply; 18+ messages in thread
From: Ian Arkver @ 2019-10-08 17:20 UTC (permalink / raw)
To: Steve Longerbeam, Tim Harvey, Fabio Estevam
Cc: Philipp Zabel, linux-media, Nicolas Dufresne
On 08/10/2019 18:14, Steve Longerbeam wrote:
>
>
> On 10/8/19 9:55 AM, Tim Harvey wrote:
>> On Tue, Oct 8, 2019 at 4:21 AM Fabio Estevam <festevam@gmail.com> wrote:
>>> On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com>
>>> wrote:
>>>
>>>> So now I need to see if I can get Gstreamer to accept a pipeline like:
>>>>
>>>> gst-lauch-1.0 v4l2src ! kmssink
>>> Ok, so now I decided use the hardware video deinterlacer:
>>>
>>> media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':0[1]"
>>> media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
>>> media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
>>> 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]"
>>>
>>> media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480 field:alternate]"
>>> media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480]"
>>> 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 "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480field:none]"
>>>
>>> And then Gstreamer can be launched:
>>>
>>> # gst-launch-1.0 v4l2src device=/dev/video2 ! kmssink --verbose
>>> Setting pipeline to PAUSED ...
>>> Pipeline is live and does not need PREROLL ...
>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 800
>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 480
>>> Setting pipeline to PLAYING ...
>>> New clock: GstSystemClock
>>> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
>>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>>> interlace-mode=(string)progressive
>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
>>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>>> interlace-mode=(string)progressive
>>>
>> Fabio,
>>
>> Yes, you need to use the vdic to capture from adv7180 with gstreamer
>> as it can't handle alternate.
>>
>>> However the video looks like a broken old TV scrolling the image
>>> horizontally:
>>> https://www.dropbox.com/s/2yef8egn6s8z7ff/mx53_adv7180_capture.mp4?dl=0
>>>
>> This would be because of the initial corrupt frames that this and many
>> other decoders produce while waiting for proper sync. I added
>> 'g_skip_frames' support in 9483a3f8e1b58ba1d7cd21687d8d0a63a015c36b
>> but I'm not sure how to get gstreamer to use it?
>>
>> I still carry around a patch from Steve for imx-csi that drops first
>> few frames from BT656 sources:
>> https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
>>
>> to deal with this.
>
> Yes, that's likely the issue, from a look at Fabio's video. The patch
> referenced by Tim hard-codes the number of frames to skip, instead of
> calling the adv7180's g_skip_frames op. I still don't have an answer as
> to how to call the adv7180 from the CSI subdev.
Seems to me initial corrupt frames would produce a fixed offset of some
kind. A rolling video like that looks more like the number of lines
being captured is wrong.
Regards,
Ian.
>
> Steve
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 17:20 ` Ian Arkver
@ 2019-10-08 17:30 ` Steve Longerbeam
2019-10-08 17:33 ` Ian Arkver
0 siblings, 1 reply; 18+ messages in thread
From: Steve Longerbeam @ 2019-10-08 17:30 UTC (permalink / raw)
To: Ian Arkver, Tim Harvey, Fabio Estevam
Cc: Philipp Zabel, linux-media, Nicolas Dufresne
On 10/8/19 10:20 AM, Ian Arkver wrote:
> On 08/10/2019 18:14, Steve Longerbeam wrote:
>>
>>
>> On 10/8/19 9:55 AM, Tim Harvey wrote:
>>> On Tue, Oct 8, 2019 at 4:21 AM Fabio Estevam <festevam@gmail.com>
>>> wrote:
>>>> On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com>
>>>> wrote:
>>>>
>>>>> So now I need to see if I can get Gstreamer to accept a pipeline
>>>>> like:
>>>>>
>>>>> gst-lauch-1.0 v4l2src ! kmssink
>>>> Ok, so now I decided use the hardware video deinterlacer:
>>>>
>>>> media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':0[1]"
>>>> media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
>>>> media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
>>>> 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]"
>>>>
>>>> media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480
>>>> field:alternate]"
>>>> media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480]"
>>>> 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 "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480field:none]"
>>>>
>>>> And then Gstreamer can be launched:
>>>>
>>>> # gst-launch-1.0 v4l2src device=/dev/video2 ! kmssink --verbose
>>>> Setting pipeline to PAUSED ...
>>>> Pipeline is live and does not need PREROLL ...
>>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 800
>>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 480
>>>> Setting pipeline to PLAYING ...
>>>> New clock: GstSystemClock
>>>> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
>>>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>>>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>>>> interlace-mode=(string)progressive
>>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
>>>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>>>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>>>> interlace-mode=(string)progressive
>>>>
>>> Fabio,
>>>
>>> Yes, you need to use the vdic to capture from adv7180 with gstreamer
>>> as it can't handle alternate.
>>>
>>>> However the video looks like a broken old TV scrolling the image
>>>> horizontally:
>>>> https://www.dropbox.com/s/2yef8egn6s8z7ff/mx53_adv7180_capture.mp4?dl=0
>>>>
>>>>
>>> This would be because of the initial corrupt frames that this and many
>>> other decoders produce while waiting for proper sync. I added
>>> 'g_skip_frames' support in 9483a3f8e1b58ba1d7cd21687d8d0a63a015c36b
>>> but I'm not sure how to get gstreamer to use it?
>>>
>>> I still carry around a patch from Steve for imx-csi that drops first
>>> few frames from BT656 sources:
>>> https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
>>>
>>> to deal with this.
>>
>> Yes, that's likely the issue, from a look at Fabio's video. The patch
>> referenced by Tim hard-codes the number of frames to skip, instead of
>> calling the adv7180's g_skip_frames op. I still don't have an answer
>> as to how to call the adv7180 from the CSI subdev.
>
> Seems to me initial corrupt frames would produce a fixed offset of
> some kind. A rolling video like that looks more like the number of
> lines being captured is wrong.
Nope, rolling video is one of the symptoms of initial corrupt frames,
from my own experience. I don't really have an explanation for it, but
IIRC the IPU will insert lines on its own to recover from an initial
wrong # lines captured, to regain vertical sync. That should mean the
rolling should eventually stop once vertical sync is re-established, but
I've seen many instances where rolling video continues, and skipping the
initial corrupt frames fixes it.
Steve
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 17:30 ` Steve Longerbeam
@ 2019-10-08 17:33 ` Ian Arkver
0 siblings, 0 replies; 18+ messages in thread
From: Ian Arkver @ 2019-10-08 17:33 UTC (permalink / raw)
To: Steve Longerbeam, Tim Harvey, Fabio Estevam
Cc: Philipp Zabel, linux-media, Nicolas Dufresne
On 08/10/2019 18:30, Steve Longerbeam wrote:
>
>
> On 10/8/19 10:20 AM, Ian Arkver wrote:
>> On 08/10/2019 18:14, Steve Longerbeam wrote:
>>>
>>>
>>> On 10/8/19 9:55 AM, Tim Harvey wrote:
>>>> On Tue, Oct 8, 2019 at 4:21 AM Fabio Estevam <festevam@gmail.com>
>>>> wrote:
>>>>> On Mon, Oct 7, 2019 at 10:07 PM Fabio Estevam <festevam@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> So now I need to see if I can get Gstreamer to accept a pipeline
>>>>>> like:
>>>>>>
>>>>>> gst-lauch-1.0 v4l2src ! kmssink
>>>>> Ok, so now I decided use the hardware video deinterlacer:
>>>>>
>>>>> media-ctl -l "'adv7180 1-0021':0 -> 'ipu1_csi0':0[1]"
>>>>> media-ctl -l "'ipu1_csi0':1 -> 'ipu1_vdic':0[1]"
>>>>> media-ctl -l "'ipu1_vdic':2 -> 'ipu1_ic_prp':0[1]"
>>>>> 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]"
>>>>>
>>>>> media-ctl -V "'adv7180 1-0021':0 [fmt:UYVY2X8/720x480
>>>>> field:alternate]"
>>>>> media-ctl -V "'ipu1_csi0':1 [fmt:AYUV32/720x480]"
>>>>> 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 "'ipu1_ic_prpvf':1 [fmt:AYUV32/720x480field:none]"
>>>>>
>>>>> And then Gstreamer can be launched:
>>>>>
>>>>> # gst-launch-1.0 v4l2src device=/dev/video2 ! kmssink --verbose
>>>>> Setting pipeline to PAUSED ...
>>>>> Pipeline is live and does not need PREROLL ...
>>>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 800
>>>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 480
>>>>> Setting pipeline to PLAYING ...
>>>>> New clock: GstSystemClock
>>>>> /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps =
>>>>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>>>>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>>>>> interlace-mode=(string)progressive
>>>>> /GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
>>>>> video/x-raw, format=(string)YUY2, width=(int)720, height=(int)480,
>>>>> framerate=(fraction)25/1, colorimetry=(string)bt601,
>>>>> interlace-mode=(string)progressive
>>>>>
>>>> Fabio,
>>>>
>>>> Yes, you need to use the vdic to capture from adv7180 with gstreamer
>>>> as it can't handle alternate.
>>>>
>>>>> However the video looks like a broken old TV scrolling the image
>>>>> horizontally:
>>>>> https://www.dropbox.com/s/2yef8egn6s8z7ff/mx53_adv7180_capture.mp4?dl=0
>>>>>
>>>>>
>>>> This would be because of the initial corrupt frames that this and many
>>>> other decoders produce while waiting for proper sync. I added
>>>> 'g_skip_frames' support in 9483a3f8e1b58ba1d7cd21687d8d0a63a015c36b
>>>> but I'm not sure how to get gstreamer to use it?
>>>>
>>>> I still carry around a patch from Steve for imx-csi that drops first
>>>> few frames from BT656 sources:
>>>> https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
>>>>
>>>> to deal with this.
>>>
>>> Yes, that's likely the issue, from a look at Fabio's video. The patch
>>> referenced by Tim hard-codes the number of frames to skip, instead of
>>> calling the adv7180's g_skip_frames op. I still don't have an answer
>>> as to how to call the adv7180 from the CSI subdev.
>>
>> Seems to me initial corrupt frames would produce a fixed offset of
>> some kind. A rolling video like that looks more like the number of
>> lines being captured is wrong.
>
> Nope, rolling video is one of the symptoms of initial corrupt frames,
> from my own experience. I don't really have an explanation for it, but
> IIRC the IPU will insert lines on its own to recover from an initial
> wrong # lines captured, to regain vertical sync. That should mean the
> rolling should eventually stop once vertical sync is re-established, but
> I've seen many instances where rolling video continues, and skipping the
> initial corrupt frames fixes it.
>
OK, good to know. Thanks Steve.
> Steve
>
>
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 16:55 ` Tim Harvey
2019-10-08 17:14 ` Steve Longerbeam
@ 2019-10-08 20:34 ` Fabio Estevam
2019-10-08 21:01 ` Tim Harvey
1 sibling, 1 reply; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 20:34 UTC (permalink / raw)
To: Tim Harvey; +Cc: Steve Longerbeam, Philipp Zabel, linux-media, Nicolas Dufresne
Hi Tim,
On Tue, Oct 8, 2019 at 1:55 PM Tim Harvey <tharvey@gateworks.com> wrote:
> I still carry around a patch from Steve for imx-csi that drops first
> few frames from BT656 sources:
> https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
> to deal with this.
Tried this patch and now I see the scrolling happening horizontally
(from right to left).
Stil trying to get stable video from ADV7180.
Thanks
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 20:34 ` Fabio Estevam
@ 2019-10-08 21:01 ` Tim Harvey
2019-10-08 23:48 ` Fabio Estevam
0 siblings, 1 reply; 18+ messages in thread
From: Tim Harvey @ 2019-10-08 21:01 UTC (permalink / raw)
To: Fabio Estevam
Cc: Steve Longerbeam, Philipp Zabel, linux-media, Nicolas Dufresne
On Tue, Oct 8, 2019 at 1:34 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> Hi Tim,
>
> On Tue, Oct 8, 2019 at 1:55 PM Tim Harvey <tharvey@gateworks.com> wrote:
>
> > I still carry around a patch from Steve for imx-csi that drops first
> > few frames from BT656 sources:
> > https://github.com/Gateworks/linux-imx6/commit/959fbd42ee6433f49ef4a04fb1abe8f8c78db5ad
> > to deal with this.
>
> Tried this patch and now I see the scrolling happening horizontally
> (from right to left).
>
> Stil trying to get stable video from ADV7180.
Ok that's strange indeed. I did recently test 5.3 on a Gateworks IMX6
board with ADV7180 and the one patch to drop the first few frames and
its stable. What does your testing show on an IMX6 and do you know
when it may have broken for IMX53?
I do have a discussion going on here about NEWAVMODE and BT.656-3 vs
BT.656-4. I wonder if its something to do with that as that issue
causes rolling video on IMX6 with ADV7280:
https://patchwork.kernel.org/patch/11117579/
Tim
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 21:01 ` Tim Harvey
@ 2019-10-08 23:48 ` Fabio Estevam
2019-10-09 15:40 ` Tim Harvey
0 siblings, 1 reply; 18+ messages in thread
From: Fabio Estevam @ 2019-10-08 23:48 UTC (permalink / raw)
To: Tim Harvey; +Cc: Steve Longerbeam, Philipp Zabel, linux-media, Nicolas Dufresne
Hi Tim,
On Tue, Oct 8, 2019 at 6:01 PM Tim Harvey <tharvey@gateworks.com> wrote:
> Ok that's strange indeed. I did recently test 5.3 on a Gateworks IMX6
> board with ADV7180 and the one patch to drop the first few frames and
> its stable. What does your testing show on an IMX6 and do you know
I will give it a try on a imx6q-sabreauto board for comparison.
> when it may have broken for IMX53?
i.MX53 capture is relatively new and this is my first time trying to
get it to work with mainline.
I assume I should do something similar to your
https://raw.githubusercontent.com/Gateworks/media-ctl-setup/master/media-ctl-setup
script, more especifically the mode 3 setup where you have:
case "$SENS" in
adv7180)
fmt "'$SENSOR':0 [fmt:UYVY2X8/$res field:alternate]"
fmt "'ipu${IPU}_csi${CSI}_mux':$((p+1)) [fmt:UYVY2X8/$res]"
# rec709 config at CSI pad 0
fmt "'ipu${IPU}_csi${CSI}':0 [fmt:$fmt field:$field colorspace:rec709
ycbcr:709]"
# CSI src pad output is frame height
h=$((h*2))
res=${w}x${h}
fmt "'ipu${IPU}_csi${CSI}':1 [fmt:AYUV32/$res]"
fmt "'ipu${IPU}_vdic':2 [fmt:AYUV32/$res field:none]"
fmt "'ipu${IPU}_ic_prp':2 [fmt:AYUV32/$res field:none]"
fmt "'$EP':1 [fmt:AYUV32/$res]"
;;
Why do you multiple h by 2?
> I do have a discussion going on here about NEWAVMODE and BT.656-3 vs
> BT.656-4. I wonder if its something to do with that as that issue
> causes rolling video on IMX6 with ADV7280:
> https://patchwork.kernel.org/patch/11117579/
Tested this patch, but it did not help.
Thanks
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-08 23:48 ` Fabio Estevam
@ 2019-10-09 15:40 ` Tim Harvey
2019-10-09 17:22 ` Steve Longerbeam
0 siblings, 1 reply; 18+ messages in thread
From: Tim Harvey @ 2019-10-09 15:40 UTC (permalink / raw)
To: Fabio Estevam
Cc: Steve Longerbeam, Philipp Zabel, linux-media, Nicolas Dufresne
On Tue, Oct 8, 2019 at 4:48 PM Fabio Estevam <festevam@gmail.com> wrote:
>
> Hi Tim,
>
> On Tue, Oct 8, 2019 at 6:01 PM Tim Harvey <tharvey@gateworks.com> wrote:
>
> > Ok that's strange indeed. I did recently test 5.3 on a Gateworks IMX6
> > board with ADV7180 and the one patch to drop the first few frames and
> > its stable. What does your testing show on an IMX6 and do you know
>
> I will give it a try on a imx6q-sabreauto board for comparison.
>
> > when it may have broken for IMX53?
>
> i.MX53 capture is relatively new and this is my first time trying to
> get it to work with mainline.
>
> I assume I should do something similar to your
> https://raw.githubusercontent.com/Gateworks/media-ctl-setup/master/media-ctl-setup
> script, more especifically the mode 3 setup where you have:
>
I struggled with coming up with a way to easily document all the
variations with our boards as we have several different boards that
have an adv7180 using different CSI ports and then you also have to
deal with the differences between IMX6SDL and IMX6Q. The script was
the best solution I could come up with but if you read through it its
pretty complicated.
> case "$SENS" in
> adv7180)
> fmt "'$SENSOR':0 [fmt:UYVY2X8/$res field:alternate]"
> fmt "'ipu${IPU}_csi${CSI}_mux':$((p+1)) [fmt:UYVY2X8/$res]"
> # rec709 config at CSI pad 0
> fmt "'ipu${IPU}_csi${CSI}':0 [fmt:$fmt field:$field colorspace:rec709
> ycbcr:709]"
> # CSI src pad output is frame height
> h=$((h*2))
> res=${w}x${h}
> fmt "'ipu${IPU}_csi${CSI}':1 [fmt:AYUV32/$res]"
> fmt "'ipu${IPU}_vdic':2 [fmt:AYUV32/$res field:none]"
> fmt "'ipu${IPU}_ic_prp':2 [fmt:AYUV32/$res field:none]"
> fmt "'$EP':1 [fmt:AYUV32/$res]"
> ;;
>
> Why do you multiple h by 2?
The input the the CSI is a field of 240 lines but the vdic will
combine these and have 480 lines. I don't recall exactly why but for
this to propagate properly you need to set the 480 lines on the csi
output.
>
> > I do have a discussion going on here about NEWAVMODE and BT.656-3 vs
> > BT.656-4. I wonder if its something to do with that as that issue
> > causes rolling video on IMX6 with ADV7280:
> > https://patchwork.kernel.org/patch/11117579/
>
> Tested this patch, but it did not help.
That patch won't affect adv7180 but I wonder if the issues you are
having have to do with something like this. The adv7180_init function
will set BT.656-4 mode and adjust V bit end position for NTSC... I
don't know if that's consistent with the IMX53 CSI needs? There are
lots of little tweaks that can be made to the EAV/SAV codes and its
not clear to me how to deal with compat issues like i have run into
with the adv7280 config not being compatible with the IMX6 CSI needs.
Tim
^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: ADV7180 Capture with i.MX53
2019-10-09 15:40 ` Tim Harvey
@ 2019-10-09 17:22 ` Steve Longerbeam
2019-10-18 22:33 ` Matthew Starr
0 siblings, 1 reply; 18+ messages in thread
From: Steve Longerbeam @ 2019-10-09 17:22 UTC (permalink / raw)
To: Tim Harvey, Fabio Estevam
Cc: Philipp Zabel, linux-media, Nicolas Dufresne, Matthew Starr
On 10/9/19 8:40 AM, Tim Harvey wrote:
> On Tue, Oct 8, 2019 at 4:48 PM Fabio Estevam <festevam@gmail.com> wrote:
>> Hi Tim,
>>
>> On Tue, Oct 8, 2019 at 6:01 PM Tim Harvey <tharvey@gateworks.com> wrote:
>>
>>> Ok that's strange indeed. I did recently test 5.3 on a Gateworks IMX6
>>> board with ADV7180 and the one patch to drop the first few frames and
>>> its stable. What does your testing show on an IMX6 and do you know
>> I will give it a try on a imx6q-sabreauto board for comparison.
>>
>>> when it may have broken for IMX53?
>> i.MX53 capture is relatively new and this is my first time trying to
>> get it to work with mainline.
>>
>> I assume I should do something similar to your
>> https://raw.githubusercontent.com/Gateworks/media-ctl-setup/master/media-ctl-setup
>> script, more especifically the mode 3 setup where you have:
>>
> I struggled with coming up with a way to easily document all the
> variations with our boards as we have several different boards that
> have an adv7180 using different CSI ports and then you also have to
> deal with the differences between IMX6SDL and IMX6Q. The script was
> the best solution I could come up with but if you read through it its
> pretty complicated.
>
>> case "$SENS" in
>> adv7180)
>> fmt "'$SENSOR':0 [fmt:UYVY2X8/$res field:alternate]"
>> fmt "'ipu${IPU}_csi${CSI}_mux':$((p+1)) [fmt:UYVY2X8/$res]"
>> # rec709 config at CSI pad 0
>> fmt "'ipu${IPU}_csi${CSI}':0 [fmt:$fmt field:$field colorspace:rec709
>> ycbcr:709]"
>> # CSI src pad output is frame height
>> h=$((h*2))
>> res=${w}x${h}
>> fmt "'ipu${IPU}_csi${CSI}':1 [fmt:AYUV32/$res]"
>> fmt "'ipu${IPU}_vdic':2 [fmt:AYUV32/$res field:none]"
>> fmt "'ipu${IPU}_ic_prp':2 [fmt:AYUV32/$res field:none]"
>> fmt "'$EP':1 [fmt:AYUV32/$res]"
>> ;;
>>
>> Why do you multiple h by 2?
> The input the the CSI is a field of 240 lines but the vdic will
> combine these and have 480 lines. I don't recall exactly why but for
> this to propagate properly you need to set the 480 lines on the csi
> output.
The reason is because there are is no register status bits that will
tell you whether a captured field was field 0 or field 1. For this
reason the driver can't support alternate capture mode (which captures
individual fields and reports to userspace in the returned v4l2_buffer's
whether the field is a top field or bottom field). So the CSI captures
two consecutive fields and reports field type seq-bt or seq-tb, and
doubles height, at its output.
>>> I do have a discussion going on here about NEWAVMODE and BT.656-3 vs
>>> BT.656-4. I wonder if its something to do with that as that issue
>>> causes rolling video on IMX6 with ADV7280:
>>> https://patchwork.kernel.org/patch/11117579/
>> Tested this patch, but it did not help.
About a year ago Matthew Starr reported similar horizontal rolling issue
with i.mx53 + adv7180. I didn't have an explanation for the problem,
since IPU register-level is the same between i.mx53 and i.mx6, and
adv7180 capture is working fine on i.mx6 SabreAuto. And like now, the
skipping of initial corrupt frames solved vertical sync but not the
horizontal rolling. I never heard back whether he was able to track down
the issue.
Matthew, were you ever able to solve this?
> That patch won't affect adv7180 but I wonder if the issues you are
> having have to do with something like this. The adv7180_init function
> will set BT.656-4 mode and adjust V bit end position for NTSC... I
> don't know if that's consistent with the IMX53 CSI needs?
Well, like mentioned above, the IPU CSI is register-level compatible
between i.mx53 and i.mx6, at least according to the reference manuals,
so the non-standard V-bit position set by adv7180, and adjusted for by
the CSI, should work for i.mx53 just like it does for i.mx6. But it's
possible there are some undocumented differences in the CSI between
these SoC's.
Steve
> There are
> lots of little tweaks that can be made to the EAV/SAV codes and its
> not clear to me how to deal with compat issues like i have run into
> with the adv7280 config not being compatible with the IMX6 CSI needs.
^ permalink raw reply [flat|nested] 18+ messages in thread
* RE: ADV7180 Capture with i.MX53
2019-10-09 17:22 ` Steve Longerbeam
@ 2019-10-18 22:33 ` Matthew Starr
0 siblings, 0 replies; 18+ messages in thread
From: Matthew Starr @ 2019-10-18 22:33 UTC (permalink / raw)
To: Steve Longerbeam, Tim Harvey, Fabio Estevam
Cc: Philipp Zabel, linux-media, Nicolas Dufresne
> -----Original Message-----
> From: Steve Longerbeam <slongerbeam@gmail.com>
>
> On 10/9/19 8:40 AM, Tim Harvey wrote:
> > On Tue, Oct 8, 2019 at 4:48 PM Fabio Estevam <festevam@gmail.com>
> wrote:
> >> Hi Tim,
> >>
> >> On Tue, Oct 8, 2019 at 6:01 PM Tim Harvey <tharvey@gateworks.com>
> wrote:
> >>
> >>> Ok that's strange indeed. I did recently test 5.3 on a Gateworks
> >>> IMX6 board with ADV7180 and the one patch to drop the first few
> >>> frames and its stable. What does your testing show on an IMX6 and do
> >>> you know
> >> I will give it a try on a imx6q-sabreauto board for comparison.
> >>
> >>> when it may have broken for IMX53?
> >> i.MX53 capture is relatively new and this is my first time trying to
> >> get it to work with mainline.
> >>
> >> I assume I should do something similar to your
> >> https://raw.githubusercontent.com/Gateworks/media-ctl-
> setup/master/me
> >> dia-ctl-setup script, more especifically the mode 3 setup where you
> >> have:
> >>
> > I struggled with coming up with a way to easily document all the
> > variations with our boards as we have several different boards that
> > have an adv7180 using different CSI ports and then you also have to
> > deal with the differences between IMX6SDL and IMX6Q. The script was
> > the best solution I could come up with but if you read through it its
> > pretty complicated.
> >
> >> case "$SENS" in
> >> adv7180)
> >> fmt "'$SENSOR':0 [fmt:UYVY2X8/$res field:alternate]"
> >> fmt "'ipu${IPU}_csi${CSI}_mux':$((p+1)) [fmt:UYVY2X8/$res]"
> >> # rec709 config at CSI pad 0
> >> fmt "'ipu${IPU}_csi${CSI}':0 [fmt:$fmt field:$field colorspace:rec709
> >> ycbcr:709]"
> >> # CSI src pad output is frame height
> >> h=$((h*2))
> >> res=${w}x${h}
> >> fmt "'ipu${IPU}_csi${CSI}':1 [fmt:AYUV32/$res]"
> >> fmt "'ipu${IPU}_vdic':2 [fmt:AYUV32/$res field:none]"
> >> fmt "'ipu${IPU}_ic_prp':2 [fmt:AYUV32/$res field:none]"
> >> fmt "'$EP':1 [fmt:AYUV32/$res]"
> >> ;;
> >>
> >> Why do you multiple h by 2?
> > The input the the CSI is a field of 240 lines but the vdic will
> > combine these and have 480 lines. I don't recall exactly why but for
> > this to propagate properly you need to set the 480 lines on the csi
> > output.
>
> The reason is because there are is no register status bits that will tell you
> whether a captured field was field 0 or field 1. For this reason the driver can't
> support alternate capture mode (which captures individual fields and reports
> to userspace in the returned v4l2_buffer's whether the field is a top field or
> bottom field). So the CSI captures two consecutive fields and reports field
> type seq-bt or seq-tb, and doubles height, at its output.
>
>
> >>> I do have a discussion going on here about NEWAVMODE and BT.656-3
> vs
> >>> BT.656-4. I wonder if its something to do with that as that issue
> >>> causes rolling video on IMX6 with ADV7280:
> >>> https://patchwork.kernel.org/patch/11117579/
> >> Tested this patch, but it did not help.
>
> About a year ago Matthew Starr reported similar horizontal rolling issue with
> i.mx53 + adv7180. I didn't have an explanation for the problem, since IPU
> register-level is the same between i.mx53 and i.mx6, and
> adv7180 capture is working fine on i.mx6 SabreAuto. And like now, the
> skipping of initial corrupt frames solved vertical sync but not the horizontal
> rolling. I never heard back whether he was able to track down the issue.
>
> Matthew, were you ever able to solve this?
Steve,
I never had a chance to dig deeper on this issue. The last time it was worked on the video could never get a proper sync between frames, so the images were always split between frames.
If there are some new updates over the last year I would be willing to test them out.
- Matt Starr
>
> > That patch won't affect adv7180 but I wonder if the issues you are
> > having have to do with something like this. The adv7180_init function
> > will set BT.656-4 mode and adjust V bit end position for NTSC... I
> > don't know if that's consistent with the IMX53 CSI needs?
>
> Well, like mentioned above, the IPU CSI is register-level compatible between
> i.mx53 and i.mx6, at least according to the reference manuals, so the non-
> standard V-bit position set by adv7180, and adjusted for by the CSI, should
> work for i.mx53 just like it does for i.mx6. But it's possible there are some
> undocumented differences in the CSI between these SoC's.
>
> Steve
>
> > There are
> > lots of little tweaks that can be made to the EAV/SAV codes and its
> > not clear to me how to deal with compat issues like i have run into
> > with the adv7280 config not being compatible with the IMX6 CSI needs.
^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2019-10-18 22:33 UTC | newest]
Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-10-08 0:15 ADV7180 Capture with i.MX53 Fabio Estevam
2019-10-08 0:37 ` Steve Longerbeam
2019-10-08 0:46 ` Fabio Estevam
2019-10-08 0:51 ` Steve Longerbeam
2019-10-08 1:07 ` Fabio Estevam
2019-10-08 1:40 ` Fabio Estevam
2019-10-08 11:21 ` Fabio Estevam
2019-10-08 16:55 ` Tim Harvey
2019-10-08 17:14 ` Steve Longerbeam
2019-10-08 17:20 ` Ian Arkver
2019-10-08 17:30 ` Steve Longerbeam
2019-10-08 17:33 ` Ian Arkver
2019-10-08 20:34 ` Fabio Estevam
2019-10-08 21:01 ` Tim Harvey
2019-10-08 23:48 ` Fabio Estevam
2019-10-09 15:40 ` Tim Harvey
2019-10-09 17:22 ` Steve Longerbeam
2019-10-18 22:33 ` Matthew Starr
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox