I want to decode 16 video streams and display a image that they are tiled.
Multimedia API’s sample, Backend, is similar to the purpose, so I added some touches to the sample code to be able to input more video streams.
Then, I see following error messages when it runs with 9 video streams.
libv4l2: error attempting to open more then 16 video devices [ERROR] (NvV4l2Element.cpp:63) <dec8> Could not open device '/dev/nvhost-nvdec': Device or resource busy [ERROR] (NvV4l2ElementPlane.cpp:412) <dec8> Output Plane:Error in VIDIOC_REQBUFS at output plane: Bad file descriptor [ERROR] (NvV4l2ElementPlane.cpp:412) <dec8> Capture Plane:Error in VIDIOC_REQBUFS at output plane: Bad file descriptor Could not create decoder
In sample code, one NvVideoDecoder and one NvVideoConverter are used for each video streams. So a decoder for 9th video stream could not be created because it had been using 2 * 8 = 16 video devices already. I think this is reason for the error.
Is my understanding correct?
If it is correct, how can I achieve my purpose?
I tried GStreamer to decode 16 video streams, and it worked. But there are performance problems. So now I’m trying to use MMAPI.
And I also wonder why GStreamer(OpenMax) doesn’t have the restrictions that MMAPI(V4L2) has.