v4l2src (1.8.1) why requires downstream pool in userptr mode

Jake Zhang zjpseudo at gmail.com
Fri Aug 19 12:51:20 UTC 2016


Thanks Nicolas. My issue of using videomeidian bufferpool is due to libv4l2
which somehow is causing ioctl failed.
Disabling libv4l2 and using ioctl directly make the issue go away.

On Thu, Aug 18, 2016 at 11:00 AM, Nicolas Dufresne <nicolas at ndufresne.ca>
wrote:

>
> Le 2016-08-12 11:09, "Jake Zhang" <zjpseudo at gmail.com> a écrit :
> >
> > I am tring to use userptr mode of v4l2src on my ARM board with below
> pipeline but v4l2src is complaining no downstream pool is available. I am
> wondering why v4l2src is not using the v4l2bufferpool but expect a
> bufferpool from downstream.
>
> In usrptr mode, v4l2src will not allocate memory, hence strictly depend on
> downstream memory. While in mmap and dmabuf, v4l2src will allocate memory
> and push it downstream.
>
> >
> > ------------------------------------------
> > gst-launch-1.0 v4l2src num-buffers=1 io-mode=3 device=/dev/video0
> do-timestamp=true ! 'video/x-raw, width=1280, height=720, framerate=30/1,
> format=YUY2' ! videoconvert !  fakesink
> > ------------------------------------------
> > ======= more detailed error log ===============
> > 0:00:00.651854958  4427      0x2325370 INFO                    v4l2
> gstv4l2object.c:2776:gst_v4l2_object_setup_pool:<v4l2src0> accessing
> buffers via mode 3
> > 0:00:00.652293059  4427      0x2325370 INFO          v4l2bufferpool
> gstv4l2bufferpool.c:551:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool:src>
> increasing minimum buffers to 2
> > 0:00:00.652366954  4427      0x2325370 INFO          v4l2bufferpool
> gstv4l2bufferpool.c:564:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool:src>
> reducing maximum buffers to 32
> > 0:00:00.652373350  4427      0x2325370 INFO          v4l2bufferpool
> gstv4l2bufferpool.c:575:gst_v4l2_buffer_pool_set_config:<v4l2src0:pool:src>
> can't allocate, setting maximum to minimum
> > 0:00:00.653270760  4427      0x2325370 WARN                    v4l2
> gstv4l2object.c:3831:gst_v4l2_object_decide_allocation:<v4l2src0> decide
> allocation
> > 0:00:00.653294184  4427      0x2325370 WARN                    v4l2
> gstv4l2object.c:3857:gst_v4l2_object_decide_allocation:<v4l2src0>
> allocation: size:0 min:0 max:0 pool:(NULL)
> > 0:00:00.653357210  4427      0x2325370 WARN                    v4l2
> gstv4l2object.c:4087:gst_v4l2_object_decide_allocation:<v4l2src0> error:
> No downstream pool to import from.
> > 0:00:00.653365993  4427      0x2325370 WARN                    v4l2
> gstv4l2object.c:4087:gst_v4l2_object_decide_allocation:<v4l2src0> error:
> When importing DMABUF or USERPTR, we need a pool to import from
> > ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: No
> downstream pool to import from.
> > =============================================
> >
> >
> > To make v4l2src happy, I add a 'videomedian' element which has a
> bufferpool and now I can see v4l2src is using downstream buffer pool but it
> can not request the buffer. If I swtich to DMABUF mode and hack the v4l2src
> to force it use downstream pool, it will be no issue of requesting buffer.
> > I must have missed something about how to use userptr mode in v4l2src,
> could anyone provide some input here? Thanks
> > ------------------------------
> > gst-launch-1.0 v4l2src num-buffers=1 io-mode=3 device=/dev/video0
> do-timestamp=true ! 'video/x-raw, width=1280, height=720, framerate=30/1' !
> videoconvert !  videomedian ! fakesink
> > ------------------------
> > ======= more detailed error log by adding videomedian ===============
> > 0:00:00.677143473  5218       0xa88230 ERROR          v4l2allocator
> gstv4l2allocator.c:738:gst_v4l2_allocator_start:<v4l2src0:pool:src:allocator>
> error requesting 2 buffers: Invalid argument
> > 0:00:00.677153347  5218       0xa88230 ERROR         v4l2bufferpool
> gstv4l2bufferpool.c:848:gst_v4l2_buffer_pool_start:<v4l2src0:pool:src> we
> received 0 buffer from device '/dev/video0', we want at least 2
> > 0:00:00.677271601  5218       0xa88230 WARN                 v4l2src
> gstv4l2src.c:511:gst_v4l2src_decide_allocation:<v4l2src0> error: Failed
> to allocate required memory.
> > 0:00:00.677278901  5218       0xa88230 WARN                 v4l2src
> gstv4l2src.c:511:gst_v4l2src_decide_allocation:<v4l2src0> error: Buffer
> pool activation failed
> >
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > gstreamer-devel mailing list
> > gstreamer-devel at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
> >
>
> _______________________________________________
> gstreamer-devel mailing list
> gstreamer-devel at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20160819/80791155/attachment.html>


More information about the gstreamer-devel mailing list