error using dmbuf mode in my v4l2 driver
I'm writing a linux kernel module (v4l2) and I have implemented the mmap io-mode successfully. The main problem is that I can't go over 30fps at 1080p (I need 60fps at uhd), I think that the mmap io-mode it's not the best (efficient) way to transfer the buffers between my driver and gstreamer (maybe the limited fps is caused by the use of mmap). To improve I'm trying to implement the dmabuf mode, but I've some issues:
I've implemented the expbufs ioctl, in this function I create a dma_buf and a new fd for the dma_buf, but when I start the pipeline I get this error:
GET_DMA_PHY: Invalid argument Failed to import fd : 22 gst-launch-1.0: base/omx_component/omx_component_enc.cpp:375: virtual void EncComponent::TreatEmptyBufferCommand(Task*): Assertion `success' failed.
These are the fds created during the expbufs call
[ 272.329198] expbuf buf0 fd 21 [ 272.338884] expbuf buf1 fd 23 [ 272.344981] expbuf buf2 fd 25 [ 272.349528] expbuf buf3 fd 27 [ 272.354089] expbuf buf4 fd 29 [ 272.358636] expbuf buf5 fd 31 [ 272.363176] expbuf buf6 fd 33 [ 272.367933] expbuf buf7 fd 35 [ 272.372484] expbuf buf8 fd 37 [ 272.377032] expbuf buf9 fd 39 [ 272.381582] expbuf buf10 fd 41 [ 272.386215] expbuf buf11 fd 43 [ 272.390859] expbuf buf12 fd 45 [ 272.395504] expbuf buf13 fd 47 [ 272.400134] expbuf buf14 fd 49 [ 272.404770] expbuf buf15 fd 51
I don't know where it get the fd 22 and how to solve this error?