Hi Russell, Em Fri, 10 Mar 2017 13:07:33 +0000 Russell King - ARM Linux <li...@armlinux.org.uk> escreveu:
> The idea that the v4l libraries should intercept the format negotiation > between the application and kernel is a particularly painful one - the > default gstreamer build detects the v4l libraries, and links against it. > That much is fine. > > However, the problem comes when you're trying to use bayer formats. The > v4l libraries "helpfully" (or rather unhelpfully) intercept the format > negotiation, and decide that they'll invoke v4lconvert to convert the > bayer to RGB for you, whether you want them to do that or not. > > v4lconvert may not be the most efficient way to convert, or even what > is desired (eg, you may want to receive the raw bayer image.) However, > since the v4l libraries/v4lconvert gives you no option but to have its > conversion forced into the pipeline, other options (such as using the > gstreamer neon accelerated de-bayer plugin) isn't an option That's not true. There is an special flag, used only by libv4l2 emulated formats, that indicates when a video format is handled via v4lconvert: * - ``V4L2_FMT_FLAG_EMULATED`` - 0x0002 - This format is not native to the device but emulated through software (usually libv4l2), where possible try to use a native format instead for better performance. Using this flag, if the application supports a video format directly supported by the hardware, it can use their own video format decoder. If not, it is still possible to use the V4L2 hardware, by using v4lconvert. Unfortunately, very few applications currently check it. I wrote a patch for zbar (a multi-format barcode reader) in the past, adding a logic there that gives a high priority to hardware formats, and a low priority to emulated ones: https://lists.fedoraproject.org/pipermail/scm-commits/2010-December/537428.html > without > rebuilding gstreamer _without_ linking against the v4l libraries. I guess it wouldn't be complex to add a logic similar to that at gstreamer. AFAIKT, there's another problem that would prevent to make libv4l the default on gstreamer: right now, libv4l doesn't support DMABUF. As gstreamer is being used on embedded hardware, I'd say that DMABUF support should be default there. Thanks, Mauro