Hi,
I am experimenting with the gstreamer-imx (gstreamer-1.0) plugins for i.mx6. I have encountered an issue when connecting imxv4l2src to imxipuvideotransform.
First off - I had to make a slight modification to imxv4l2src to support my camera and driver which is outputting UYVY instead of I420. This in itself does not seem to be introducing my problem since I can make my pipeline work as long as I do not use imxipuvideotransform.
The following (simplified) pipeline works fine:
/usr/bin/gst-launch-1.0 --gst-debug-level=3 --gst-debug=imxv4l2src:9 -e \
imxv4l2src capture-mode=0 device=/dev/video0 ! \
videoconvert ! video/x-raw,format=I420,width=1280,height=720 ! fakesink
However, I would like to hardware-accelerate the conversion from UYVY to I420. So I replaced videoconvert with imxipuvideotransform.
/usr/bin/gst-launch-1.0 --gst-debug-level=3 --gst-debug=imxv4l2src:9 -e \
imxv4l2src capture-mode=0 device=/dev/video0 ! \
imxipuvideotransform ! video/x-raw,format=I420,width=1280,height=720 ! fakesink
I see an internal data flow error and 'reason: not-negotiated (-4)' when using the ipu plugin, but not when using videoconvert.
Any ideas on how to debug this error?
0:00:00.103482116 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:309:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps filter (NULL)
0:00:00.103716457 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:319:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps video/x-raw, format=(string)UYVY, width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], framerate=(fraction)[ 0/1, 100/1 ], pixel-aspect-ratio=(fraction)[ 0/1, 100/1 ]
0:00:00.104312141 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:309:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps filter (NULL)
0:00:00.104395144 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:319:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps video/x-raw, format=(string)UYVY, width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], framerate=(fraction)[ 0/1, 100/1 ], pixel-aspect-ratio=(fraction)[ 0/1, 100/1 ]
0:00:00.105356506 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:309:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps filter (NULL)
0:00:00.105443175 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:319:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps video/x-raw, format=(string)UYVY, width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], framerate=(fraction)[ 0/1, 100/1 ], pixel-aspect-ratio=(fraction)[ 0/1, 100/1 ]
0:00:00.105865521 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:309:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps filter (NULL)
0:00:00.105943857 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:319:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps video/x-raw, format=(string)UYVY, width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], framerate=(fraction)[ 0/1, 100/1 ], pixel-aspect-ratio=(fraction)[ 0/1, 100/1 ]
0:00:00.106376204 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:309:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps filter (NULL)
0:00:00.106480207 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:319:gst_imx_v4l2src_get_caps:<imxv4l2src0> get caps video/x-raw, format=(string)UYVY, width=(int)[ 16, 2147483647 ], height=(int)[ 16, 2147483647 ], framerate=(fraction)[ 0/1, 100/1 ], pixel-aspect-ratio=(fraction)[ 0/1, 100/1 ]
Setting pipeline to PAUSED ...
0:00:00.110399658 7303 0xe5b1a0 LOG imxv4l2src ../src/v4l2src/v4l2src.c:164:gst_imx_v4l2src_start:<imxv4l2src0> start
0:00:00.110578663 7303 0xe5b1a0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:125:gst_imx_v4l2src_capture_setup:<imxv4l2src0> capture mode 0: 1280x720
(gst-launch-1.0:7303): GStreamer-CRITICAL **: gst_debug_log_valist: assertion 'category != NULL' failed
0:00:02.154435252 7303 0xe5b1a0 DEBUG imxv4l2src ../src/v4l2src/v4l2src.c:180:gst_imx_v4l2src_start:<imxv4l2src0> width = 1280
0:00:02.154604591 7303 0xe5b1a0 DEBUG imxv4l2src ../src/v4l2src/v4l2src.c:181:gst_imx_v4l2src_start:<imxv4l2src0> height = 720
0:00:02.154718928 7303 0xe5b1a0 DEBUG imxv4l2src ../src/v4l2src/v4l2src.c:182:gst_imx_v4l2src_start:<imxv4l2src0> sizeimage = 1843200
0:00:02.154821597 7303 0xe5b1a0 DEBUG imxv4l2src ../src/v4l2src/v4l2src.c:183:gst_imx_v4l2src_start:<imxv4l2src0> pixelformat = 1498831189
Pipeline is live and does not need PREROLL ...
0:00:02.157292005 7303 0xe672f0 FIXME default /home/kryhorchuk/git/mn2/build/tmp/work/cortexa9hf-vfp-neon-sensity-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstutils.c:3643:gst_pad_create_stream_id_internal:<imxv4l2src0:src> Creating random stream-id, consider implementing a deterministic way of creating a stream-id
0:00:02.159603408 7303 0xe672f0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:299:gst_imx_v4l2src_negotiate:<imxv4l2src0> negotiated caps video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1
0:00:02.160265761 7303 0xe672f0 INFO imxv4l2src ../src/v4l2src/v4l2src.c:328:gst_imx_v4l2src_set_caps:<imxv4l2src0> set caps video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)720, framerate=(fraction)30/1, pixel-aspect-ratio=(fraction)1/1
Setting pipeline to PLAYING ...
New clock: GstSystemClock
0:00:02.166468948 7303 0xe672f0 WARN GST_PADS /home/kryhorchuk/git/mn2/build/tmp/work/cortexa9hf-vfp-neon-sensity-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/gst/gstpad.c:3739:gst_pad_peer_query:<imxv4l2src0:src> could not send sticky events
0:00:02.351330521 7303 0xe672f0 LOG imxv4l2src ../src/v4l2src/v4l2src.c:269:gst_imx_v4l2src_fill:<imxv4l2src0> fill
0:00:02.355904325 7303 0xe672f0 WARN basesrc /home/kryhorchuk/git/mn2/build/tmp/work/cortexa9hf-vfp-neon-sensity-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesrc.c:2933:gst_base_src_loop:<imxv4l2src0> error: Internal data flow error.
0:00:02.356141999 7303 0xe672f0 WARN basesrc /home/kryhorchuk/git/mn2/build/tmp/work/cortexa9hf-vfp-neon-sensity-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesrc.c:2933:gst_base_src_loop:<imxv4l2src0> error: streaming task paused, reason not-negotiated (-4)
ERROR: from element /GstPipeline:pipeline0/GstImxV4l2Src:imxv4l2src0: Internal data flow error.
Additional debug info:
/home/kryhorchuk/git/mn2/build/tmp/work/cortexa9hf-vfp-neon-sensity-linux-gnueabi/gstreamer1.0/1.4.5-r0/gstreamer-1.4.5/libs/gst/base/gstbasesrc.c(2933): gst_base_src_loop (): /GstPipeline:pipeline0/GstImxV4l2Src:imxv4l2src0:
streaming task paused, reason not-negotiated (-4)
EOS on shutdown enabled -- waiting for EOS after Error
Waiting for EOS...