Re: is it possible to use single IOCTL to setup media pipeline?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Tomasz, Thank you for your answers.

learned a lot.

BR.
Ning.

在 2018-11-22四的 16:06 +0900,Tomasz Figa写道:
> Hi Ning,
> 
> On Thu, Nov 22, 2018 at 11:52 AM Zhang, Ning A <ning.a.zhang@xxxxxxxx
> m> wrote:
> > 
> > Hello everyone
> > 
> > when we need to setup media pipeline, eg, for camera capture,
> > media-ctl
> > needs to be called multiple time to setup media link and subdev
> > formats, or similar code in a single application. this will use
> > multiple IOCTLs on "/dev/mediaX" and "/dev/v4l2-subdevY".
> > 
> > to setup media pipeline in userspace requires to fully
> > understanding
> > the topology of the media stack. but the fact is only media driver
> > developer could know how to setup media pipeline. each time driver
> > updates, this would break userspace application if application
> > engineers don't know this change.
> 
> That's obviously a bug in the driver. Kernel interfaces must not
> change in a way that are not compatible with the userspace.

I met this issue :(

> 
> > In this case, if a IOCTL is designed
> > to setup media pipeline, no need to update applications, after
> > driver
> > is updated.
> > 
> > this will not only benefit for design a single IOCTL, this also
> > helps
> > to hide the detail of media pipeline, by load a binary blob which
> > holds
> > information about how to setup pipeline, or hide it in
> > bootloader/ACPI
> > tables/device tree, etc.
> 
> Media pipeline configuration is specific to the use case. If you
> hardcode it in the driver or bootloader, the user will not be able to
> use any other use case than the hardcoded blob, which is unacceptable
> for Linux drivers.
> 
> Instead, it sounds like your userspace should be designed in a way
> that the media topology configuration is loaded from a configuration
> file that you could either get from your kernel driver developer or
> just maintain yourself based on any changes the media developers do.
> Of course that's unrelated to the backwards compatibility issue,
> which
> should not happen normally. The configuration file would be helpful
> for handling future extensions and new hardware platforms.

yes, if there are multiple user cases, then this is not optional.

> 
> > 
> > another benefit is save time for setup media pipeline, if there is
> > a
> > PKI like "time for open camera". as my test, this will saves
> > hundreds
> > of milliseconds.
> 
> For this problem, the proper solution would be to create an ioctl
> that
> can aggregate setting multiple parts of the topology in one go. For
> example, V4L2 has VIDIOC_S_CTRL for setting a control, but there is
> also VIDIOC_S_EXT_CTRLS, which lets you set multiple controls in one
> call. Something like VIDIOC_S_EXT_CTRLS for configuring the media
> topology would solve the performance problem.

this may be alternative choice.

> 
> 
> Best regards,
> Tomasz




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux