Re: gstramer\v4l2loopback userptr mode

Regine Issan via gstreamer-devel <[email protected]>
Newsgroups gmane.comp.video.gstreamer.devel
Message-ID <CAA3wf2vXMBRd6XYGhEaoXJX1FvqiWQSBNTMO1dz5_=7w_wshZQ@mail.gmail.com>
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 <[email protected]> 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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.