imx6 / mainline linux / basic problems

Nicolas Dufresne nicolas.dufresne at collabora.com
Mon Feb 9 08:25:15 PST 2015



Le 02/08/2015 09:56 PM, Bing Song a écrit :
> Sorry, I have some basic question:
> 
> 1. v4l2video1dec is video decoder plugin based on V4L2 mem to mem API? And the backend is VPU decoder on imx6? VPU decoder is implemented in Kernel? There is VPU lib in user space, do you use VPU lib?

Upstream kernel now have Open Source drivers, brought to life by
Pengutronix. These driver require the same firmware was the proprietery
one, but don't require an extra software stack. GStreamer support for
this is quite early since there is only two upstream driver at the
moment. There is a lot more m2m driver in vendor kernels.

> 
> 2. What is the best implement of video decoder based on hardware? There are VA-API, CODA, V4L2 mem to mem, also have vpudec based on gstvideodecoder base.

VA-API is only implemented for Intel, AMD and NVIDIA HW. CODA is the
name of the Open Source driver that uses Freescale VPU. These can be
used using v4l2videoNdec elements. While vpudec is Freescale GStreamer
elements, forked in gstreamer-imx (on github) using proprietary vpu
libraries from freescale.

> 
> 3. vpudec can get best performance and can link with V4L2 output, also can link with videoconvert_ipu and glimangsink, all can get best performance. Should avoid video frame copy as video decoder will use hardware buffer which is non-cachable buffer. IPU and G2D can used to do CSC and resize.

No, vpudec can only do low copy with Freescale custom implementation of
V4L2. That fact is that their V4L2 driver are not interroperable with
anything else V4L2 out there as they don't follow the spec. Instead of
exporting DMABUF, they do nasty abuse of the API to let userspace
obtained a physical address offset that can be passed to other drivers
of the same provider only.

cheers,
Nicolas


More information about the gstreamer-devel mailing list