gstramer\v4l2loopback userptr mode
Regine Issan
regine.issan at gmail.com
Tue Aug 22 22:38:16 UTC 2023
Ps: regarding vivid
https://www.kernel.org/doc/html/v4.8/media/v4l-drivers/vivid.html#webcam-input
I see that the frame size is limited.
Why does the limitation exist ?
What is gstreamer limitation ?
What would you recommend if I need bigger sizes ?
On Wed, Aug 23, 2023 at 00:20 Regine Issan <regine.issan at gmail.com> wrote:
> 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/44d4c10f/attachment.htm>
More information about the gstreamer-devel
mailing list