gstramer\v4l2loopback userptr mode
Regine Issan
regine.issan at gmail.com
Tue Aug 22 22:20:20 UTC 2023
Hello Nicolas !
Thank you ,again , for your kind replay.
Would you be so kind to see my comments/questions below (with “=>comment2
“ prefix)
On Tue, Aug 22, 2023 at 21:03 Nicolas Dufresne <nicolas at ndufresne.ca> wrote:
> Le mardi 22 août 2023 à 12:14 +0300, Regine Issan via gstreamer-devel a
> écrit :
>
> Hello Everyone,
>
> I have an app that captures frames from a video device using v4l2.
> the app should support all i-o modes.
> I am mostly interested in userptr mode.
>
> when i run the code with physical camera it works (with userptr mode).
> when i run the same code with v4l2loopback camera and gstreamer,
> it fails. calling VIDIOC_REQBUFS with V4L2_MEMEORY_USERPTR returns not
> supported.
>
> in in link:
> https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/1028
> Nicolas Dufresne <https://gitlab.freedesktop.org/ndufresne> pointed me
> out that v4l2loopback does not support userptr.
> I find his anser very helpful and consider my next steps.
>
>
> several questions:
>
> 1. can i count that gstreamer works with user ptr ?
>
> the link below suggests it sohuld work, correct ?
>
> https://developer.ridgerun.com/wiki/index.php/GStreamer1.0_and_V4L2_UserPt
>
>
> <https://developer.ridgerun.com/wiki/index.php/GStreamer1.0_and_V4L2_UserPtr>
>
> 2.
>
> clearly, i am looking for simple stable solution.
>
> as much as I love code, clearly it is preferable to use existing
> tools
>
> to get fast and stable simulator.
>
> if you could please advise ,which of the following options would you
> recommend ?
>
> option1: use gstreamer\v4l2sink without v4l2loopback
>
> my question here: which tool can i use instead
> v4l2loopback ?
>
>
> For testing purpose, you can build vivid virtual driver, it sumulates a
> camera, and implements USRPTR.
>
=>comment2:begin
Thanks, that seems the simplest solution.
I will have a look at vivid.
=>comment2:end
> which tool did v4l2sink develpers used to check the
> usertpr mode ?
>
> Its has been added over 15 years ago, so I cannot say for sure. These days
> we prefer DMABuf importation instead, though its not yet automatically
> using it. Validation is difficult and mistakes will lead to error and
> garbled images.
>
=>comment2:begin
I read about DMABuf here
https://stackoverflow.com/questions/66962795/what-is-the-use-of-mmap-userptr-and-dmabuf-in-video-streaming-using-v4l2-drive
The consumer reading dmabufs must run
In kernel mode . Correct ?
Vslidation using userptr and dmabufs
Are equally complicated ?
=>comment2:end
> option2:any other gstreamer alternative for v4l2sink\v4l2loopback ?
>
> I'm not aware of equivalent of v4l2sink.
>
> option3: changing v4l2loopback to support userptr
> i am not video expert, in fact, quite new.
> I wonder whyv4l2loopback did not support userptr mode
> dou you think this is a hude task ?
> can you see Any specific challenge ? I
>
> PS: my userptr works with shared memeory
> it should be accessible in user and kernel mode
> (as the code worked with physical camera)
>
>
> v4l2loopback is an out of tree driver that does not use the videobuf2
> helpers, so adding something like userptr is for sure a bit of work and you
> have to understand how strides and plane offset calculation works.
>
=>comment2:begin
I though the only difference
Between mmap and userptr
should only be
on requestbufs and cleanup .
Mmmm…am I missing anything ?
strides and plane offset ?
=>comment2:end
option4: writing a tool that replace v4l2loopback and gstramer
> My single goal is to mimic A camera driver
> that reads images from disk and writes it to v4l2 using userptr.
>
> so maybe I should just write an app,
> that declares the device and writes to v4l2 directly , just like
> driver do ?
>
>
>
> Also seems like quite some coding, but if you go that way, have a look at
> libv4l2, you could make an LD_PRELOAD library that simulate a camera. Note
> that vivid have a "loop" control, which just like v4l2loopback allow
> passing data over. The only tricky bit is that the v4l2src needs to be
> configured to match the v4l2sink resolution and format, otherwise it will
> give you a test pattern.
>
=>comment2:begin
Thanks !
Perhaps I should dig into it if vivid won’t work.
=>comment2:end
> Nicolas
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20230823/8baa54d4/attachment-0001.htm>
More information about the gstreamer-devel
mailing list